hallo ich stehe gerade irgendwie auf dem schlauch... kann mir gerade einer helfen wie ich den PORTC Input2 eines Atmega 32 auslesen kann? Ich möchte quasi einen näherungsschalter auswerten ob dieser ein High oder Low Signal hat!
wie wärs mit:
1 | uint8_t data = 0; |
2 | data = PORTC & (1 << 2); |
3 | |
4 | if(data){ |
5 | }
|
6 | else{ |
7 | }
|
Patrick B. schrieb: > wie wärs mit: >... Nein, PORTC ist der Ausgang. Der Eingang wird mit PINC abgefragt.
Hi >data = PORTC & (1 << 2); PINC ist das Eingangsregister. Außerdem muss JTAG deaktiviert werden, denn das benutzt PORTC2. MfG Spess
irgendwie klappt das nicht so richtig ich lasse 5v über einen schalter laufen und dann gehe ich in den Input aber wenn ich es mir über eine Anzeige anzeigen lasse ob der Wert 1 oder 0 ist dann tut ich nix! habe das obige data Beispiel ausprobiert! :(
also ich habe keine weiteren wiederstand dran aber das signal ist eindeutig null oder 5v beim Schalten! Quellcode habe ich im prinzip nur den obigen ! uint8_t data = 0; data = PORTC & (1 << 2); if(data) { x=1 } else { x=0 } und das x lass ich mir dann über sprintf (...) auf ein array schreiben und später mit lcdstring ausgeben..
>Quellcode habe ich im prinzip nur den obigen !
Nur das der leider so weder compiliert wird.
Bringe vollständigen compilierbaren Code und einen Schaltplan und ein
Foto vom Aufbau. Sonst wird das nichts.
>data = PORTC & (1 << 2);
PINC, PINC, PINC, PINC, PINC, PINC, PINC
Nicht PORTC verdammt noch mal.
holger schrieb: > Nicht PORTC verdammt noch mal. Vielleicht will er gucken, ob die Pullups eingeschaltet sind? jetzt aber schnell weg hier....
da-rula schrieb: > also ich habe keine weiteren wiederstand dran aber das signal ist > eindeutig null oder 5v beim Schalten! Dennoch brauchst Du einen W_i_derstand nach 0V, sonst ist das Ergebnis Zufall oder geht nur mit angeschlossenem Messgerät ;-( Alternative: Schalter nach 0V und internen Pull-Up einschalten. Gruß Dietrich
Dietrich L. schrieb: > Nein, PORTC ist der Ausgang. Der Eingang wird mit PINC abgefragt. Ups, da habe ich wohl etwas von AVR, PIC und STM durcheinandergebracht. So sollte es gehen:
1 | uint8_t data = 0; |
2 | |
3 | data = PINC & (1 << 2); |
4 | |
5 | if(data != 0){ |
6 | }
|
7 | else{ |
8 | }
|
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.