Timer Interrupt und sprintf mit float

OP #1993323
Lesenswert?

Hallo,

ich habe gerade ein schönes Problem entdeckt:

AT32UC3A0512 auf eigener Hardware funktioniert wunderbar. Nun habe ich 
eine neue Aufgabe für das gute Stück.
Ein Timer taktet mir ein 4,4kHz Clock Signal.
Durch Abfrage von einem Flag werden die Datenbits synchronisiert.
Bei jedem 128. Takt wird eine AD-Wandlung gestartet.
Den Wert dieser wandlung gebe ich der einfachen Lesbarkeit halber in 
Volt umgerechnet als float auf die serielle Schnittstelle.

Leider blieb des alles nach einem Durchlauf hängen.
Nach etlicher Sucherei bin ich nun drauf gekommen dass der 
Timer-Interrupt nicht mehr ausgelöst wird obwohl der Timer noch schön 
taktet.

Weiter gesucht und ich kann nun sagen, dass es bei sprintf hakt.
Genauer gesagt folgende Zeile:
1
sprintf(cText ," %+03.3f", Flow);

Sieht harmlos aus, aber sobald die ausgeführt wurde geht mir der 
Timer-Interrupt flöten.

Soweit bin ich mit der Fehlersuche gekommen und nun weiss ich nimmer 
weiter :/
Bei den Bibliotheksfunktionen kenn ich mich garnet aus, leider.

Ich hab AVR32 Studio Version: 2.5.0 und bisher auch keine Probleme 
gehabt.

Hat irgendwer schonmal ein ähnliches Problem gehabt, oder eine Idee was 
da schieflaufen könnte.

Bin für jeden Hinweis dankbar!!
#1993357
Lesenswert?

Bob A. schrieb:
> Das ist ziemlich viel...
> Was darf's denn genau sein? Hast du schon einen Verdacht wo ich 'en
> Bockmist eingebaut haben könnte?

Nein, eben nicht.
Der kann überall stecken. Angefangen damit dass dein cText zu klein 
dimensioniert ist.

Das eigentliche Problem kann aber auch ein ganz anderes sein und was du 
siehst sind nur die Symptome, haben aber mit der Ursache an sich gar 
nichts zu tun.

Alles ist möglich.
Gast #1993360
Lesenswert?

>Das ist ziemlich viel...
Dann nimm alles aus dem Code raus, was nicht notwendig ist um den Fehler 
auszulösen. Reduziere ihn also Schritt für Schritt. Wenn der Fehler 
nicht mehr auftritt, darfst Du das Codestück nicht entfernen.

Aber ich habe da so einen Verdacht: Du rufst nicht zufällig im Interrupt 
printf auf?
OP #1994478
Lesenswert?

Da scheint was anderes mir reinzufunken...
Immer wieder mal fehlt der Interrupt. Einmal war es die 
sprintf-Zuweisung, einmal der Zugriff auf SPI, einiges konnte ich gar 
nich ausmachen was schuld war...

Deutet alles daraufhin dass ich das Projekt einstampf und komplett neu 
beginnen muss...
Och menno, keine Lust! :/

Trotzdem Danke für Eure Hilfe!
#1994500
Lesenswert?

@  Bob A. (strippenzieher)

>Deutet alles daraufhin dass ich das Projekt einstampf und komplett neu
>beginnen muss...

Das muss man manchmal. Ein vermurkstes Konzept retten zu wollen ist 
meist aufwändiger und mit schlechterem Ergebnis als alles neu zu machen. 
Da kann man die gewonnenen Erkenntnisse einfliessen lassen und Altlasten 
abwerfen.

MFG
Falk

P S Sag doch einfach mal, was das insgesamt werden soll, dann kann man 
dir deutlich besser helfen, siehe Netiquette.

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