ITG-ABI 17/18 |
16.04.2018 |
Korrekturhinweise / Lösungsvorschlag |
---|
Verwendeter µC: ATMEL AVR 8 Bit RISC.
Die AVR-Controller verfügen über einen Vorteiler, daher ist ein Zähler in der ISR oft nicht notwendig.
Zählwert: 150000
Vorteiler: 150000/65536 = 2,23 gewählt 8
OCR1A: (150000/8)-1= 18749
Probe: (18749+1)*8*1us=150ms
void init(){ TCCR1B |= 1<<WGM12; // CTC-Mode TCCR1B |= 2; // Phi/8 TIMSK |= 1<<OCIE1A; Interrupt einschalten OCR1A = 18749; // Vergleichswert //sei(); // Globale ISR-Freigabe }
Zählwert: 150000
Vorteiler: 150000/256 = 585,9 gewählt 1024
Vorsteller: 256-(150000/1024)= 109,51 gewählt 110
Probe: (256-110)*1024*1us= 149,5ms
void init() TCCR0B |= 5; // Phi/1024 TIMSK |= 1<<TOIE0; Interrupt einschalten TCNT0 = 110; // Vorstellen //sei(); // Globale ISR-Freigabe }
void muster_ausgeben(){ static unsigned char muster[]={0x00,0xff,0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01}; PORTC = muster[blink_zaehler--]; }
void warte150ms(){ TCNT1 = 0; // 16Bit-Zähler läuft mit /8 Systemtakt while(TCNT1<18750); }