Hallo Zusammen, ich wiederhole den gesternrigen Post. Ich benutze ein ATmega32 /STK600. Ich möchte anhand der Timer2 (8bits timer) meine LEDs bei 1HZ umschlaten. Aber der nichts. Die LEDs bleiben standig an. Außerdem, habe ich auch nicht richtig verstanden, was der ich der Werte für die OCR2 für den vergleich mit den TCNT2 einstellen soll. Meine Rechnungen 8000000/1024= 7,8KHZ 7800/256= 30 Overflows/s. Wie komme ich auf 1Hz? wer kann mich da weiterhelfen? In dem ISR soll nur was da ist, in der Funktion stehen. Ich habe mir überlge mit ASSR und ORC2 was einzustellen , kapiere da nicht so viel. hier der code: #include <avr/io.h> #include <util/delay.h> #include <inttypes.h> #include <avr/interrupt.h> ISR(TIMER2_COMP_vect) { PORTB^=0xFF;//bitweise XOR } //bei 1hz void main (void) { DDRB = 0xFF; // Set D as output port // Clear Timer on compare match / Timer Clock = system clock / 1024 TCCR2 = (1<<WGM21)|(1<<CS22)|(1<<CS21)|(1<<CS20); //WGM21 control the counting sequence of the counter // (CL_2.0) TIFR = OCF2; // compare match occurs between Timer/counter2 und data in OCR2 // (CL_2.1) TIMSK = 1<<OCIE2; // Enable Timer 2 Output Compare Match Event Interrupt OCR2 = 0x03; // Set Output Compare Value to 10 (Compare with the Timer/Counter to generate Wave forms) sei(); while(1); } danke Axel
Also wenn du die LEDs nur bei 1Hz blinken lassen möchtest (was ich so verstanden habe) dann würde ich den TIMER2_OVF_vect bei der ISR hineinschreiben und das ganze mit dem compare match weglassen. Damit du auf die 1Hz kommst musst du im ISR einen Software-prescaler einfügen oder den µC dementsprechend langsamer takten, sonst gibt es da meiner Meinung nach keine andere Möglichkeit. fg
Schau die flashled.c von hier an: http://homepage.hispeed.ch/peterfleury/avr-software.html#examples Passe es an deine Verhältnisse an.
Axel schrieb: > ich wiederhole den gesternrigen Post. Axel, betimmt wäre es zielbringender, wenn du genauer erklärst, was du vorgestern Beitrag "Timer0 fuer anfänger" und gestern Beitrag "Timer2 bei 1Hz betrieben" am Prinzip nicht verstanden hast, bevor morgen die gleiche Frage noch mal kommt und alle Helfer verprellt sind.
Axel schrieb: > In dem ISR soll nur was da ist, in der Funktion stehen. warum? Das macht dein Leben schwerer, wie du siehst. > Ich habe mir überlge mit ASSR und ORC2 was einzustellen , kapiere da > nicht so viel. Wenn du Timer2 asynchron betreiben willst (ASSR), benutzt er nicht die vorhandene interne Taktquelle wie der Rest des µC sondern du musst eine weitere, externe Taktquelle nur für den Timer2 anschliessen. Die weitere externe Taktquelle kann (und wird bei obiger Beschränkung) ein Quarz mit geringerer Taktfrequenz sein als die Haupttaktquelle für den restlichen µC. So kannst du z.B. einen sog. Uhrenquarz (#) anschliessen, der im kHz Bereich statt im MHz Bereich arbeitet. Dann kann es mit dem passenden Vorteiler und Compare Match Wert gelingen, dass die ISR genau alle 0,5 s aufgerufen wird, so dass du ein 1 Hz Blinken bekommst. (#) Beitrag "Warum Uhrenquarz 32,768 kHz?"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.