Moin hab eine frage zu den I/O Register; ldi r16, 0b00000001 out DDRB, r16 Als erstes wird die Konstante (logische 1) ins Register r16 geladen bzw. dort abgespeichert; Mit out wird dieses Register r16 wieder ausgegeben an den Port DDRB; da es sich um eine logische 1 handelt, ist sind alle Port B.0 - B.7 als Ausgänge konfiguriert, oder? Bei diesem Bsp steht aber dabei, dass Port B.0 ein Ausgang und Port B.1 bis Port B.7 Eingänge sind. hmmm... heißt das, dass DDRB ohne Nummer das Pin B.0 anspricht??? und alle Ports automatisch immer zuerst als Eingänge konfiguriert sind?? Wie kann ich z.B. nur Port B.1 oder B.5 ansprechen?? Geht dass dann über DDRB1 DDRB3?? David PS: sorry für das doppelte posting
Eine Eins heisst Ausgang, eine Null heisst Eingang. Nein, das DDRB gilt fuer den ganzen Port, 0b00000001, sieben Eullen und ne Eins. Darstellung von Binaerzahlen. PortB.5 wird mit "or 0b00100000" als Ausgang gesetzt.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen Es gibt auch noch weitere Tutorials, deren Lesen sich lohnt...
sind die ports wenn keine programmierung vorgenommen wird, als Ein- oder Ausgänge programmiert?
Da hilft ein Blick ins Datenblatt... da steht das drin. Bei AVRs sind die PORTS i.d.R. beim Einschalten als Eingang definiert. Das hat den einfachen Grund, da Eingänge nur "relativ" schwer zu zerstören sind. Einen Ausgang muss man nur kurz gegen Masse oder Betriebsspannung schalten und schon ist dieser platt. Und 0b00000001 ist keine logische 1... eine einzelne Bitstelle kann logisch 1 oder 0 sein. Nur in höheren Programmiersprachen (C,BASIC,etc.) definiert man 0b00000001 und 0b00000000 manchmal als logisch 1 und 0. Gruß, SIGINT
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.