Operácie

Piny PD0 a PD1 vs. Bootloader: Rozdiel medzi revíziami

Zo stránky SensorWiki

Balogh (diskusia | príspevky)
Bez shrnutí editace
Balogh (diskusia | príspevky)
dBez shrnutí editace
 
(Jedna medziľahlá úprava od rovnakého používateľa nie je 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.  


<Code lang="c">
<source lang="c">


                         // Following two lines are a must for BOOTLOADER
                         // Following two lines are a must for BOOTLOADER
Riadok 15: Riadok 15:
   SREG = SREG & 0x7F;  // same as cli(); but not requiring Interrupts.h  
   SREG = SREG & 0x7F;  // same as cli(); but not requiring Interrupts.h  
    
    
</Code>
</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