Piny PD0 a PD1 vs. Bootloader: Rozdiel medzi revíziami
Zo stránky SensorWiki
Nová stránka: Ak chceme používať piny PD0 a PD1 a zároveň zabudovaný bootloader, treba si počínať nanajvýš obozretne. Bootloader používa tieto dva piny na nahrávanie programu cez s... |
dBez shrnutí editace |
||
(2 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.) | |||
Riadok 8: | Riadok 8: | ||
Pravdepodobne od časovača (overiť). Preto je najlepšie hneď na začiatku zakázať všetky prerušenia. | Pravdepodobne od časovača (overiť). Preto je najlepšie hneď na začiatku zakázať všetky prerušenia. | ||
< | <source lang="c"> | ||
// Following two lines are a must for BOOTLOADER | // Following two lines are a must for BOOTLOADER | ||
UCSR0B = 0x00; // Disable RxD and TxD for UART0 | UCSR0B = 0x00; // Disable RxD and TxD for UART0 | ||
// Disable ALL interrupts (Global) | |||
SREG = SREG & 0x7F; // same as cli(); but not requiring Interrupts.h | SREG = SREG & 0x7F; // same as cli(); but not requiring Interrupts.h | ||
</ | </source> | ||
[[Category:AVR]][[Category:MMP]][[Category:DVPS]] |
Aktuálna revízia z 08:13, 26. október 2012
Ak chceme používať piny PD0 a PD1 a zároveň zabudovaný bootloader, treba si počínať nanajvýš obozretne. Bootloader používa tieto dva piny na nahrávanie programu cez sériové rozhranie USART0 (RxD a TxD). Po skončení nahrávania programu ostane UART0 nakonfigurovaný a preto nie je možné použiť tieto dva piny ako univerzálne digitálne I/0 piny. Riešením je zakázať vysielač aj prijímač, t.j. vynulovať bity RxEN a TxEN v registri UCSR0B.
Ďalším problémom je povolené prerušenie, ktoré používa bootloader pri komunikácii cez sériové rozhranie. Pravdepodobne od časovača (overiť). Preto je najlepšie hneď na začiatku zakázať všetky prerušenia.
// Following two lines are a must for BOOTLOADER
UCSR0B = 0x00; // Disable RxD and TxD for UART0
// Disable ALL interrupts (Global)
SREG = SREG & 0x7F; // same as cli(); but not requiring Interrupts.h