Hallo, Ich habe ein Problem mit der PORT-PIN Belegung. Und zwar möchte ich durch einen Schalter auf PORTC0 einen PIN PB4 umschalten können. z.b Es soll durch den Schalter ein High signal am ATMEGA32 ankommen und dann soll der PIN PB4 auf 1 gesetzt werden. Im unteren Beispiel ist der PB4 immer auf 1 gesetzt. Der schalter hat keinen Einfluss auf PB4. Würde mich auf weitere Hilfe freuen. #include <avr/io.h> #include <stdio.h> int main (void) { DDRB = 0xFF; DDRC = 0x00; while(1) { if( PINC & (1<<PINC1)) { PORTB= (1<<PB4); //Soll über PINC0 angesteuert werden. } else PORTB&=~(1<<PB4); } }
1. Du sagst nichts dazu, wie der Schalter verdrahtet ist. Der benötigt einen Pull-Up (oder Pull-Down) Widerstand. Ganz einfach: nimm den internen Pull-Up! 2. Für Dein Programm (noch) nicht relevant: Entprellung.
Danke für eure Hilfe! Ich habs hinbekommen. Hatte bei den Schalter keine Widerstände zu GND gehabt und beim Einschalten wurden sie sofort auf high geladen und nicht mehr entladen. :)
Noch besser beraten (Du sparst Hardware) wärst Du mit den prozessor-internen Pull-Up-Widerständen (Schalter dann gegen GND) und entsprechend umgekehrter Logik (PIN L bedeutet Schalter EIN).
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.