Moin zusammen,
seit Freitag habe ich mein eigenes µC-Versuchsboard fertig. Kleine Info zur Hardware (die Probleme macht):
An PB0 - PB4 habe ich jeweils einen Taster angeschlossen ->
Diese sind nach folgendem Schema angeschlossen ->
R = 100K und C = 100n.
In der Software habe ich die Taster in der main.h bequemerweise vordefiniert -> #define Taster_1 (PINB & (1 << PB0)) usw... bis PB5
Die Eingänge sind (ich weiß nicht genau, ob das überhaupt nötig ist), nochmals als Eingang definiert -> DDRB &= ~((1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3) | (1 << DDB5));
Nun hat sich folgendes Phänomen ergeben: Wenn ich die Tasten drücke (egal welchen), soll in meinem Beispiel-Code lediglich ein Relais anziehen.
Das geht auch. Jedoch hatte ich spaßeshalber in der int(main) einfach ganz am Anfang ein Relais anziehen lassen und nach 2 Sekunden wieder abfallen lassen, bevor es in die while(1) geht...
Wenn ich nun den Taster drücke, geht das entsprechende (andere) Relais ein. Dies geht auch ein paar Mal gut. Jedoch scheint dann irgendwann der Controller dann wieder vorn vorne anzufangen, sprich das Relais aus der int(main) geht wieder für 2 Sekunden an und anschließend aus.
Das ist mit allen 5 Tastern der Fall. Nun habe ich zum Testen einen anderen Taster (PC7) angeschlossen und entsprechend wie die anderen Taster konfiguriert: Dieser ist ohne Pull-Down-Widerstand und Kondensator beschaltet. Egal wie häufig ich diesen drücke, das Relais, was nur einmal anziehen soll (aus der int(main) ) zieht nicht an, sprich der Controller scheint sich damit nicht zu resetten.
Die Pegel an allen Tastern (auch dem "Test"-Taster sehen gut aus, die habe ich mit einem Scope nachgemessen. Der High-PEgel am Reset-Eingang des Mega32 ändert sich auch nicht, wenn das Relais wieder anzieht, obwohl es gar nicht anziehen soll.
Hat einer von euch eine Idee, wo da nun der Wurm drin ist!?
Hier ist noch einmal der Mini-Coder zur Veranschaulichung und der Schaltplan des gesamten Boards...
Geändert von daniel031287 (27.04.2014 um 19:12 Uhr)
Lesezeichen