bascom avr: wait + isr ?

Gast #699299
Lesenswert?
• ▲
▼
Hallo,

habe mit bascom avr eine schleife in der alle 1 sekunde (verwendung von 
'wait') etwas ausgegeben wird. Außerdem habe ich einen Timer-Interrupt 
der etwas zählt. Dummerweise stimmt das Ergebnis nicht. Sobald ich 'wait 
1' auskommentiere, ist alles i.O.

In der Doku steht auch, daß 'wait' im Zusammenhang mit Interrupts mit 
Vorsicht zu genießen ist. Kann mir jemand sagen, wie man dieses Problem 
umgeht ?

Danke.
Gast #699904
Lesenswert?
• ▲
▼
"wait" sollte man nur für die allererste Blinkschaltung ausprobieren und 
dann schnell wieder vergessen, weil der Controller in dieser Zeit nichts 
anderes macht, als warten.
In der Regel muss man mit einem µController aber Taster abfragen, 
Display bedienen, Analogwerte messen usw.
Wärend der Wartezeit macht er das aber nicht.
Gast #699920
Lesenswert?
• ▲
▼
Normalerweiser werden beim Auslösen eines Interrupts doch alle 
"Aufgaben" unterbrochen, die ISR abgearbeitet, und wieder fortgesetzt. 
Es sei denn, "wait" deaktiviert alle Interrupts. Weiß jemand, wie die 
bascom avr "wait" routine diesbezüglich arbeitet?
Gast #700285
Lesenswert?
• ▲
▼
Solche Ergebnisse kann ich bestätigen,
irgendwo bastelt Bascom immer wieder
nen disable interrupts in den hex-file
wofür der Compiler das macht hängt mir
auch zu hoch.
Ich habs dann mal so gelöst, dass ich
eine Schleife laufen lies, die 200-mal
50ms gewartet hat.
(Befehl: waitms)
Ist nicht besonders schön, aber funktionierte.
Ja, Bascom funktioniert zwar grundsätzlich,
aber mitunter sind die Ergebnisse nicht ganz das,
was man erwartet (nur am Rande, ich arbeite viel
und oft unter Bascom).
Gast #700501
Lesenswert?
• ▲
▼
@bas_ratte
Kannst Du das mal ein wenig genauer ausführen oder willst Du nur Leute 
auf eine Seite lotsen, auf der es von Pop-ups nur so wimmelt?

Hochachtungsvoll
Herbert von Caravan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren