<commit_before>====================
THS1206 ADC Firmware
====================
The THS1206 is controlled by both PRU0 and PRU1. The PRUs run largely
individually, and don't require synchronization beyond static timing.

Running
-------
Both pru0/ and pru1/ contain a simple deploy.sh script, which takes care of
compilation and installation of the firmware, as well as starting the core.

The PRU_CGT environmental variable needs to point to the TI CGT-PRU compiler
directory.

PRU0
----
* Triggers ultrasonic pulses
* Controls THS1206 clock

PRU1
----
* Configures THS1206
* Receives data available signal from THS1206
* Reads data from THS1206
* Transfers data to ARM using RPMsg

Interactions
------------
There are two axes to measure, and each measurement will involve a constant
number of ADC reads. This allows the PRUs to work together without using
explicit synchronization between them.

PRU0 triggers the pulse, and then begins the clock. As data fills the queue on
the THS1206, it signals PRU1 to begin reading. After all readings are collected,
PRU0 needs to stop the clock, and PRU1 needs to reconfigure the THS1206 to
select the other axis to read, and clear the pipeline. After that is done, PRU0
is free to trigger the pulse in the new axis and again begin the clock. As a
static number of readings will be collected, all of this can be done without
runtime communication.<commit_msg>Updated THS1206 firmware README<commit_after>====================
THS1206 ADC Firmware
====================
The THS1206 is controlled by both PRU0 and PRU1. The PRUs run largely
individually, and don't require synchronization beyond static timing.

Running
-------
Both pru0/ and pru1/ contain a simple deploy.sh script, which takes care of
compilation and installation of the firmware, as well as starting the core.

The PRU_CGT environmental variable needs to point to the TI CGT-PRU compiler
directory.

PRU0
----
* Waits for PRU1 ready
* Triggers ultrasonic pulses
* Controls THS1206 clock

PRU1
----
* Configures THS1206 and resets FIFO
* Signals PRU0 ready
* Receives data available signal from THS1206
* Reads data from THS1206
* Transfers data to ARM using RPMsg

Interactions
------------
There are two axes to measure, and each measurement will involve a constant
number of ADC reads. This allows the PRUs to work together with a minimum of
synchronization.

PRU0 triggers the pulse when PRU1 is ready, and then begins the clock. As data
fills the queue on the THS1206, it signals PRU1 to read. After all
readings are collected, PRU0 stops the clock and PRU1 transfers the readings to
the ARM core. PRU1 then reconfigures the THS1206 to select the other axis to
read and clears the FIFO before signaling PRU0. After that is done, PRU0 is free
to trigger the pulse in the other axis and again begin the clock. The static
number of reads required allows the PRUs to collectively work with the ADC
with a single one-way synchronization.
{'fraction_non_alphanumeric': 0.07033639143730887, 'fraction_numerical': 0.032279986408426775, 'mean_word_length': 4.183098591549296, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '645274', 'n_tokens_mistral': 868, 'n_tokens_neox': 787, 'n_words': 446}