Hallo, ich benutze eine Wartefunktion die folgendermaßen aussieht: #ifndef F_CPU #define F_CPU 16000000UL #endif #include<util/delay.h> .... void long_delay(int ms){for (; ms>0; ms--) _delay_ms(1);} .... long_delay(1000); .... Bei meinem Atmega8515 hat sie tadellos funktioniert. (Werte wurden auf den Qaurz angepasst). Jetzt benutze ich eine AT90CAN128. Es ist ein 16Mhz Quarz verbaut. Aber egal wie oft er die Schleife durchläuft, die Signale sind nicht nachvollziehbar. Er läuft viel zu schnell. Brauche ich hier einen Timer oder eine andere Wartefunktion? Programmiert wird in C und im AVR Studio 4. Schöne Grüße Christoph
#ifndef F_CPU #define F_CPU 16000000UL #endif ist nur wirksam, wenn du sonst wo (Projekteinstellungen, Makefile, andere Includefiles) keine Definition von F_CPU hast. Wenn sonst wo eine F_CPU Definition mit weniger als 16 MHz steht, ist das beobachtete Verhalten nachvollziehbar.
Wie kriege ich es hin das er länger wartet? So dass ich auch genau die Zeit berechnen kann? Und ich habe gelesen das ich mit dem JTAG adapter das Programm Schritt für Schritt ablaufen lassen kann. Wie funktioniert das?
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.