Forum: Mikrocontroller und Digitale Elektronik AVR Studio Simulator


von peter (Gast)


Lesenswert?

Hi,
wenn ich den PortX als Eingänge mit Pull Up definiere müssten doch das

PINX Register im Simulator den Wert 0xFF haben. Es steht aber 0x00
drin. Ein Fehler? In der Hilfe zum Simulator habe ich dazu nichts
gefunden.

Gruß

von Togger (Gast)


Lesenswert?

Hi Peter,
ob Ein- oder Ausgang wird im DDRx Register definiert (Schritt 1).
"0" für Eingang, "1" für Ausgang - jeweils für jeden Pin.

Willst du dann was ausgeben, schreibst du es ins Portx Register, willst
du was einlesen, liest du das pinx Register.

Ok, Register ist auch falsch, denn es handelt sich um Ports (für die
Schlauwis hier ;-))

Somit liegt kein Fehler vor, denn wenn du noch nix ausgegeben oder
eingelesen hast, sind die Werte für portx und pinx zufällig.

lg Ralf :-)

von peter (Gast)


Lesenswert?

Das ist mir klar: Ein Beispiel:
Ports initialisieren:

DDRB = 0x00 // Alles Eingänge
PORTB = 0xFF // Interne Pull Ups aktivieren

In der main:

uint8_t Input;

Input = PINB;

Jetzt müsste doch in Input 0xFF stehen, tut es aber nicht, es steht
0x00 drin.

von D. W. (dave) Benutzerseite


Lesenswert?

Ja.

Wie prüfst du nach, ob 0xFF drin steht?

von D. W. (dave) Benutzerseite


Lesenswert?

Naja, lesen ist doch manchmal sinnvoll..

Woher soll der Simulator wissen, was an dem Pin dranhängt?

Es könnte ja etwas den Pin die ganze Zeit auf low ziehen... deswegen
geht das nicht.

von peter (Gast)


Lesenswert?

Das stimmt das da etwas auf GND ziehen könnte, ich fände es aber
logischer das man externe Beschaltung über ein Stimuli file vorgibt.
Für mich ist das ein Fehler in der Nachbildung der Funktionalität der
Ports.

Mit dem Watch Window kann man prima die Inhalte von Variablen
überwachen.

von Togger (Gast)


Lesenswert?

Es steht drin, was er am PortB (PinB) einliest.
Ja hast schon Recht: in "Echt" wird es so klappen, der Simulator
scheint von den Pullups nix zu wissen ;-)
Man kann eben anscheinend nicht alles simulieren.
Dann bleibt dir nur im Simulator Werte "von Hand" zu setzen.

lg Ralf

von Andreas K. (andi_k)


Lesenswert?

@peter: Welcher Pin low oder high ist, mußt Du im AVR-Studio mit der
Maus im I/O-Bereich unter PortB durch klick auf eines der PinB-Bits
schon selber bestimmen, von alleine geht da nix, gerade nachvollzogen.

MfG
Andi

von Wolfgang Weinmann (Gast)


Lesenswert?

Hallo,

es bleibt auch noch zu sagen, daß der Simulator nicht alles fehlerfrei
macht. Ich wollte mit dem Timer1 im Modus FastPWM was simulieren - aber
der Simulator machte Unsinn. Dann habe ich es aufgegeben und der uC
programmiert - und siehe da alles hat wie gewünscht funktioniert.

Bei so einem Verdacht ist auch AVRfreaks.net eine Hilfe

Gruß

Wolfgang

--
www.ibweinmann.de
Mikrocontrollersysteme

von peter (Gast)


Lesenswert?

Bei der Timer Simulation hab ich auch schon ein paar Fehler bemerkt.
Aber das mit den Pull Ups finde ich ziemlich elementar, schade.
Ansonsten gefällt mir das AVR Studio mit GCC Unterstützung sehr gut,
bis auf das Syntax Highlighting des Editors.

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.