hallo, zeitkritische routinen kann man auch mit
dem programm "AVRdelayloop.exe" ist freeware, berechenen lassen.
man gibt z.b. die mhz an und die zeit z.b. 0,000014 (14us).
dann wird ein kleines asm programm erstellt. dieses kann man
den mit "mfile" unter "Assembler source file(s)" eintragen
und schon hat man als unterprogramm eine routine.
das programm muss die endung "S" haben z.b. "zeit.S".
kann man dann in winavr mit :
extern void zeit14_us(void);
extern void zeit890_us(void);
extern void zeit89_ms(void);
bekanntmachen und mit "zeit89_ms();" z.b. aufrufen.
ein beispiel für die "rc5-send" mit dem programm "AVRdelay" :
Code:
.global zeit14_us
.global zeit890_us
.global zeit89_ms
zeit14_us:
ldi R18, 0x25
WGLOOP0:
dec R18
brne WGLOOP0
nop
ret
zeit890_us:
ldi R18, 0x0A
WGLOOP2:
ldi R19, 0xEC
WGLOOP1:
dec R19
brne WGLOOP1
dec R18
brne WGLOOP2
nop
nop
ret
zeit89_ms:
ldi R18, 0x12
WGLOOP3:
ldi R19, 0x40
WGLOOP4:
ldi R20, 0xCD
WGLOOP5:
dec R20
brne WGLOOP5
dec R19
brne WGLOOP4
dec R18
brne WGLOOP3
ldi R18, 0x03
WGLOOP6:
dec R18
brne WGLOOP6
nop
ret
.end
mfg pebisoft
Lesezeichen