Forum: Mikrocontroller und Digitale Elektronik Wartefunktion AT90CAN128


von Christoph R. (nexor)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

#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.

von Christoph R. (nexor)


Lesenswert?

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
Noch kein Account? Hier anmelden.