Hallo, hatte vor einiger Zeit mal ein ähnliches Problem geschildert aber ich kam zu keinem Ergebnis. Hier mal eine genaue Beschreibung. Hoffe jemand kann helfen. Also das Problem ist folgendes: simples Taster Abfrage Programm, wo z.B. eine LED leuchten soll, wenn ein Taster gedrückt ist. Das Problem: immer wenn ein Taster gedrückt ist verhält sich der atmega so als ob man Reset drücken würdest und schaltet sich komplett ab. lässt man den Schalter los, so läuft alles wieder aber das Programm laeuft von neu ab. Was ich bis jetzt gemacht habe: -> man denkt zuerst an einen falsch definierten interrupt. Aber habe alles mal für den Port (PIN: PE6 = INT6) in die ISR geschrieben hat immer noch nicht funktioniert. Habe dann mit cli(); alle Interrupts ausgeschaltet. Problem blieb unverändert. -> habe dann ein einfaches Programm wie dies hier geschrieben (ohne jegliche Interrupts) zum Taster abfragen: #include "main.h" int main (void){ DDRE &= ~(1<<PE6); while(1){ if ( PINE & (1<<PINE6)) { Debug("Test1); } else { Debug("Test2); } } return 0; } // main Problem gleich geblieben!!! ->habe es an Port PE7 probiert. Gleiches problem. ->habe neuen Schalter benutzt und ihn an den nicht Interrupt fähigen Port PC2 probiert. Immer noch nix!!! -> habe in das Forum avrfreaks.net geschrieben. Alle denken da an Interrupts aber irgendwie glaube ich nicht mehr daran... Naja jetzt weiss ich nicht mehr weiter. Hast jemand vielleicht eine Idee was ich mal probieren sollte? Vielen Dank Alex
ersetze mal "if ( PINE & (1<<PINE6))" durch "if ((PINE>>PINE6) & 1)"
dann ist noch die frage wie dein taster schaltet. schaltet er den PIN auf +5V oder gegen GND? Falls gegen GND dann musst du noch die Pullups aktivieren mit "PORTE |= (1<<PE6)"
...oder verursacht Dein Taster gar einen Kurzschluss der Betriebsspannung? (Das kann auch im Sekundenbruchteilbereich der Fall sein, falls Du irgendwie einen Kondensator ungeschickt zum entprellen geschaltet hast.) Bitte sende einmal Deine Schaltung! Gruß, Michael
Hallo, @eRookie: benutze externen Pullup (10kOhm) @Michael: hier ein Schaltbild meiner Taster. S1 geht auf PE6 uns S2 auf PE7. Alex
nochmal @rooki: habe die If Abfrage geädert... war ein Versuch wert ;-) Danke Alex
der mega128 wird standardmäßig im mega103 kompatibilitätsmodus verschickt. daran schonmal gedacht? stolpern viele drüber beim mega128. weis zwar net obs jetzt dein problem auch betrifft, nur mal so ne idee. evtl. halt fusebits entsprechend setzen
Sehr merkwürdig... habe gerade mal mit einem 3,3 kOhm Widerstand probiert statt einem 10kOhm ... und alles klappt wunderbar. Ich dachte 10 kOhm wäre standard? Grüße Alex
10k muss auch gehen. überprüf nochmal ob es wirklich 10k waren und nicht 10R oder sonstwas...
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.