Hallo zusammen, ich als absoluter Anfänger benötige mal Eure Hilfe zum Atmel Studio 6 Debugger. Ich habe folgendes kleine Programm #include <avr/io.h> int main(void) { DDRB = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << DDB4); while(1) { PORTB = 0x00; // mal alle Ausgänge des Port B auf 0 PORTB |= (1<<PB1); // LED Gelb einschalten } } Meiner Meinung nach werden: - die Ausgäne 0 - 4 des Ports B auf Richtung Ausgabe gesetzt. - dann alle Ausgänge von PORT B auf 0 - zum Schluss wird der Port B1 auf 1 gesetzt => die LED leuchtet Wenn ich aber den Simulator starte und die Zeile: PORTB |= (1<<PB1);ausführe, dann erhalte ich im Simulator folgende Anzeige ( s.Bild ) Was ich nicht verstehe, warum wird PINB1 auch auf 1 gesetzt ? Gruß Juppy P.S. Sorry, keine Ahnung warum das Bild 2x vorkommt :-(
:
Bearbeitet durch User
Det S. schrieb: > Was ich nicht verstehe, warum wird PINB1 auch auf 1 gesetzt ? Weil PinB immer den (synchronisierten) Zustand vom PortB enthält. In der Graphik "General Digital I/O" im Datenblatt, Anschnitt "Port as general digital I/O" sieht man das.
Hi
>Was ich nicht verstehe, warum wird PINB1 auch auf 1 gesetzt ?
Das PIN-Register spiegelt den Zustand der Pins wieder. Wenn du einen Pin
per Portregister auf 1 setzt wird auch das entsprechende Bit im
Pin-Register gesetzt.
MfG Spess
Is' doch nett! Du setzt einen Port-Ausgang und das Register, mit dem man gerade diesen Port-Zustand abfragen kann, spiegelt diesen Zustand auch wieder. Ich finde das das nett ist.
spess53 schrieb: > Hi > >>Was ich nicht verstehe, warum wird PINB1 auch auf 1 gesetzt ? > > Das PIN-Register spiegelt den Zustand der Pins wieder. Wenn du einen Pin > per Portregister auf 1 setzt wird auch das entsprechende Bit im > Pin-Register gesetzt. > > MfG Spess Hallo zusammen, ist das generell so, oder ist meine Schreibweise nur falsch ? Und gilt das auch anders herum ? Sorry mein Englisch ist nicht das allerbeste ;-) Vielleicht noch kurz eine andere Frage zum Debugger. Wenn ich nach der Zeile PORTB |= (1<<PB1); noch PORTB |= (1<<PB0); schreibe und den Debugger starte und Schritt für Schritt durch das Programm gehe, dann ändert sich die Anzeige erst nach der neuen Zeile (PORTB |= (1<<PB0);) und nicht schon nach der ersten (PORTB |= (1<<PB1);) Warum ist das so ? Gruß Juppy
Amateur schrieb: > Is' doch nett! > Du setzt einen Port-Ausgang und das Register, mit dem man gerade diesen > Port-Zustand abfragen kann, spiegelt diesen Zustand auch wieder. > Ich finde das das nett ist. Hmmmm, Du hast Recht.... Darüber habe ich noch gar nicht nachgedacht ;-) Tja, wieder was dazu gelernt... :-) Gruß Juppy
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.