Forum: Mikrocontroller und Digitale Elektronik Lernhilfe Simulation Zähler mit AVRStudio


von Kurt Flury (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Als Anfänger in der Programmierung von Mikrocontrollern habe ich
versucht im AVR-Studio Version 4.11 einen interrupt gesteuerten
Timer/Zähler zu simulieren. Okay, vielleicht mit einem für Beginner
nicht gerade idealen device (Atmega48). Trotzdem folgende Frage:

Damit der Overflow Interrupt für Timer0 ausgelöst wird muss ich unter
anderem das im TIMSK0 Register existierende Timer Interrupt Overflow
Flag (TOIE0) setzen.

Dies erfolgt bei mir mit den folgenden Anweisungen:

 ldi r16, 0b00000001  ;
 out TIMSK0 ,r16      ; Timer Interrupt Maske setzen

Beim Comilieren gibt mir aber das AVR-Studio folgende Meldung aus:

error: Operand 1 out of range: 0x6e

wobei 0x6e die Adresse des TIMSK0 Registers ist.

Ich verstehe aber nicht wieso? Kann mir jemand einen Tipp geben? Was
mache ich falsch?

von Christof Rieger (Gast)


Lesenswert?

Auszug aus der Include Datai:
; ***** I/O REGISTER DEFINITIONS
*****************************************
; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions

TIMSK0 beinhaltet die Speicherposition und nicht die I/O-Port Adresse
Schau einfach im Datenblatt nach was die I/0-Port Adresse ist und
verwende diese, oder rechne den Versatz aus, und ziehe den Wert von
TIMSK0 ab.

von Hannes L. (hannes)


Lesenswert?

Schau mal im Datenblatt unter Register Summary nach, welche I/O-Register
im normalen I/O-Bereich liegen und welche im extendet-I/O-Bereich.
Die Register im extendet-I/O-Bereich lassen sich nur wie SRAM
ansprechen.

Der Mega48 ist in dieser Beziehung besonders unvorteilhaft konstruiert.
Sein Konstrukteur war dabei wohl besoffen...

...

von Kurt Flury (Gast)


Lesenswert?

Hallo Christof

Danke für Deinen Beitrag, aber sei mir nicht böse ich verstehe nur
Bahnhof. Kannst Du mir das genauer erklären?

Danke für Dein Verständnis.

von Kurt Flury (Gast)


Lesenswert?

Hallo Hannes

Nun glaube ich zu verstehen was Christof gemeint hat.

Merci. Werde mich mal schlau machen und das Datenblatt genauer lesen.

Danke

von M. M. (miszou)


Lesenswert?

Hi

auch ganz brauchbar ist das AVR Instruction Set, da sieht man ganz gut
welchen Befehl man in welchem Adressbereich anwenden kann.

Gruß MISZOU

von Kurt Flury (Gast)


Lesenswert?

Waren gute Tipps, danke allen. Gruss

von Hannes L. (hannes)


Lesenswert?

Kleine Hilfe in Form eines Denkanstoßes:
http://www.mikrocontroller.net/forum/read-1-254635.html#254673

Bit- & Bytebruch...
...HanneS...

von Christof Rieger (Gast)


Lesenswert?

Hallo Hannes,
war mir noch gar nicht aufgefallen, der TIMSK0 ist tatsächlich über
IN/OUT nicht mehr erreichbar.

The ATmega48/88/168 is a complex microcontroller with more peripheral
units than can be supported within the 64 locations reserved in the
Opcode for the IN and OUT instructions. For the Extended I/O space from
0x60 - 0xFF in SRAM, only the ST/STS/STD and LD/LDS/LDD instructions can
be used.

Unser TIMSK0 liegt auf 0x6e und kann somit nur über die Befehle
ST/STS/STD und LD/LDS/LDD erreicht werden.

von Harrtmut Grölger (Gast)


Lesenswert?

Hi

Wenn man die Macros aus der Appnote 001 benutzt ,kann man die ganzen
Probleme mit der Adressierung umgegen.

MfG HG

von Hannes L. (hannes)


Lesenswert?

Aber nur scheinbar... (man schaut halt weg und bemerkt es nicht mehr)

Denn die Zugriffe auf extendet-I/O kosten mehr Flash und mehr
Rechenzeit. Das mag jetzt haarspalterisch erscheinen, kann sich aber
bemerkbar machen. Das Unsinnige daran ist aber die Tatsache, dass im
normalen I/O-Bereich jede Menge Adressen unbenutzt sind, die mit IN/OUT
oder sogar mit CBI/SBI erreichbar sind.

Ich sehe das daher als eine Einschränkung, die bei vernünftigem Design
nicht nötig wäre. Es macht die Programme unnötig groß und langsam.

...

von pebisoft (Gast)


Lesenswert?

wenn man zeitkritische routinen braucht, die hier beim avr das genannte
nicht erreichen sollte man einen anderen chipsatz nehmen um das ziel zu
erreichen.
ich glaube kaum das atmel hier bei diesen die herstellungsverfahren
ändert.

mfg pebisoft

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.