Taster an PortE arbeitet wie RESET?!?!

Gast #271656
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
Angehängte Dateien:
Gast #271661
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

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.