A
ady689
Guest
Hi, im utilizzando un atmega1280 con un 28.224Mhz cristallo.
I'm Tring inizializzare timer / counter da 1 a ghét
un'interrupt a 1ms.
Visualizzare il contatore su un display LCD e che è visibile il contatore
doesnt incrent a 1 ms, ed è il più basso tasso di incremento forse 100ms.I dont sapere qual è il problema, mi potete aiutare?
Thx
Ciò è fondamentalmente fare è mettere il timer 1 in CTC (Clear-on-Terminal-Conte) modalità, rendendo l'orologio divisore 64, e dire che per interrompere quando conta fino a 441.L'orologio è 28224000Hz MCU.Divide che da 441 (count 0-440) e ottenere i 1000Hz, o il cui lavoro 1ms interrupt.but .....void TIMER1_Init (uint16_t y)(cli ();TCNT1H = 0x00;TCNT1L = 0x00;uint16_t hiByte, lowByte;hiByte = y>> 8;lowByte = (uint32_t) y ;//// y = 441;
PRR0 | = (0 <<PRTIM1);TCCR1A | = (0 <<WGM10 | 0 <<WGM11 | 0 <<COM1A1 | 0 <<COM1A0);TCCR1B | = (1 <<CS10 | 1 <<CS11 | 0 <<CS12 | 1 <<WGM12 | 0 <<WGM13); / / prescaler 64OCR1AL = lowByte;OCR1AH = hiByte;TIMSK1 | = (1 <<OCIE1A);TCCR1C | = (1 <<FOC1A);TIFR1 | = (1 <<OCF1A);sei ()
PVR (TIMER1_COMPA_vect)(t.timer ;itoa (t.timer, ms, 10);LCD_String (ms, FONT8x16, 120.150, rosso, blu)
I verifica la velocità di clock, l'AVR è impostato sulla esterne cristallo, i tre con la mia pensione 16mhz, 4 mhz 28mhz cristallino e con l'28mhz ho una grande frequenza di aggiornamento sul mio lcd
I'm Tring inizializzare timer / counter da 1 a ghét
un'interrupt a 1ms.
Visualizzare il contatore su un display LCD e che è visibile il contatore
doesnt incrent a 1 ms, ed è il più basso tasso di incremento forse 100ms.I dont sapere qual è il problema, mi potete aiutare?
Ciò è fondamentalmente fare è mettere il timer 1 in CTC (Clear-on-Terminal-Conte) modalità, rendendo l'orologio divisore 64, e dire che per interrompere quando conta fino a 441.L'orologio è 28224000Hz MCU.Divide che da 441 (count 0-440) e ottenere i 1000Hz, o il cui lavoro 1ms interrupt.but .....void TIMER1_Init (uint16_t y)(cli ();TCNT1H = 0x00;TCNT1L = 0x00;uint16_t hiByte, lowByte;hiByte = y>> 8;lowByte = (uint32_t) y ;//// y = 441;
PRR0 | = (0 <<PRTIM1);TCCR1A | = (0 <<WGM10 | 0 <<WGM11 | 0 <<COM1A1 | 0 <<COM1A0);TCCR1B | = (1 <<CS10 | 1 <<CS11 | 0 <<CS12 | 1 <<WGM12 | 0 <<WGM13); / / prescaler 64OCR1AL = lowByte;OCR1AH = hiByte;TIMSK1 | = (1 <<OCIE1A);TCCR1C | = (1 <<FOC1A);TIFR1 | = (1 <<OCF1A);sei ()
PVR (TIMER1_COMPA_vect)(t.timer ;itoa (t.timer, ms, 10);LCD_String (ms, FONT8x16, 120.150, rosso, blu)