Hi,
if(bit_is_set(PINX, PIN_NUMBER)) {} ...
Gruß
Fred
Werbung
Hi,
ich will das Ausgangssignal des US-Abstandwarners, welches ca. 12V beträgt (wahrscheinlich n'bisschen weniger) an einem Pin abfragen. Die Beschaltung des Pins im Bild. Programmiert habe ich den AVR mit folgendem:
Dies soll bewirken, dass wenn das Signal kommt, Pin 0 und 1 low werden. Sonst high. Da es nicht funktioniert die Frage, was hab ich falsch gemacht?Code:#include <avr\io.h> int main (void) { DDRA = 0b00000011; PORTA = 0b11111100; //Pull Up ein while(1) { if(bit_is_set(PORTA, 7)) { PORTA &= 0b11111100; } else { PORTA |= 0b0000011; } } return 0; }
[Edit] (kann sein dass ich bei den &= , |= oder so was verdreht hab)
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
Hi,
if(bit_is_set(PINX, PIN_NUMBER)) {} ...
Gruß
Fred
Only entropy comes easy. - Anton Checkhov
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
Hi,
genau da liegt Dein Denkfehler: Es geht nicht um einen PORTX (X steht für den Portbuchstaben, z.B. A,B,C oder so), den Du auswerten willst: Du möchtest doch eigentlich einen Eingang lesen. Die Eingänge heißen bei den AVRs nun mal PINX (X wie oben). Für PIN_NUMBER setzt Du eine Konstante ein; der erlaubte Wertebereich ist 0-7.Zitat von Jacob2
Ich rate Dir dringlich, ein entsprechendes Tutorial durchzuarbeiten, z.B. http://www.mikrocontroller.net/artic...R-GCC-Tutorial -- dort sind die bit_is_set/clear() Funktionen gut erklärt: http://www.mikrocontroller.net/artic..._aus_Registern .
Gruß
Fred
Only entropy comes easy. - Anton Checkhov
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
Hi,
Du könntest auch einfach einen Spannungsteiler aus 2 Widerständen einsetzen. Ganz sicher kann man gehen, indem man einen Optokoppler benutzt. Hier ein Link zu Pegelwandlern.
Gruß
Fred
Only entropy comes easy. - Anton Checkhov
OK, danke das hat sich dann jetzt gelöst!
Roboter, CNC Fräse, Elektronik und Basteleien stelle ich auf meiner Website vor...
Lesezeichen