www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster an PortE arbeitet wie RESET?!?!


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

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe bei einem Atmega128 den PortE mit 2 Tastern beschaltet (siehe
Skizze: S1 auf PE6 und S2 auf PE5). Dann führe ich den simplen C Code :


#include "main.h"

int main(void) {
while (1)
 {
  DDRC = 0xff;   //PortC als Ausgang
  PORTC = 0x00;  //alle LEDs an PortC anmachen
 }

  return 0;
}

Das Problem das ich nun habe ist folgendes:  Sobald ich einen dieser
Schalter berühre schaltet sich der Atmega aus, alles LEDs gehen aus und
nichts funktioniert mehr (wie beim RESET). Und dies obwohl im Programm
PortE, wo ja die Schalter dran sind, gar nicht vor kommt!
Dieses Problem bleibt weiterhin sogar bestehen wenn ich PortE als
Ausgang schalte mit
DDRE = 0xff;

Das kann ja irgendwie nicht sein??? Weiß jemand meinen Fehler? Ist da
vielleicht bei meinem Schalter Anschluß etwas nicht in Ordnung (siehe
Bild)?


Vielen Dank

Alex

Autor: Stefan_h (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wie groß sind deine beiden Widerstände. Sollten so bei 10kOhm liegen.

lg,

Stefan

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe auch schon dran gedacht.
Ja aber haben beide  leider genau 10 kOhm.

Fällt Dir vieleicht noch etwas ein?
Komisch das er Resetet?!

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welchen Pin genau?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ulrich,


Schalter S1 ist auf PE6 also PIN Nr.8 (INT6) geschaltet und Schalter S2
auf PE5 also PIN Nr.7 (INT5).


Grüße Alex

Autor: Kai Markus Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, bin jetzt nicht so firm mit den speziellen
Eigenheiten vom Mega128, aber könnte es sein, daß durch die Taster ein
entsprechender Interrupt ausgelöst wird? Weil aber keine
Interrupt-Service-Routine definiert ist, führt der AVR dann einen Reset
durch?!?

Bin mir nicht sicher, aber ist es nicht auch so, daß
ein eingeschalteter (sprich: nicht maskierter) Interrupt
auf externe Signale das DDRE-Register überlagert?

Wäre mal interessant zu wissen, was passiert, wenn Du
die Interrupts sperrst, ob dann der Fehler auch noch auftritt.
Oder alternativ mal eine ISR-Routine ins Programm einbauen, die
eine eindeutige Meldung ausgibt (wie z.B. "Finger weg von Taster 1"
oder so... :-). Dadurch solltest Du dem Problem schnell auf die
Schliche kommen.

Viele Grüße
Kai Markus

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.