mikrocontroller.net

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


Autor: Torsten O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torsten O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jojo (Gast)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Torsten O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.