Hallo zusammen, ich habe bei meinem ATMega2561 den Pin PC0 als Eingang definiert und Pull-up eingeschaltet. Dann habe ich an dem Pin ein Kabel mit 5V angeschlossen. An dem Kabel ist ein Schalter, der beim drücken den Strom unterbricht. Wird mit dem Schalter der Strom unterbrochen, soll ein LED leuchten. Das Problem ist, dass der Pin PC0 dauerhaft eine Spannung von 5V hat, ohne das das Kabel angeschlossen ist. Ich dachte, dass bei einem Pin der als Eingang definiert ist, grundsätzlich keine Spannung drauf ist. Was läuft falsch? Habe ich was falsch verstanden? Hier mein Programm: #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> int main(void) { // PB6 = Ausgang DDRB |= (1<<PB6); // PC0 = Eingang DDRC &= ~(1<<PC0); // Pull-up ein PORTC |= (1<<PC0); // Endlosschleife while(1) { // Taster an PINC0 abfragen if((PINC & (1<<PC0)) == 0) { // Prellzeit _delay_ms(50); // Taster nochmal abfragen if((PINC & (1<<PC0)) == 0) { // LED einschalten PORTB ^= (1<<PB6); // warten, bis Taste wieder losgelassen wurde while(!(PINC & (1<<PC0))); } } } }
Thomas H. schrieb: > Das Problem ist, dass der Pin PC0 dauerhaft eine Spannung von 5V hat, > ohne das das Kabel angeschlossen ist. Genau das ist die Aufgabe eines Pullup, sagt doch schon der Name.
Thomas H. schrieb: > Was läuft falsch? Habe ich was falsch verstanden? Wenn du den internen Pullup einschaltest, solltest du den Schalter gegen GND legen. Der Pullup legt doch an den Eingang schon die internen 5V an. Wenn du jetzt von außen nochmal 5V anlegst, ändert sich nichts. Wenn du aber, wie ich oben sagte, GND über den Schalter anlegst, dann ziehst du bei geschlossenem Schalter den Eingang auf GND und bei offenem Schalter zieht der Pullup den Eingang auf 5V. Voila, und schon hast du einen auswertbaren Schaltvorgang...
asdf schrieb: > Thomas H. schrieb: >> Was läuft falsch? Habe ich was falsch verstanden? > > Wenn du den internen Pullup einschaltest, solltest du den Schalter gegen > GND legen. Der Pullup legt doch an den Eingang schon die internen 5V an. > Wenn du jetzt von außen nochmal 5V anlegst, ändert sich nichts. Wenn du > aber, wie ich oben sagte, GND über den Schalter anlegst, dann ziehst du > bei geschlossenem Schalter den Eingang auf GND und bei offenem Schalter > zieht der Pullup den Eingang auf 5V. Voila, und schon hast du einen > auswertbaren Schaltvorgang... Vielen Dank, hat funktioniert. Ich dachte, bei einem Pin der als Eingang definiert, wartet der Pin auf Stromsignale von außen. Wie ist es denn, wenn ich z.B. ein Thermometer an den Mikrocontroller anschließe, wird dann der Pin auch als Eingang definiert? Wie übermittelt das Thermometer die Temperatur?
Thomas H. schrieb: > Ich dachte, bei einem Pin der als Eingang definiert, wartet der Pin auf > Stromsignale von außen. Nein, der wertet die anliegende Spannung aus, nicht den Strom. Thomas H. schrieb: > Wie ist es denn, wenn ich z.B. ein Thermometer an den Mikrocontroller > anschließe, wird dann der Pin auch als Eingang definiert? Wie > übermittelt das Thermometer die Temperatur? Das kommt auf das Thermometer an. Was für eins meinst du? Es gibt temperaturabhängige Widerstände, z.B. den PT100. Es gibt auch Temperatursensoren, die eine Spannung proportional zur Temperatur ausgeben, wie den LM35. Oder es gibt Sensoren, die ein digitales Signal ausgeben, welches du mit dem µC auswerten mußt. Es gibt nicht DAS Thermometer...
@ Thomas Holländer (datatom) >Ich dachte, bei einem Pin der als Eingang definiert, wartet der Pin auf >Stromsignale von außen. Nö. Meistens sind es Spannungssignale. https://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen >Wie ist es denn, wenn ich z.B. ein Thermometer an den Mikrocontroller >anschließe, wird dann der Pin auch als Eingang definiert? Wie >übermittelt das Thermometer die Temperatur? Das kommt auf den Temperatursensor an. Analoge Sensoren werden meist mit einem AD-Wandler Eingang ausgewertet, digitlate logischerweise mit normalen, digitalen Eingängen. Temperatursensor
Thomas H. schrieb: > Vielen Dank, hat funktioniert. > > Ich dachte, bei einem Pin der als Eingang definiert, wartet der Pin auf > Stromsignale von außen. Zu Strom <-> Spannung wurde ja schon geantwortet. Fangen wir mal anders rum an: Warum hast du den Pull-Up aktiviert? Was hätte der deiner Meinung nach tun sollen?
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.