Programowanie mikroprocesorów ( mikrokontrolerów )

Uruchomienie timera

Poniższy program przedstawia sposób uruchomienia timera0 mikrokontrolera mikroprocesora Atmega8. Jest to podstawowy timer / counter z obsługą przerwania od przepełnienia się timera / countera. Poniższy program nie był przetestowany na "żywym"  układzie gdyz w tej chwli jestem w posiadaniu jedynie Atmega328p z timerami wyposażonymi w funkcje PWM których sposób uruchomienia przedstawia drugi program   w pełni przetestowany na "żywo" w mikrokontrolerze mikroprocesorze.

Program obsługi timera mikrokontrolera miroprocesora
  1. //program timera0 podtawowy
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. #include <avr/interrupt.h>
  5.  
  6. #define F_CPU 8000000UL
  7. #define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
  8. #define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit)))
  9.  
  10. ISR(TIMER0_OVF_vect)
  11. {
  12. PORTD = PORTD ^ 1;
  13. }
  14.  
  15. int main(void)
  16. {
  17.  
  18. DDRD=0xff;                 // ustalenie kierunku portu (wyjście)
  19. PORTD=0xff;                // wystawienie wartości FFh na port
  20.  
  21. // konfiguracja timera0 8-bitowego
  22. TIMSK=0x01;
  23. TCCR0=0x05;
  24.  
  25. sei();
  26.  
  27. while(1)
  28.     {
  29.     }
  30. }
  31.  

CDN

Program obsługi timera mikrokontrolera miroprocesora
  1. //program timera0 z przerwaniem overflow (przepełnienie)
  2.  
  3. #include <avr/io.h>
  4. #include <util/delay.h>
  5. #include <avr/interrupt.h>
  6.  
  7. #define F_CPU 8000000UL
  8. #define cbi(sfr,bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
  9. #define sbi(sfr,bit) (_SFR_BYTE(sfr) |= _BV(bit)))
  10.  
  11. ISR(TIMER0_OVF_vect)
  12. {
  13. PORTD = PORTD ^ 1;
  14. }
  15.  
  16. int main(void)
  17. {
  18.  
  19. DDRD=0xff;            // ustalenie kierunku portu (wyjście)
  20. PORTD=0xff;           // wystawienie wartości FFh na port czyli 10101010b
  21.  
  22. // konfiguracja timera0 8-bitowego
  23. TIMSK0=0x01;
  24. TCCR0A=0x00;
  25. TCCR0B=0x05;
  26.  
  27. sei();                 //odblokowanie przerwania głównego
  28.  
  29. while(1)
  30.     {
  31.     }
  32. }
  33.  

CDN





 
Wszelkie prawa zastrzeżone! Kopiowanie, powielanie i wykorzystywanie zdjęć, treści oraz jej fragmentów bez zgody autora zabronione.
© mikroprocesory.info.pl@gmail.com 2013.