Forum: Mikrocontroller und Digitale Elektronik Flanken Reaktion


von TIM (Gast)


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

von crazy horse (Gast)


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.

von TIM (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.