Hi,
if(bit_is_set(PINX, PIN_NUMBER)) {} ...
Gruß
Fred
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
Wie ist das jetzt gemeint
Wo gibt man dann an, um welchen Port es sich handelt?
Soweit ich die allgemeine Form verstanden habe heißt das dann z.B.:
if(bit_is_set(PIN7, PIN_7) {} ...
Oder wie???
Ich versteh net wie du das meinst...
Danke!
Gruß Jacob2
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
Ok. Danke, da steht alles drin!
Das mit der Beschaltung ist richtig oder? Von wegen 12V oder so...(nicht dass ich mir da was kaputtmache)
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