mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Flanken Reaktion


Autor: TIM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Versuche gerad ein Programm zu erstellen, welches nur auf steiegende 
Flanken reagiert, aber ohne Interrupts. Ich habe in etwa so etwas 
vorgestellt.

//Watchdog

while(PIND.3 = ~ PIND.3)
{
....
};

also er sollte nur auf Flanken des PIND 3 achten.
Funktioniert so etwas prinzipiell???

Gruß TIM

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nö, zumindest nicht sicher.
Die while-Schleife beinhaltet ja neben dem Vergleich einen Sprung. Und 
wenn nach dem 1.Vergleich, aber vor dem 2.Vergleich sich der Zustand 
ändert, bommst du es nicht mit.
AUsserdem ist der =Operator hier fehl am Platze.
Ehe wir uns den Kopf weiter zerbrechen, solltest du mal  kurz darlegen, 
waruum keinen Interrupt? Die sind nämlich dafür da, auf Ereignisse zu 
reagieren, statt den armen MC ständig im Kreis zu schicken und damit zu 
blockieren.

Autor: TIM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja also unter umständen kann ich`s auch mit interrupts machen. Ich 
wollte Daten (1 oder 0) über PIND2 einlesen aber nur bei einer 
steigenden Flanke von PIND3. Habs gerad mit Interrupt porbiert, aber ich 
glaub das problem liegt hier beim Array das ich nutze

hier mal mein interrupt
-------------------------
interrupt [EXT_INT1] void ext_int1_isr(void)
{
index++;
if(PIND &(1<<2))
zeichen[index]='I';
if (!(PIND &(1<<2)));
zeichen[index]='O';
}

Freigeschaltet ist die Routine auch. Wenn nun der index 52 erreicht 
sollen die Daten per UART ausgegeben werden
In etwa so
---------------------
for (i=1;i==52;i++)
                 {
                    if (UCSRA &(1<<5))
                        {
                        putchar(zeichen[i]);
                        delay_ms(50);
                        }
                 }

diese For Schleife steht aber im Main-Teil. Achso  "zeichen" und "index" 
sind natürlich global

Nutze den Tiny2313+ STK500 bei 16MHz + Codevision.

Danke schon mal für die schnelle Antwort

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.