Forum: Mikrocontroller und Digitale Elektronik Problem mit ATmega32


von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

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:
µC <> Taster <> +5V
10k gegen Masse als Pulldown (im Plan noch 100k)
100n gegen Masse.



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 (an 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!?

von holger (Gast)


Lesenswert?

>Hat einer von euch eine Idee, wo da nun der Wurm drin ist!?

Mach die 100n an den Tastern weg.

von Daniel (Gast)


Lesenswert?

Okay, kann das nun gerade nicht ausprobieren, da ich nicht zu hause bin.
Wie kann man das elektrisch begründen, wenn sich damit mein Problem in 
Luft auflöst? :)

von Max H. (hartl192)


Lesenswert?

Daniel schrieb:
> Wie kann man das elektrisch begründen, wenn sich damit mein Problem in
> Luft auflöst? :)
Die Kondensatoren werden durch den parallelen Widerstand auf 0 Volt 
entladen. Den Kondensator wirkt bis er geladen ist, wie ein Kurzschluss. 
Wenn du den Taster drückst schließt du für kurze Zeit dein +5V kurz.

von wo ist mobby nur (Gast)


Lesenswert?

M o b b y, wo bist du???

Anstatt in den ARM threads zu trollen, solltest du hier helfen. Aber du 
hast weder vom ARM noch vom AVR die leiseste Ahnung. Armer Mobby. :'(

von Kurzschluss (Gast)


Lesenswert?

Warum nutzt du nicht die internen Widerstände vom Controller? Leg die 
Kondensatoren parallel zum Taster und nicht in Reihe. Warum? Siehe 
http://www.mikrocontroller.net/articles/Entprellung#Prellfreie_Schalter

Es schadet nicht ein paar Kondensatoren zum Stützen der Versorgung auf 
der Platine zu verteilen. Obst bricht die Spannung noch an deren Stellen 
zusammen.

von Daniel (Gast)


Lesenswert?

Guten Morgen,

ich habe gerade euren Vorschlag ausprobiert und die 100n´s entfernt. 
Leider ohne Erfolg.

Ich habe noch nie die internen Widerstände verwendet, warum weiß ich 
auch nicht. Hat sich damals so ergeben, und diese "Angewhnheit" sitzt 
nun drin. Bisher gab es damit auch nie Schwierigkeiten.

Eine andere Spannungsversorgung habe ich auch schon dran gehängt, jedoch 
brachte das auch nichts.

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
Noch kein Account? Hier anmelden.