PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tiny13 128kHz - wie Timer 1sek berechnen?



dl1akp
20.10.2008, 09:27
Hallo Leute,

habe eine Anwendung mit Tiny13 und dem int. 128kHz Oscillator.

Nun will ich mit dem Timer0 einen Zähler für 10sek oder 1sek bauen.
Nur leider keine Ahnung, wie ich die Zeit berechnen kann, welche werte in den Timer evtl. geladen werden müssen, Prescaler etc.

Mit rnAVR geht das nicht, da kann man 128kHz nicht eingeben....

Kann mir jemand da vielleicht helfen?
Vielen Dank im Voraus.

dl1akp, MfG

fhs
20.10.2008, 10:03
Hi,

Vorteiler: 1024
CompareA: 124
CTC-Mode: EIN
CompareA-Interrupt: EIN

Ergebnis: Interrupt alle 1000ms.
Wie hab ich's gemacht?: ATtiny13 Datenblatt (http://www.atmel.com/dyn/resources/prod_documents/doc2535.pdf) (!) S. 63/64; für 0,5Hz berechnet.
Wichtiges Material: http://www.mikrocontroller.net/articles/AVR_-_Die_genaue_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):

#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);
}