Hallo, bin kurz vorm verzweifeln... Brauche in meinem Programm 2 Timer, Timer0 bekomme ich auch schoen initialisiert und er laeuft normal, aber bei Timer1 klemmts irgendwie. Bekomme ihn zwar auch initialisiert, aber er zaehlt das TCNT1 nicht hoch und somit bekomme ich natuerlich auch nie meinen ersehnten Ueberlauf... Hab die Vermutung irgendein Bit in einem Register setzen zu muessen, aber trotz mehrmaliger Datenblattsitzung hab ich den Haken nicht gefunden. Hoffe mir kann hier jemand auf die Spruenge helfen. Initialiesere die Timer wie folgt... ... TCCR1 = 1; // no prescaler TCNT1=0x00; // reset TCNT1 TCNT0 = 0; // TCNT0 Timer auf 64*256 einstellen TCCR0A = 0; // Timer 0 normal mode TCCR0B = 3; // clock/64 TIMSK |= (1<<TOIE1); TIMSK |= (1<<TOIE0); .... Danke vorab PS nutze AVR Studio, Win AVR, und will nen ATTiny85 zum zaehlen bringen
Im Simulator funktioniert es nicht. Der Prescaler wird eingestellt, ich kann auch den TCNT1 Wert manuell aendern, aber er wird nicht hochgezaehlt... Koennte es denn sein, das der Simulator nur spinnt und ich garnix uebersehen habe? Werde es mal versuchen per Hardware zu testen indem ich im der ISR ein LED setze... Meld mich dann nochmal
Hallo dann nochmal, also habe in der ISR des Timer1_Overflow jetzt mal versucht ein LED einzuschalten, aber der PIN gibt nichts von sich. Sieht also wirklich nach nem programmierfehler aus, bzw. einem uebersehenem Bit? hatte denn schonmal jemand dieses Problem bzw. den Timer1 des ATTiny85 genutzt und sieht meinen Fehler? Danke fuer jeden Tip vorab!
Also, ich komm nicht dahinter. Werd jetzt einfach mal abschalten und morgen mit frischem Kopf dran gehen. Vielleicht hilft das!? Vielleicht hat ja jemand noch den passenden Hinweis, der mich morgen dann gluecklich macht;) Schoenen abend allen...
Hi Benutze mal den Simulator2. Der andere scheint Probleme mit dem ATTiny85 zu haben. MfG Spess
Ohne die Fuses verstellt zu haben bringt nachfolgendes Programm an PB4 ein Rechtecksignal mit ca. 1950 Hz: .def tmp0 = r16 .cseg .org 0 rjmp reset .org OVF1addr sbi PINB,4 ; toggle reti reset: sbi DDRB,4 ldi tmp0,(1<<CS10) out TCCR1,tmp0 ldi tmp0,(1<<TOIE1) out TIMSK,tmp0 sei rjmp pc
Hallo, also habe heute dann festgestellt, dass nur der Simulator nicht will, aber in der Hardware funktioniert der Timer normal. Hab beim testen gestern Quatsch gemacht, passiert schonmal. Also fuer jeden mit aehnlichem Problem, der Simulator des AVR STudio mag den ATTiny85 nicht so gerne... @Spess Werde dem Tip mal nachgehen. Hab gerade auf der atmel-site darueber gelesen und muss sagen ich haette nicht gedacht, das die Simulatoren so viele Stolperdraehte bereithalten(auch der Simulator2). Danke auf jeden Fall, dachte gestern schon ich sei total bekloppt.
Ich hab den Fehler gefunden. Der Simulator löscht jedes mal nach einen Interruptsprung von Timer 1 das Globale Interrupt Flag. einfach in den Interrup-Sub "sei" reinschreiben. TIM1_OVF: ;Timeroverflow 1 sei ; Globales Interrupt freigeben push r16 ;Sreg sichern.... IN r16,SREG push r16 ... ... ... pop r16 OUT SREG,r16 pop r16 reti
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.