hallo, ich wollte mit dem avrstudio dieses programm testen. wenn ich den breakpoint setzen möchte, geht nur bei der delay_ms , nicht bei der delay_us. wenn ich ihn bei delay_us setzen will , springt er automatisch zu nächsten delay_ms? die delay.c habe ich mit in der makefile eingebaut: SRC = $(TARGET).c delay.c warum das? #include <avr/io.h> #include "delay.h" int main(void) { delay_us(1); delay_us(7); delay_us(8); delay_ms(3); delay_ms(14); } die delay.h : #include <avr/io.h> static inline void delayloop16(uint16_t count) { asm volatile ( "cp %A0,__zero_reg__ \n\t" \ "cpc %B0,__zero_reg__ \n\t" \ "breq L_Exit_%= \n\t" \ "L_LOOP_%=: \n\t" \ "sbiw %0,1 \n\t" \ "brne L_LOOP_%= \n\t" \ "L_Exit_%=: \n\t" \ : "=w" (count) : "0" (count) ); } #define delay_us_conv(us) ((uint16_t)(((((us)*1000l)/(1000000000/F_CPU))-1)/4)) #define delay_us(us) delayloop16(delay_us_conv(us)) void delayloop32( uint32_t l); // not inline #define delay_ms_conv(ms) ( (uint32_t) (ms*(F_CPU/6000l)) ) #define delay_ms(ms) delayloop32(delay_ms_conv(ms)) die delay.c : #include "delay.h" void delayloop32(uint32_t loops) { _asm_ volatile ( "cp %A0,__zero_reg__ \n\t" \ "cpc %B0,__zero_reg__ \n\t" \ "cpc %C0,__zero_reg__ \n\t" \ "cpc %D0,__zero_reg__ \n\t" \ "breq L_Exit_%= \n\t" \ "L_LOOP_%=: \n\t" \ "subi %A0,1 \n\t" \ "sbci %B0,0 \n\t" \ "sbci %C0,0 \n\t" \ "sbci %D0,0 \n\t" \ "brne L_LOOP_%= \n\t" \ "L_Exit_%=: \n\t" \ : "=w" (loops) \ : "0" (loops) \ ); \ return; }
Erstens kann AVRStudio von Haus aus kein C. Du hast also vermutlich den WINAVR installiert. Schön, und was gibt es bei der Nutzung von WINAVR für einen Grund, irgendwelche selbst zusammengestückelten delay-Funktionen zu benutzen und nicht die in der util/delay.h vorhandenen? Abgesehen davon: Es ist bekannt, dass es Probleme mit dem Simulieren der delay-Funktionen gibt...
1. ich habe es als cof vorliegen, wie man es mit dem mfile festlegen kann, welches debugformat für welches avr-studio läuft. 2. wenn ich die delay_us rausnehme, läuft der debug-modus super mit den zu erwarteten zeiten. 3. diese delay ist aus den heiligen hallen hier von euren besten starprogger. 4. dieses kann ich nicht bestätigen, meine delay-zeiten laufen alle zur zufriedenheit. ....Es ist bekannt, dass es Probleme mit dem Simulieren der delay-Funktionen gibt... mfg
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.