delay-Funktion in WINARM?

Gast #586024
Lesenswert?

Die in WinARM enthaltene libc ist die newlib und enthält kein 
"vorgekautes" delay wie die delay.h von avr-libc. Die Anzahl der 
Durchläufe für "Zeitverbrennschleifen" sind aufgrund der verschiedenen 
unterstützten Controller nicht einfach zu errechnen, da nicht nur von 
Prozessortakt sondern auch vom Speicherinface abhängig (Waitstates für 
RAM und/oder Flash, Bus-Takt(e), evtl. MAM etc.). Fertige "lib oder so" 
kann man bestenfalls für sehr ähnliche Controller erstellen.
Alternativen:
- selbstgeschriebene Zeitschleifen mit Oszilloskop ausmessen (ziemliches 
gebastel, kaum portabel, relativ einfach)
- Bei Startup mit einem Hardwaretimer einen Kalibrierungswert ermitteln 
und später Anzahl der Schleifendurchläufe damit errechnen (schon besser, 
nicht wirklich kompliziert)
- Einen Hardwaretimer stetig laufen lassen und alle Wartefunktionen 
durch Vergleich mit einer in der Timer-ISR aktualisierten Variable oder 
dem Counter-Register selbst mit einem Startwert durchführen (beste 
Lösung, nicht kompliziert und zuverlässig)

Martin Thomas

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