Hi,
Vorteiler: 1024
CompareA: 124
CTC-Mode: EIN
CompareA-Interrupt: EIN
Ergebnis: Interrupt alle 1000ms.
Wie hab ich's gemacht?: ATtiny13 Datenblatt (!) S. 63/64; für 0,5Hz berechnet.
Wichtiges Material: http://www.mikrocontroller.net/artic..._Sekunde_/_RTC
Mit dem internen RC-Oszillator wirst Du für eine genaue Sekundenzählung nicht glücklich werden, da der sehr spannungs- und temperaturabhängig ist -- für eine "grobe" Zählung reicht der Oszillator natürlich.
73
Fred dk4bc
Von Bascom versteh' ich nichts, hier aber ein Testprogramm in C (zum Testen Breakpoint in die ISR [im Disassembler-View!] setzen):
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
ISR (TIM0_COMPA_vect) {
// interrupt code (SHORT/FAST!)
}
int main(void) {
TIMSK0=1<<OCIE0A; // Compare A interrupt
TCCR0A=1<<WGM01; // CTC mode
OCR0A=124; //
TCCR0B=(1<<CS00)|(1<<CS02); // prescaler: 1024
sei();
while(1);
}
Lesezeichen