Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zu AVR's und Assembler


von Torsten O. (Gast)


Lesenswert?

Hallo, ich versuche mich gerade an einem Counter0 eines ATtiny88. Damit 
der Timer aktiv wird, soll ich laut Datenblatt in das Register PRTIM0 an 
die fünfte Stelle eine "0" reinschreiben.
Wie genau funktioniert das? Mit dem Befehl "in" geht es nicht, weil der 
Operand auf den Wert "63hex" begrenzt ist?

Vielen Dank im voraus



lg Torsten

von yalu (Gast)


Lesenswert?

Du möchtest wahrscheinlich im PRR-Register das Bit PRTIM0 setzen.
Register, die außerhalb des von IN und OUT adressierbaren Bereichs
liegen, werden mit LD bzw. LDS und ST bzw. STS angesprochen.

von Torsten O. (Gast)


Lesenswert?

Danke, mein Zähler läuft aber immer noch nicht los. Muss ich da noch 
weitere Einstellungen vornehmen?

Hier ist mal der Quelltext in Assembler :

[avrams]
; Initialisierung des AVR

ldi    R16, $02      ; StackPointer auf Addresse $02ff setzen
out    $3e, R16
ldi    R16, $ff
out    $3d, R16

; Initialisierung des Counters

ldi     R16, $05            ; Countermode :  Normal
out     $25, R16            ; Prescaler   :  SystemClock div 1024
ldi     R16, $0
sts     $64, R16

loop:

jmp     loop
[/avrasm]

Kann jemand noch Literatur über die AVRASM-Programmierung empfehlen?


Vielen Dank im voraus



lg Torsten

von Jojo (Gast)


Lesenswert?

Wieso benutzt du nicht die Registerbezeichnungen??
So blickt da ja nacher kein Mensch mehr durch...

von Johannes M. (johnny-m)


Lesenswert?

Torsten Ohne wrote:
> Kann jemand noch Literatur über die AVRASM-Programmierung empfehlen?
AVR-Tutorial

Außerdem gibt es am Ende eines jeden Datenblattes eine Liste der 
Befehle, die für jeden einzelnen AVR-Typ verfügbar sind. Und jmp gibt 
es beim ATTiny88 nicht. Den Befehl gibt es nur bei AVRs mit mehr als 8 
KiB Flash.

von Torsten O. (Gast)


Lesenswert?

Danke für die Tipps, habe meinen Fehler gefunden. Ich trau' mich gar 
nicht zu sagen wo er lag ...

Wenn man den Prescaler auf 1024 stellt muss man halt ein paar Takte 
durchlaufen lassen bis sich am Zähler was tut *Auf'nHinterKopfHaue*

Nochmals Danke für die Tipps und die den Hinweis auf das Tutorial.


lg Torsten

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
Noch kein Account? Hier anmelden.