www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmega128: Eingänge spinnen


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: eRookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ersetze mal
"if ( PINE & (1<<PINE6))"
durch
"if ((PINE>>PINE6) & 1)"

Autor: eRookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)"

Autor: sous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...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

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@eRookie: benutze externen Pullup (10kOhm)

@Michael: hier ein Schaltbild meiner Taster.
S1 geht auf PE6 uns S2 auf PE7.

Alex

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal @rooki:
habe die If Abfrage geädert...
war ein Versuch wert ;-)

Danke Alex

Autor: eRookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: eRookie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
10k muss auch gehen. überprüf nochmal ob es wirklich 10k waren und nicht
10R oder sonstwas...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.