Hallo zusammen,
ich übe mit mit meinem Entwicklungsboard noch immer fleißig Assembler
programmieren.
ATMega168-20PU (20MHz)
Schaltung des Boards(Rumpus):
http://www.lochraster.org/rumpus/data/rumpus-v2-schematic.pdf
Im Moment kümmere ich mich um den Summer, was auch gut funktioniert, ich
kann mit meinem Programm sogar die Frequenz einstellen. Leider ist das
Ding viel zu leise.
Mein Programm:
> ldi r19, 0b00000001 ; PortB Pin1 Ausgang
Nö.
Das ist Pin 0, den du auf Ausgang setzt
Schreib das doch so
ldi r18, (1<<PB1)
dann passiert dir so ein Scheiss nicht, dass du dich verzählst. In der
ANweisung steht klipp und klar, dass du PB1 meinst. Das in eine
Binärzahl zu verwandeln kann der Assembler genausogut. Nur: Der macht
dabei keine Fehler.
Ich weiß nichts davon, dass ich zwingend tccr1a initialisieren muss. Die
Frequenz ändert sich jedenfalls hörbar in Abhängigkeit vom
Compareregister ocr1a.
Gehe mal davon aus, dass dann der "Normal Mode" in Ordnung ist...
Christian S. schrieb:> Ich weiß nichts davon, dass ich zwingend tccr1a initialisieren muss.
Ist aber schlechter Stil wenn man es nicht setzt. Auch wenn WGM01 u.
WGM00 auf 0 gesetzt werden.
So zum Beispiel:
ldi r18, (0<<wgm10|0<<wgm11) ; Timer konfigurieren
sts tccr1a, r18
Kommt zwar jetzt in diesem Fall 0 raus , solltest du den Mode aber
einmal aendern brauchst du blos eine '1' einzusetzen. Auch wissen andere
dann direkt wie das Register eingestellt ist.
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.