Hallo, ich bin am Verzweifeln! Ich habe für einen Tiny 13 ein "banales Programm"geschrieben aber anscheinend bin ich zu blöd um es zum laufen zu bringen!!! (Siehe Anhang)! Ich werwende das Avr Studio und gcc "1.6.2" Die Fuse habe ich auf 9,6MHz gestellt ! Wenn ich das Program mit -Os kompilliere dan stimmt die geschwindikeit des Runleds exakt aber der rest des Programs sprich zeitverzögerung laüt nicht mehr !! wenn ich hingegen mit -O0 kompillire stimmt die Zeit nicht überein aber der rest laäft !! Der ADC läüft nie (möchte 0 bis 5 V einlesen ) wäre sehr nett wenn sich jemand den Code ansehen würde und mir sagen könnte was ich falsch mache !!! Vielen Dank Gruß Pier
Will man wirklich regelmässige Interrupt-Zeiten, dann sollte man den Timer im CTC Modus fahren. Sonst ist die Laufzeit des Handlers teilweise mit drin. Und die hängt vom Optimierungsgrad ab. Und wenn du Pech hast, macht er einen Teil der Fliesskommarechnung + Integer-Umwandlung ohne Optimierung zur Laufzeit.
> return(ADC); return ist keine Funktion. Der Operand von return wird nicht in Klammern eingeschlossen (auch wenn es trotzdem funktioniert). > ADMUX &= 0b01100000; // Untere Bits löschen Das steht im Artikel Bitmanipulation, wie man das besser (lesbarer) macht.
Pier S. wrote: > Wenn ich das Program mit -Os kompilliere dan stimmt die geschwindikeit > des Runleds exakt aber der rest des Programs sprich zeitverzögerung laüt > nicht mehr !! > wenn ich hingegen mit -O0 kompillire stimmt die Zeit nicht überein aber > der rest laäft !! Dürfte das volatile Problem sein. Mach mal Variablen, die in Main und Interrupts benutzt werden, volatile. Peter
1 | |
Lösch besser den Kommentar, denn 0 110 0000 löscht auch das höchste Bit.
Danke für die Tips! Danke Peter Dannegger >Dürfte das volatile Problem sein. >Mach mal Variablen, die in Main und Interrupts benutzt werden, volatile. Hat mir geholfen ! Nun Hab ich noch das Problem mit dem ADC der will nicht
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
der Aufruf dann so
1 | |
Was mach ich falsch Danke Gruß Pier
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.