Hallo, ich verzweifele hier gerade an der compare Funktion des Timer0 eines tiny24. Im Datenblatt steht für OCR0A=0 sei die Frequenz am Ausgangspin OC0A =fclock/2. Mit dem internen 8mhz oszilator (ohne Vorteiler) messe ich aber nur 500khz am Pin OC0A und nicht wie erwartet 4MHZ. Folgende Bits des Timers habe ich gesetzt: Register TCCR0A: Bit 1 WGM01 CTC aktivieren Bit 6 COM0A0 Ausgang OC0A toggelnd Register TCCR0B: Bit 0 CS00 Interner Systemtakt(8mhz) ohne Vorteiler Register OCR0A habe ich null und alle Richtungsbits in ddrb auf high gesetzt. Habt Ihr eine Idee was mein Fehler sein könnte?
Welchen Reload-Wert hast du den in OCR0A?Und wie genau sind die Fuses für den Haupttakt den gesetzt?
Mein Relaod Wert ist 0 im Datenblatt des Tiny24 steht auf Seite 77: The waveform generated will have a maximum frequency of fclk_I/O /2 when OCR0A is set to zero (0x00) Fuses hmm habe im AVR Studio einfach internen 8MHZ Oszi ausgewählt. In Klammern steht da CKSEL=0010 und SUT=10
Hallo, ich kann ja verstehen, das sich bei dem Durcheinander was ich da gestern Abend verzapft habe niemand die Mühe macht mir einen Tip zugeben. Deshalb habe ich mal den Assemblercode der Timerinitialsierung angehängt. Wie gesagt, mein Problem ist am Ausgang messe ich 500khz und nicht 4MHz. (interner 8mhz oszi) Vielleicht hat jetzt jemand von euch eine Idee? Gruss Ralf
Hallo Ralf Da ich gerade mit einem Tiny44 am experimentieren bin, habe ich es schnell ausprobiert, und es kommen tatsächlich nur 500 kHz. Es scheint so, dass der Tiny mit 1 MHz läuft statt 8MHz und das liegt daran dass das CkDIV8 Bit der L-FUSE entgegen dem Datenblatt halt doch programmiert ist. Den Clk-Prescaler kann man aber auch ohne umprogrammieren der Fuse ändern, und mit folgendem Code kamen dann doch 4 MHz aus dem OC0A-Pin: ldi r16,0b01000010 ;CTC A, Bit toggle out TCCR0A,r16 ldi r16,0b00000001 ;Timer Prescaler=1 out TCCR0B,r16 ldi r16,0 ;OCR0A=0 out OCR0A,r16 sbi DDRB,2 ;OC0A=Output ldi r16,$80 out CLKPR,r16 ldi r16,0 ;CLK= 8MHz out CLKPR,r16 Gruss Andi
Nachtrag: Nach dem ich jetzt das neuste Datenblatt geladen habe, ist da auch richtig angegeben, dass das CKDIV8 Bit programmiert ist.
Hallo Andi, verdammt...dieses Teiler Fuse Bit hatte ich völlig übersehen...ich danke Dir...damit ergibt das alles einen Sinn. Ich Danke Dir Gruss Ralf
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.