Ich hoffe ihr könnt mir helfen. Es ist eigentlich ganz Einfach aber ich bekomme es nicht hin. Ich möchte mit meine ATmega einen PIN so beschalten, dass der nur HIGH ist wenn er mit Vcc verbunden ist. Schaltung ist wie im Anhang mit 10k. Mein Code sieht wie folgt aus: #include <avr/io.h> int main(void) { initOnBoardLed(); // Funktion geht DDRD = 0b00000000; // Input PORTD = 0b00000100; //interne Pullup nein while(1) { if(PIND & (1<<PD2)) { LED_RT_OFF();// Funktion geht LED_GR_ON();// Funktion geht } else { LED_GR_OFF();// Funktion geht LED_RT_ON();// Funktion geht } } } Meine Erwartung ist das die Grüne LED leuchtet wenn der Schalter geschlossen ist sonst die Rote. Die Rote LED löchte leider nur wenn ich den Pin direkt mit Masse verbinde. Ich finde meine Fehler einfach nicht. Sieht Ihn wer von euch?
Wozu hast du den internen Pullup aktiviert? Mach den mal aus...
Wenn ich mich richtig erinnere, schaltest du den internen Pullupwiderstand an PD2 ein. Damit hast du einen Spannungsteiler zwischen Pullup und Pulldown.
Dussel schrieb: > Wenn ich mich richtig erinnere, schaltest du den internen > Pullupwiderstand an PD2 ein. Damit hast du einen Spannungsteiler > zwischen Pullup und Pulldown. Ja du hast recht, Pullupo war an. npn schrieb: > Wozu hast du den internen Pullup aktiviert? > Mach den mal aus... Kommt aus dem letzten test. Nach dem Ausmachen gleiche Bild.
npn schrieb: > Wozu hast du den internen Pullup aktiviert? > Mach den mal aus... Die andere Möglichkeit ist, den internen Pullup eingeschaltet zu lassen und dafür den Taster vom Pin gegen GND zu schalten. Dann ist der Low-aktiv, also im offenen Zustand liegen ca. 5V am Pin an und beim Schließen des Tasters dann ca. 0V. Damit sparst du einen Widerstand.
HansWurst schrieb: > Ich finde meine Fehler einfach nicht. hast du schon die Spannung am Pin gemessen, wenn nein dann schweige für immer ... Systematische Fehlersuche bringt einem auch selbst Erfolgserlebnisse
JA hatte ich da liegen 3,3V ich weiß aber nicht wo die herkommen.
Ich habe mir jetzt erstmal mit einem Transitor als Schalter gegen Masse + internen Pullup beholfen. Muss aber eigentlich nur mit pulldown gehen. Jetzt ist zwar die Logic invertiert, aber ich kann activ high schalten. Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn sie nicht direkt auf Masse liegen?
HansWurst schrieb: > Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn > sie nicht direkt auf Masse liegen? Warum sollte man, auf Ausgang gesetzte Pins, auf Masse legen? Wenn du das auch nur mit einem Pin machst, wundert mich nix mehr.... Selbst austretender Rauch, würde mich nicht verwundern...
Wenn ich das tue sind doch alle pullup deaktiviert. Oder habe ich das falsch verstanden? und laut der Tabelle ist es nicht nötig. Wenn doch warum?
Ulrich F. schrieb: > HansWurst schrieb: >> Hat wer eine Idee warum die als Ausgang gesetzen Pins 3,3V haben, wenn >> sie nicht direkt auf Masse liegen? > > Warum sollte man, auf Ausgang gesetzte Pins, auf Masse legen? > > Wenn du das auch nur mit einem Pin machst, wundert mich nix mehr.... > Selbst austretender Rauch, würde mich nicht verwundern... EINGANG sorry mein Fehler aber es ist definitiv ein Eingang. Also noch mal die Frage: Hat wer eine Idee warum die als EINGANG gesetzen Pins 3,3V haben, wenn sie nicht direkt auf Masse liegen?
Unbeschaltete Inputs schweben. Es ist Zufall, welche Spannung da anliegt. u.a. abhängig von Temperatur, Exemplarstreuung, Störeinstreuung, usw. Ist da allerdings ein Pulldown dran, Dann ist entweder der Pulldown unterbrochen, oder der Portpin gebraten. Also, ein Defekt, oder das Schaltbild oben stimmt nicht.
Ulrich F. schrieb: > Ist da allerdings ein Pulldown dran, Dann ist entweder der Pulldown > unterbrochen, oder der Portpin gebraten. > > Also, ein Defekt, oder das Schaltbild oben stimmt nicht. Also der Pulldown(10k) steckt wie folgt: GND-- 10k -- Pin -- Schalter -- Vcc Das Problem mit den Pulldowns habe ich an allen Pins und die Löstellen sehen gut aus. Ein Disablen der Pullups im SFIOR blieb auch ohne Erfolg. Was kann es sein?
Design Fehler? Keine Masseverbindung zu den 10K Widerständen?
HansWurst schrieb: > Also der Pulldown(10k) steckt wie folgt: > > GND-- 10k -- Pin -- Schalter -- Vcc Dann können da bei 5V Versorgung keine 3,3V anliegen. 1. Deine Annahme/Schaltbild entspricht nicht der Realität. 2. Der Atmega ist zerbraten Such dir was aus.....
Ulrich F. schrieb: > 1. Deine Annahme/Schaltbild entspricht nicht der Realität. > 2. Der Atmega ist zerbraten > Such dir was aus..... Schaltbild stimmt. wie bekomme ich heraus ob der atmega zerbraten ist?
HansWurst schrieb: > Ulrich F. schrieb: >> 1. Deine Annahme/Schaltbild entspricht nicht der Realität. >> 2. Der Atmega ist zerbraten >> Such dir was aus..... > > Schaltbild stimmt. > wie bekomme ich heraus ob der atmega zerbraten ist? probier einen anderen pin aus
Wo ist der Code der anderen Funktionen, die du in der main-Funktion aufrufst? Ohne den kompletten Quellcode ist das hier nur Raterei, da einzelne Funktionen für sich wunderbar laufen können, im Zusammenspiel mit anderen aber nicht.
Ingo Less schrieb: > Beleuchteter Schalter? Drahtbrücke im Steckbrett. Felix Pflaum schrieb: > Wo ist der Code der anderen Funktionen, die du in der main-Funktion > aufrufst? Ohne den kompletten Quellcode ist das hier nur Raterei, da > einzelne Funktionen für sich wunderbar laufen können, im Zusammenspiel > mit anderen aber nicht. Hier sind die Funktionen aber an dennen liegt es nicht. // The LED is connected to Port G3 and GND. #define LED_RT_ON() {PORTG |= 8; } #define LED_RT_OFF() { PORTG &= ~8; } // The LED is connected to Port G4 and GND. #define LED_GR_ON() { PORTG |= 16; } #define LED_GR_OFF() { PORTG &= ~16; } void initOnBoardLed() { DDRG |= 8; DDRG |= 16; }
> DDRG |= 8; > DDRG |= 16; ... geht auch kürzer.
HansWurst schrieb: > es ist ein 128. und PortG ist die vorhandene OnBoard LED Ähem, willst Du damit sagen, dass Du den Schalter an einem Pin betreibst, an dem auch eine LED angeschlossen ist, welche u.U. den Pin nach High zieht?
Bei dem ist JTAG an Port F. HansWurst schrieb: > vorhandene OnBoard LED Was ist auf dem Board sonst noch so vorhanden? PD2 PD3 wären für UART1 zuständig.
hp-freund schrieb: > Was ist auf dem Board sonst noch so vorhanden? > PD2 PD3 wären für UART1 zuständig. PD2 ist der RX-Pin. Wenn da ein MAX232 dranhängt, wärs kein Wunder, dass der Pulldown den Eingang nicht auf 0 ziehen kann.
HansWurst schrieb: > wie bekomme ich heraus ob der atmega zerbraten ist? Indem du ihn durch einen neuen ersetzt und prüfst, ob der sich anders verhält. Amateur schrieb: >> DDRG |= 8; >> DDRG |= 16; > ... geht auch kürzer. Vor allem lesbarer. Im Eingangsposting stand da noch PORTD. Warum ist das auf einmal PORTG? Ansonsten gilt beim Mega128 immer die erste Frage: Mega103-Compatibility-Fuse ausgeschaltet? JTAG ausgeschaltet? Alle Masse- und VCC-Pins korrekt beschaltet?
HansWurst schrieb: > es ist ein 128. und PortG ist die vorhandene OnBoard LED Interessante Information! Es gibt ein Board! Wie wäre es mal mit dem Schaltplan des Boards? Denn dass du da einen Bock schießt, da sind wir uns einig. Nur wo? Offensichtlich außerhalb deines Blickwinkels....
Mal ganz blöd gefragt, ich kenne deinen Wissensstand ja nicht: Bist du sicher, dass das Board mit 5V läuft und nicht mit 3,3V? Ein 5V-Netzteil heißt noch nicht, dass der Controller auch mit 5V läuft.
Zeig doch einfach mal'n Foto vom Aufbau!
https://www.mikrocontroller.net/articles/Netiquette Speziell: https://www.mikrocontroller.net/articles/Netiquette#Happy_End Auch wenn's so peinlich ist wie zu übersehen, das die Stromschienen des verwendeten Breadboards sedimentiert sind und nur ein paar Brücken gefehlt haben :) PS: Falls ich einfach nur zu ungeduldig war - SORRY
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.