Avr zeitproblem - atmega16 zu langsam

Gast #2171649
Lesenswert?

Hallo leute!

Ich habe folgendes problem:
Ich habe dn c code von dirk uffmann, einen kalman filter für einen 
balancierroboter (http://home.arcor.de/uffmann/ARTIST2.htm) auf einen 
atmega16 programmiert.
Ich verwende das selbe system(avrstudio mit winavr) und habe die selben 
fuses programmiert. Ich verwende die selbe taktfrequenz, doch das 
programm läuft irgendwie zu langsam.
Genauer: im programm ist eine schleife, die mit 4,1 ms, also mit 244 hz 
ausgeführt.
Mein controller braucht aus irgendeinem grund 3 mal so lang wie er 
sollte.
Bei Dirk uffmann war zuerst auch das problem, dass das Programm 3x so 
lang gedauert hat, dann ist er draufgekommen, dass er im makefile die 
math library nicht verlinkt hat, dann hat es geklappt mit den 4,1ms.
Ich habe jetzt sogar probiert das selbe makefile wie Dirk zu verwenden, 
bekomme aber immer das selbe ergebnis. Wenn ich in diesem makefile das
 -lm bei LDFLAGS
 entferne, ändert sich nichts, das ist sehr komisch. Ich glaube da 
funktioniett irgendwas noch nicht mit dem linken der math.h, aber keine 
ahnung wieso.
Wenn ich eine verzögerungs-routine aufrufe, wird diese aber richtig 
ausgeführt...also eine warteschleife zu 1ms dauert auch 1ms...
Weis jemand rat?

Vielen Dank

Schöne Grüße.   Alex
#2171690
Lesenswert?

@  Alexander Sellemond (Gast)

>Mein controller braucht aus irgendeinem grund 3 mal so lang wie er
>sollte.

Vielleicht falsche Taktquelle eingestellt, siehe AVR-Fuses.

>lang gedauert hat, dann ist er draufgekommen, dass er im makefile die
>math library nicht verlinkt hat, dann hat es geklappt mit den 4,1ms.

Naja, braucht man WIRKLICH FLießkomme? Oder reicht hier 
Festkommaarithmetik, das sollte deutlich schneller sein.

>Ich habe jetzt sogar probiert das selbe makefile wie Dirk zu verwenden,
>bekomme aber immer das selbe ergebnis. Wenn ich in diesem makefile das
> -lm bei LDFLAGS

Warum wurscheltst du da manuell im makefile rum? Leg ein normales 
Projekt im AVR-Studio an, das verwaltet für 99% aller Projekt das besser 
als du.

>Wenn ich eine verzögerungs-routine aufrufe, wird diese aber richtig
>ausgeführt...also eine warteschleife zu 1ms dauert auch 1ms...

Optimierungstufe richtig eingestellt?

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren