Forum: Mikrocontroller und Digitale Elektronik AtmelStudio 6 (6.1.2440 - beta) debugging Problem


von Billy B. (avr-billy)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin seit kurzem daran, mich mit der Assemblerprogrammierung eines 
ATmega8A auseinanderzusetzen.

Ich habe mir zunächst zu Lernzwecken das AtmelStudio Version 6.1.2440 - 
beta auf meinen Rechner (XP, SP3) installiert.

Nun scheitere ich bei einer "Pipifax-Simulation".

Ich habe folgenden Code:

      .EQU NULL = 0

      in   r16,PINB       ; Zustand des Eingabeports lesen
      andi r16,0b00000001 ; oder $01 oder 0x01 oder 1 << PIND0
      breq NULL

Als Simulator verwende ich den internen Simulator des AtmelStudios.
Ich starte mit F10 (debugging, stepover)
Der Simulator hält automatisch am ersten Befehl.
Ich setze jetzt im I/O-View sämtliche Bits an PINB.
Danach betätige ich erneut F10. Der Programmcounter zeigt nun 2 Zyklen 
an.
Im Register r16 steht immer noch 0x00.
(Ich habe einen entsprechenden Screenshot mit angefügt und 
dementsprechende Markierungen im Bild vorgenommen.)

Warum ist das so? Habe ich irgendwas nicht berücksichtigt?

Wenn ich mit F10 weiter steppe, gelange ich wieder an den Anfang des 
Programms und der Wert von PINB wird auch beim weitersteppen richtig ins 
Register r16 übertragen.

Mir tun sich hier ein paar ??? auf....

Danke für konstruktive Beiträge in voraus!

Gruß,
Bernd

von Wusel D. (stefanfrings_de)


Lesenswert?

Wenn Du den pegel an Port Pins änderst, wird der neue Wert erst beim 
übernächsten befehl "sichtbar".

Schau mal ins Datenblatt des ATtiny13 auf Seite 43. Dort ist ein 
Blockschaltbild von den I/O Pins abgebildet. Lesezugriffe laufen über 
den "Snychronizer", der diese Verzögerung bewirkt.

von Billy B. (avr-billy)


Lesenswert?

@ Stefan Frings

Vielen Dank für Deine schnelle Antwort. Das hat mir sehr weitergeholfen.
Ich habe es - dank Deines Hinweises auf das Datenblatt - ebenfalls im 
Datenblatt des ATmega8A auf den Seite 50-53 recherchieren können.

P.S.: Mein Codebeispiel war aus dem Fachbuch "Mikrocomputertechnik mit 
Controllern der Atmel AVR-SISC-Familie" von Günter Schmitt.

Leider wird im Buch direkt in Assembler ohne Hinweis auf das Datenblatt 
eingestiegen. Dadurch ist mir das passiert :-(.

Im AVR-Tutorial habe ich auch noch einen Abschnitt zur Thematik 
gefunden: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Eingabe

Gruß,
Bernd

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.