Mein neuestes Problem: Ich habe Taster an meinem Mega. Zwischen VCC und Pin am Mega hängt ein 10k Widerstand. Der Taster zieht den Pin auf Masse. Trocken funktioniert das. Im Einsatz am Fahrzeug springt das Ding ständig ins Menu und im Menu umher sobald die Taster angeschlossen sind. Wenn ich sie abklemme (sodass nur noch VCC-R-Pin verbunden ist), dann ist das Phänomen aus der Welt. Versteh ich nicht so recht darum frage ich. Der Taster ist halt mit dem Pin und Masse verbunden. Der kann ja schlecht einen Masseschluss mit der Luft hinbekommen, oder? Das nächste Problem: Ich möchte gerne im Eeprom speicher, wenn die Spannung einbricht. Dieser Interrupt wird aber nicht ausgelöst, wenn man den Netzstecker zieht. Dafür jedoch im Einsatz (am Netzteil bleibts ruhig) am Fahrzeug ununterbrochen. Im Endeffekt ist das so verdrahtet: VCC- Diode - 470u C - Atmega Pin3 | Diode | 10u C - Displaybeleuchtung etc. | Atmega Pin4 Wenn ich nicht pratschjeck bin, dann sollte doch der 10u C ruckzuck leer sein und die Kapazität des 470u C´s locker reichen um noch eben den Interrupt abzuarbeiten? Dann mach ichs software-seitig mal wieder falsch. Macht diese Zeile, was ich will oder ist sie die Wurzel allen übels? ACSR = (0<< ACD) | (0<<ACBG) | (1 << ACIE) | (1 << ACIS1) | (0 << ACIS0);
zu Problem1: bei laufendem Motor? dei Vibrationen werden die Taster irgendwie betätigen.
zu2 0 verschieben und dann oder-verknüpfen hat keinen effekt. x | 1 = 1 x | 0 = x x & 0 = 0
zu hoher Pullup-Widerstand? am 10u- Kondi solltest du noch ein Widerstand nach Masse machen, damit dieser auch ein wenig belastet wird z.B. 10k Bedenke, dass im Auto (bei laufendem Motor) nicht unbedingt das angenehmste EMV-Klima herrscht. Da sind schon einige Massnahmen zu treffen...
J. K. wrote: > zu2 > > 0 verschieben und dann oder-verknüpfen hat keinen effekt. Das ist wahrscheinlich so gedacht, damit man bei einer Änderung nur 1 reinschreiben kann. Also gezielt so geschrieben. Mach ich manchmal auch...
Das kann ich mir nicht so recht vorstellen da die Taster doch einiges an Druck verlangen. Ich habe das grad mal mit dem Messgerät probiert und die Kontakte schließen erst ganz am Ende des Federwegs. Keiner eine Idee hierzu:? //set ac for power loose interrupt ACSR = (1 << ACIE) | (1 << ACIS1);
Hi Wie erzeugst du deine Versorgungsspannung im Auto? MfG Spess
Das sind Funkstörungen, die durch die Zündanlage und andere elektrische Geräte (Ventilatoren) hervorgerufen werden und auf das (lange) Tasterkabel wirken. Du kannst a) den Tasterpin am Controller zusätzlich mit 100nF nach Masse abblocken und b) eine Software-Filterung am Tastenpin vornehmen. Siehe dazu auch Peter Danneggers Entprellung in der Codsammlung.
Das mit dem Widerstand hats nicht gebracht. Hat mich aber drauf gebracht, dass eine der angeschloßenen Meßschaltungen die Schuld trägt. Wenn ich Sie abhänge, dann wird der Interrupt nicht mehr ständig ausgelöst. Ob er das im richtigen Moment tut, muss ich noch testen. Das mit der Software-Entprellung schau ich mir mal an. Kann man ja in den bereits vorhandenen Debounce-Code einbinden. Ansonsten löt ich halt noch nen Kondensator ein. Hab ausreichend herumfliegen ;)
Du kannst aber auch externe Ziehwiderstände von 4,7 Kiloohm von den Eingängen nach +Ub vorsehen. Die internen Ziehwiderstände sind oft zu hochohmig, um bei "langen Strippen" draußen dran immer einen vernünftigen H_Pegel zu erzeugen. MfG Paul
...also den 10k gegen einen 4,7 tauschen? intern habe ich gar nicht aktiviert...
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.