kopia lustrzana https://github.com/bristol-seds/pico-tracker
2.5 KiB
2.5 KiB
SAM D20 Peripherals usage
Type | Peripheral | Function | Notes |
---|---|---|---|
GLCK | |||
gclk0 | main clock, internal osc8m | 4 MHz | |
gclk1 | tcxo clock, fed from xosc OR osc8m | ||
gclk7 | aprs clock, fed from gclk1, div 6 / 11 | ||
TC | |||
tc0 | telemetry tick timer. 32-bit. glck1 | ||
tc1 | ^^^^^ | ||
tc2 | counts cycles of tcxo. 32-bit. gclk1 | ||
tc3 | ^^^^^ | ||
tc4 | unused (osc8m event source) | ||
tc5 | telemetry pwm 16-bit glck0, ALSO aprs carrier 16-bit gclk7 | ||
EXTINT | |||
extint[5] | gps timepulse | ||
event channels | |||
0 | event source for timer 2 xosc measurement | ||
1 | tc4 retrigger | ||
SERCOM | |||
sercom0 | spi flash | ||
sercom1 | ublox gps | ||
sercom2 | |||
sercom3 | radio | currently bitbanged as required pin layout broken in sercom |
SAM D20 Interrupts usage
Name | Function | Priority H(0-3)L | Notes |
---|---|---|---|
TC0_IRQn | telemetry tick timer | 1 | latency critical for symbol timing. rate <= 1200Hz |
[GPS_SERCOM]_IRQn | gps usart rx | 2 | latency not so critical. rate <= 960Hz |
EIC_IRQn | timepulse | 3 | latency not so critical. rate = 1 |
TC2_IRQn | xosc measurement done | 3 | latency not critical |
ADC_IRQn | adc measurement done | 3 | latency not critical |
Clock Layout
At startup
[osc8m] --> [glck0] -> [core]
Once configured
|\
[osculp32k] --> 0| |
| | ------+ (22-42kHz)
lftimer -> [glck_io0] --> 1| | |
|/ |
| |
*USE_LFTIMER* | |\
+--> 0| |
| | --> [gclk0] +--> [core]
+--> 1| | |--> [tc4, wakeup, measure gclk0]
| |/
| |
|\ | awake?
[osc8m]--> 0| | |
| | ------+ (8MHz/16.369MHz)
tcxo --> [xosc] --> 1| |
|/
|
*USE_XOSC*
|\
|\ 0| |
[osc8m]--> 0| | | | ---> [glck1] +--> [tc0, telemetry tick]
| | ---> 1| | |--> [tc2, count tcxo]
tcxo --> [xosc] --> 1| | |/ |--> [glck7] --> [tc5, aprs carrier] --> si_gpio1
|/ | |--> [adc]
| awake? |--> [extint]
*USE_XOSC* |--> [sercoms]