Hallo, Es gibt ja die Datei delay.h. Wie aber kann ich diese Funktionen benutzen. #ifndef AVR_DELAY_H #define AVR_DELAY_H 1 #include <inttypes.h> /* 8-bit count, 3 cycles/loop */ static _inline_ void _delay_loop_1(uint8_t __count) { asm volatile ( "1: dec %0" "\n\t" "brne 1b" : "=r" (__count) : "0" (__count) ); } Ich habe 8MHz und möchte eine Funktion delay_µs() haben. Woher weiß die funktion meinen Quarztakt, und wie bennen ich die Funktion um? (mit Makros??, wenn ja wie geht soetwas) Vielen Dank Spider
Diese Funktion kennt gar keinen Takt, sondern benötigt für einen Druchlauf 3 Zyklen. Bei 8 MHz sind das 0,375µs. Für eine Mikrosekunde ergibt sich also: 1/0,375 = 2,6666... D.h.: Rufst Du _delay_loop_1(2) in Deinem Programm aus, so liegst du immer weit unter dieser Mikrosekunde. Führst Du _delay_loop_1(3) aus, so liegst Du etwas weniger weit über der Mikrosekunde. Falls Du eine Funktion delay_ms verwenden kannst, dann update mal Dein WinAVR. Da ist eine neue delay.h enthalten. Du musst nur vor dem Include der delay.h die Taktfrequenz per #define angeben (genaueres in der avr-libc-Doku).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.