Forum: Mikrocontroller und Digitale Elektronik PORTB high wenn PINB high?


von M. T. (cube7)


Lesenswert?

Hallo,
wenn ich PORTB = 0xff; definiere, zeigt mir AvrStudio im I/O View PORTB 
trotzdem als low an.

Definiere ich aber PINB = 0xff; wird mir PORTB als high angezeigt.

HÄ?

Greetings,
C.

von Floh (Gast)


Lesenswert?

> HÄ?

Programm und Screenshot bitte :-)

von M. T. (cube7)


Angehängte Dateien:

Lesenswert?

1
#include <avr/io.h>          
2
 
3
int main (void) {            
4
 
5
    DDRB  = 0xff;            
6
    PORTB = 0xff;
7
   
8
  while(1) {                
9
   }                         
10
    
11
   return 0;                 
12
}

Ich wollt eigentlich nur ne LED zum leuchten bringen....

Arbeite mit AvrStudio, WIN-gcc und dem STK500

von Jens A. (nepi)


Lesenswert?

Wie ist DDRB eingestellt?

von A. F. (frankalicious)


Lesenswert?

Im STK500 sind die LEDs Low aktiv, also
1
PORTB = 0x0;

von M. T. (cube7)


Lesenswert?

Ahh,
das ist gut zu wissen, erklärt aber trotzdem nicht das Verhalten.

von M. T. (cube7)


Lesenswert?

@Jens
Was meinst du mit eingestellt (hab ich was übersehn)?

von Floh (Gast)


Lesenswert?

Aber irgendwie passt dein Screenshot nicht:
1. Die Datei wurde verändert (*)
2. Ich seh keinen gelben Pfeil (Simulationsfortschritt im Programm)
3. Der Simulator läuft nicht?

Am STK sind so viel ich weiß die LEDs invertiert angeschlossen, also 
bringt PORTB = 0; die LEDs zum leuchten.
:-)

von M. T. (cube7)


Lesenswert?

So, irgendwie kapier ichs nich, jetzt wirds richtig angezeigt....
@Floh
Was meinst du mit Simulator?
;-)

Greetz,
C.

von Huch (Gast)


Lesenswert?

>3. Der Simulator läuft nicht?

Der Simulator läuft. Ist unten rechts zu erkennen. Oben im Menue ist das 
Pause-Icon enabled.

von Huch (Gast)


Lesenswert?

>Was meinst du mit Simulator?

Der "Simulator" ist das Programmteil von AVRStudio, das im Bild gerade 
angezeigt wird. Es soll die CPU simulieren.

Es kann sich hier um eine der mehr oder minder bekannten Fehler des 
Simulators handeln. An sich ist mir aber nicht bekannt, das man in der 
echten CPU die Ausgangsports nicht setzen kann.

von Huch (Gast)


Lesenswert?

Ich habe das gerade mal ausprobiert.

Der Effekt tritt genau dann auf, wenn Du den Simulator und dann das 
Programm startest ohne das Programm dann wieder anzuhalten.
Während des Laufs wird die Port-Anzeige nicht aktualisierst. Wenn Du den 
Simulator anhälst, dann stehen da auch die erwarteten Wert 0xFF in PORT 
und DDR.

Also alles OK.

von M. T. (cube7)


Lesenswert?

Danke für die HInweise- wieder was gelernt:-).
Aber das Programm ist doch nicht falsch?
Auch nachdem ich den PORT auf active low eingestellt habe krieg ich 
immernoch kein Signal -  nutz ich am STK500 vllt. die falschen Pins um 
das Signal abzugreifen?

von Huch (Gast)


Lesenswert?

>nutz ich am STK500 vllt. die falschen Pins um das Signal abzugreifen?

Das muss irgendein Missverständnis sein.
Dein Bildschirmfoto zeig, wie schon bemerkt, den Simulator.
D.h. Dein Programm wird auf dem PC simuliert. Es läuft nicht auf dem 
Prozessor, der auf dem STK500 gesteckt ist.

Um das zu erreichen, musst Du, das beim Compilieren erstelle HEX-File 
auf den Prozessor flashen. Das geht mit dem Menuepunkt "Tools"->"AVR 
Connect".
Dieser Menuepunkt ist nur dann aktiv, wenn der Simulator nicht aktiv 
ist. Lies am besten auch nochmal die Doku zu AVRStudio.

von Floh (Gast)


Lesenswert?

M. T. schrieb:
> Auch nachdem ich den PORT auf active low eingestellt habe krieg ich
> immernoch kein Signal -  nutz ich am STK500 vllt. die falschen Pins um
> das Signal abzugreifen?

Moment mal. Du musst auf jeden fall unterscheiden zwischen Simulator und 
Stk.
Ich glaub nämlich da gibts Missverständnisse. :-)

Du tippst dein Programm und kompilierst es.
Wenn du simulierst, startest du einfach den Simulator.

Willst du das Programm auf dem Stk500 ausprobieren, musst du das 
Programm auf den uC übertragen (downloaden).
Außerdem musst du beim Stk ja die Verbindung zwischen PortB und den Leds 
über Flachkabel herstellen.
:-)

von M. T. (cube7)


Lesenswert?

Hallo nochmal und danke für deine Mühe!

Dass das was der Simulator macht nicht auch gleichzeitig auf dem STK 
passiert, ist mir klar, gebrannt wird das Ding ja erst wenn ich auf 
compile and run klicke, oder?

Anstatt die bereits integrierten LEDs zu nutzen wollt ich eigentlich 
externe verwenden, die ich über den I/O Header (missverständlicher Name) 
angeschlossen habe. Trotz allem scheint mein Programm auf die Ausgänge 
keinen Einfluss zu nehmen - hmmm

C.

von Huch (Gast)


Lesenswert?

>gebrannt wird das Ding ja erst wenn ich auf compile and run klicke, oder?
Nein. Damit startest Du den Simulator.

Du musst zwar auf Compile drücken aber dann eben auf das schon 
beschriebene "Tools"->"Program AVR"->"Connect" bzw. "Auto connect". Das 
erst stellt eine Verbindung zum STK500 her.

von Floh (Gast)


Angehängte Dateien:

Lesenswert?

M. T. schrieb:
> compile and run klicke

Ähm, hast du schon mal irgendein Programm auf den uC gespielt?

Im Bild ist mal der Einstiegsbutton dafür markiert :-)

von Huch (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe das mal in dem Bild gekennzeichnet.

von Huch (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, da hat was gefehlt.

von M. T. (cube7)


Lesenswert?

Ähhhm, okay, da hab ich wohl was vollkommen falsch verstanden *_'
Vielen Dank für die Skizzen, ich versuchs gleich mal, hoffentlich 
klappts*_*.

THX a lot,
Cube

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.