Hallo Ist es sinnvoll, die Ports so, also über das DDRX zu programmieren, oder sollte man dies besser über PortX tun? #define set_DATA DDR_T &= ~(1<<P_DATA) // PORT_T |= (1<<P_DATA) #define clear_DATA DDR_T |= (1<<P_DATA) // PORT_T &= ~(1<<P_DATA) Grüße Marcel
Hi Marcel siehe Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial DDRX legt nur die Datenrichtung der Ports fest! PORTX den Wert. Also erst als Ausgang schalten, dann Wert anlegen. z.B. DDRA=0x01; PORTA=0x01; //Port A, LSB auf HIGH
Es ist nicht nur nicht sinnvoll, es ist sogar unsinnig. DDRx ist das Datenrichtungsregister. Für einen Ausgang setzt du das typisch genau einmal, bevor du den ersten Wert ausgibst.
hallo, ja, mir ist klar, das ddrx festlegt, ob dieser port Ein- bzw. Ausgang sein soll. Ich habe diese Zeilen in einem Code aufgeschnappt. Dort wird so der ein Output Port realisiert. Wenn ein high ausgegeben werden soll wird das DDRx auf "Input" umgestellt, bei low auf "Output". Ich denke das high wird mit einem externen pull up realisiert. Die Definition solcher Macros (#define set_DATA PORT_T |= (1<<P_DATA)) ist aber sinnvoll, oder? Diese machen doch das Programm übersichtlicher oder?? Grüße und dank schonmal M.
> Diese machen doch das Programm übersichtlicher oder??
Das mußt du für dich entscheiden! Wenn es für DICH übersichtlich ist,
benutze die Makros.
Es kann doch sinnvoll sein, es so zu steuern. zB für I2C damit kann man es dann einmal auf LOW ziehen und ansonsten ist es hochohmig.
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.