Hallo habe nun alles so wie ich es in den Tutorials gefunden habe angeschlossen. Also +5V -> R(10kOhm) -> PORTD0 GND -> Taster -> PORTD0 +5V -> R(330Ohm) -> grüne LED -> PORTA0 +5V -> R(330Ohm) -> rote LED -> PORTA1 so wird nun der Taster gedrückt, soll die LED an PORTA0 (grün) leuchten und die rote soll aus sein, wird der Taster wieder losgelassen, grüne LED aus, rote wieder an.... hier das Programm: #include <avr/io.h> #include <stdint.h> void main(void) { DDRA = 0xff; //Port A als Ausgang definieren DDRD = 0x00; //PortD ist Eingang PORTA = 0b11111111; //alle LED aus while(1) { if(PORTD == 0b11111110) { PORTA = 0b11111110; //grüne LED an } else { PORTA = 0b11111101; //rote LED an } } } Aber nur die rote LED leuchtet und das unabhängig ob ich den Schalter drück oder nicht :( Könnt ihr mir sagen, woran das liegt ?? DANKE ihr seid definitiv die allerbesten :D !!!!!!
Wenn Du den PortD lesen willst, mußt Du PIND benutzen, also ... while(1) { if(PIND == 0b11111110) { ... Damit die unbenutzen Eingänge nicht herumklappern, solltest Du die interen Pull-Ups zuschalten, also irgendwo am Anfang noch PORTD = 0xff; //enable pull-ups einfügen, dann kannst Du Dir auch den 10k-Widerstand am Taster sparen. MfG Olaf
Wenn Du das Tutorial WIRKLICH gelesen hättest, wüsstest Du, dass man das PIND-Register und nicht das PORTD-Register abfragen muss... Außerdem wirst Du ohne Taster-Entprellung eh keinen definierten Zustand kriegen
DANKE olaf DANKE johnny.m UUpps, ja stimmt ihr voll recht, hätte ich besser lesen sollen :) das mit der taster entprellung ist ne gute sache, aber es läuft auch ohne und das macht mich schon verdammt stolz !! ist ja erst mein dritter tag mit controllern! Mach richtig bock !! :D
Hey jo, hätt da noch ne klitze kleine Frage, hab im Anhang mein Datenblatt des ATMega16 Controllers, könnt ihr mir sagen wie ich die dort drauf montierten Relais schalte, also anspreche ??
Links neben PD2 sind wohl 2 Pins, genau ist das nicht zu erkennen. wenn du an diese Pins, die dann über die Widerstände auf die Transistoren gehen, 5V anlegst, ziehen die Relais an. Du führst also diese an einen Pin des Atmega, z.B A3 oder A4, da du diese ja schon als Ausgang gestetzt hast (DDRA=$FF) und kannst so die Relais schalten: PORTA=0b00011000
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.