PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ms Messung mit C



grind
25.10.2004, 22:15
Hi,
da ich den internen Timer noch nicht verstehe möchte ich etwas mit delay (also wartezeiten) Basteln. Sagt bitte nich das ich die Timer verstehen lernen soll das mach ich später.

Also wie kann ich eine ms Messung durchführen? Also ich möchte den Befehl delay_ms (wert) benutzen. Wie deklariere ich das oder ist das schon in einer Include Datei enthalten?

Danke schonmal

Grind

darkscout
31.10.2004, 18:00
// 1ms warten bei 16MHz
void waitms(uint16_t ms) {
uint16_t i;

for(i=0; i<ms; i++) {
//delaying 15996 cycles:
asm volatile(
"ldi R17, 0x1F \n\t" \
"L1: \n\t" \
"ldi R18, 0xAB \n\t" \
"L2: \n\t" \
"dec R18 \n\t" \
"brne L2 \n\t" \
"dec R17 \n\t" \
"brne L1 \n\t"
);
}
}


Die funktion verbraucht ca. 16000 Takte was bei 16MHz eine ms sind...