HALLO,
dieses kleine Programm will auf dem atiny13 nicht laufen. Auf dem
ATMEGA16 läuft es, mit den entsprechenden Änderungen des TCCR0B und
TIMSK0.
Über AVRSTUDIO 5 flashe ich den tiny13. Habe die aktuelle WINAVR in
Betrieb.
Der FLASHVORGANG erfolgt fehlerlos, bloß die LED blinkt nicht.
Es ist nur die FUSE SPIEN angeklickt und SUT_CKSEL mit 9,6MHZ
ausgewählt.
Habe den Verdacht, dass der TIMER0 nicht anläuft. Fehlt etwas im
Programmcode?
Hat jemand einen TIP? Die Hardware ist o.k.
habe ich richtig gerechnet, die led flakert mit 18,3Hz ?
TIMSK0 und TCCR0B sind für den tiny13 schon richtig.
diese bits würde ich setzen.
-U lfuse:w:0x7a:m -U hfuse:w:0xff:m
siehe : http://www.engbedded.com/fusecalc/
Hubert G. schrieb:> 9,6MHz 1024 2 ist bei mir etwas mehr als 18,3Hz>
wie kommst du auf 1024 und 2
der Timer ist 8bit, der Prescaler ist 8
9,6Mhz / 256 / 8
das macht 4,7kHz
Da kann man natürlich auch nix flackern sehen
für die meisten AVRs kann man übrigends statt
PORTB ^= ( 1 << PB0 );
auch schreiben:
PINB = ( 1 << PB0 );
letzteres ist schneller.
Da der alte wert nicht erst eingelesen und verreichnet werden muss
@Vlad Tepesch
Da liegen wir beide falsch.
CS00 und CS02 sind Prescaler 1024
Ich habe die Ticks vergessen und die Led leuchtet nur bei jedem zweiten
Überlauf.
Hubert G. schrieb:> @Vlad Tepesch> Da liegen wir beide falsch.> CS00 und CS02 sind Prescaler 1024> Ich habe die Ticks vergessen und die Led leuchtet nur bei jedem zweiten> Überlauf.
Hast recht.
komme ich denn nur auf 8??? Ich hatte doch extra in die Tabelle
geschaut.
also stimmen die ~18Hz ist natürlich immer noch recht schnell, sollte
jedoch wahrnembar sein..
Ich tippe weiterhin auf den Programmer ;)
edit:
noch eine Frage, nur um sicher zu gehen:
Den Targettyp hast du im Studio umgestellt auf Tiny13?
hallo,
danke für eure Beiträge.
Habe mit dem Oskar an PB0 gemessen. Der Port bleibt auf 0V hängen. Keine
Aktivität. Das Programm ist doch o.k? Oder?
Meine konkrete Frage:
Ich muss doch mindestens ein "CS-Bit" setzen, damit der Timer überhaupt
läuft oder?
Mit TCCR0B |= (1<<CS00 | 1<<CS02) wird der Takt auf 1/1024 geteilt.
Wenn die CS-Bits auf "0" bleiben, dann läuft der Timer nicht. Oder ist
das beim ATINY13 anders, als bei den MEGAS?
Bei den Fuses habe ich laut Empfehlung CKDIV8 angeklickt. Bedeutet das
nochmals eine Teilung durch 8?
Also 9,6 MHZ geteilt durch 8 (CKDIV8) und dann noch die beiden CS-Bits
(1024). Das würde doch bedeuten, dass der Takt bei 1,2Khz liegt. Kann
das sein?
das steht alles im Datenblatt.
für CS2:0 :
0 -> timer aus
5 -> 1024
wenn div8 gesetzt ist (Werkseinstellung) wird der Takt duch 8 geteilt.
mit internen Takt läuft er also dann auf 1,2Mhz
toggle den Pin doch mal im Hauptrogramm mit einem ausreichend lagem
delay dazwischen um zu schauen, ob der Pin überhaupt noch funktioniert
Hallo,
habe es auch mit toggeln probiert. Ebenfalls hatte ich schon die ISR mit
(TIM0_OVF_vect) aufgerufen im TINY13 Device. Es kam auch keine
Warnmeldung, als ich aus dem ATMEGA16 Programm die Syntax der
ISR(TIMER0_OVF_vect) irrtümlich kopiert hatte.
Kurzum:
Ich ätze mir noch einmal eine neue Platine. Vielleicht ist irgendwo im
Layout irgendetwas nicht o.k. Steckt manchmal der Wurm drin.
Wenn es wieder nicht funktioniert, melde ich mich noch mal. Gehe aber
davon aus, dass es funktioniert, weil das obige Programm wohl o.k. ist,
mit Ausnahme der ISR Syntax
Danke an alle!!!