www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega8 Reset bei SIGNAL()


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will einen Dimmer bauen. Dafür teste ich gerade meine
Nulldurchgangskennung. Die Hardware scheint soweit zu funktionieren,
aber ich habe ein Problem bei der Auswertung im AVR.

Ich habe folgenden Code:

...
static volatile uint_8t k;

SIGNAL(SIG_INTERRUPT0)
{
  k++;
  if (k==100)
    {k=0;}
  if (k<50)
    {sbi(PORTC,PC5);}
  else
    {cbi(PORTC,PC5);}

}

...

und in main():

...
sbi(DDRC,PC5);
sbi(DDRC,PC4);
sbi(MCUCR,ISC01);
cbi(MCUCR,ISC00);
enable_external_int (1<<INT0);
asm volatile ("sei");
...

Mit anderen Worten: es soll auf die fallende Flanke getriggert werden,
eine LED an PORTC5 soll sichtbar blinken.

Nun, das tut sie nicht. Sie leuchtet. Jetzt habe ich durch verschiedene
Versuche herausbekommen, dass der AVR sich resetet, wenn ich die
SIGNAL() Funktion durchlaufen lasse. Also, wenn ich das "sei" oder
das enable_external_int herausnehme, tut der AVR was er soll. Eine
SIGNAL(__vector_default) Funktion ist ebenfalls vorhanden.

Was hab ich noch alles beachtet? Abblockkondensatoren sind da, ich habe
alle GND und Vcc / AVcc beschaltet, das sollte es also nicht sein.

Was hab ich noch übersehen?

Danke,
s

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bis 100 zu zählen, dürfte nicht reichen. Die On-Time bei angenommenen
1MHz Takt beträgt nur ca. 700µs. Deine LED blinkt, nur eben so schnell
das du es nicht wahrnehmen kannst. Hast du ein Scope um das zu testen
?

Thorsten

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thorsten,

an Int0 liegt ein Rechtecksignal mit 50 Hz. (Habe zwar kein Scope, um
es mir anzusehen, aber das stimmt schon.) Ist Netzfrequenz über
Optokoppler und Schmitt-Trigger.
Also, an der 100 wird es nicht liegen.

Gleichzeitig mache ich folgendes: Nach dem Einschalten der Spannung
lasse ich eine LED an PORTC4 im Hauptprogramm für ein paar Sekunden
leuchten. Dann geht sie aus.

Nein, dann soll sie ausgehen. Sie tut es nur, wenn ich "sei"
rausnehme. Lasse ich das sei drin, leuchtet sie immer weiter.
Allerdings nicht ganz hell. Daher stammt meine Vermutung, dass der AVR
sich resetet.

Gruß,
s

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.