Tmer0 Probleme beim ATTiny2313 C-Code

OP #1970021
Lesenswert?
• ▲
▼
Hallo.

Ich habe ein Problem mit dem Timer0 im ATTiny2313.

Folgendes möchte ich erreichen. Das Programm soll auf eine externe 
Information (HI Eingang auf PINB6) warten. Kommt dieser in einem 
Zeitfenster von ca. 2 Sekunden nicht, wird die Unterfunktion verlassen 
und spring wieder in main() zurück.
Meine Lösung: Timer Interrupt ändert den Wert einer globalen Variablen 
und die While Schleife pollt auf dieser Varaiblen oder abereben auf den 
zu erwartenden ext. Input.

Nur leider funktioniert das so nicht. Durch eine gelbe LED überprüfe ich 
den ISR. Somit müsste auch die globale Variable geändert werden. Aber 
die entprechende While Schleife wird nicht verlassen.

Habe ich da irgendeinen Denkfehler?

Schon mal vorab... Vielen Dank für Eure Beiträge.

Gruß
RaBu
Angehängte Dateien:
OP #1970798
Lesenswert?
• ▲
▼
Stefan B. schrieb:
> Da ist ein Logikfehler drin
>
>>  while ( !( PINB&(1<<PB6)) || time_over_01 != 0x01 );
> Warten so lange wie LOW an PB6 UND kein 2s Timeout aufgetreten ist.
>   while ( PINB & (1<<PB6) == 0 && time_over_01 != 0x01 );

Hi.
Die Logik muss ein ODER sein.
Solage an PB6 kein HI anliegt ODER
kein timeout aufgetreten ist verbleibt der uc in der Schleife.

Kommt der HI Pegel vor ablauf des timeouts gehts weiter, ansonsten gehts 
weiter, wenn ca 2s abgelaufen sind.

Grundsätzlich möchte ich verhindern, dass der uc in der while() 
verbleibt.
OP #1970837
Lesenswert?
• ▲
▼
Stefan B. schrieb:
> Da ist ein Logikfehler drin
>
>>  while ( !( PINB&(1<<PB6)) || time_over_01 != 0x01 );
> Warten so lange wie LOW an PB6 UND kein 2s Timeout aufgetreten ist.
>   while ( PINB & (1<<PB6) == 0 && time_over_01 != 0x01 );

Hi,
so ist das schon mal mit der Logik... hätte vorher mal überlegen sollen 
:-)

while ( PINB & (1<<PB6) == 0 && time_over_01 != 0x01 );

sollte auch funktionieren! Werde es nachher mal testen.

Gruß
Ralf

Antwort schreiben

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.

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.