Lies mal oben, ich hab was ergänzt, ich denke der Fehler liegt bei der PC Software.
Werbung
Lies mal oben, ich hab was ergänzt, ich denke der Fehler liegt bei der PC Software.
...und ich denke Du schreibst die Fuses einfach nicht in den µC...nur im Programm reicht eben einfach nicht, da kannst Du rein schreiben was du möchtest an Frequenzen, damit versaust Du Dir nur die Zeiten, dein µC läuft fleissig mit 1MHz - weil Du es nicht für nötig hälst den "manuell" auszulesen(zur Kontrolle) und dann "um zu stellen", und dann in den Fuse Speicher "einzuschreiben".
Geht sogar in Bascom...hab 100 zu 500 ms geändert damit man es besser sehen kannCode:$regfile = "m8adef.dat" $crystal = 8000000 $baud = 19200 $hwstack = 40 $swstack = 16 $framesize = 32 Led Alias Portb.0 'the anode of the LED connected to PortB.0, cathode with resistor (470 Ohm) to ground Config Pinb.0 = Output Do Waitms 500 Toggle Led Loop
Wenn ich meine Fuses über mySmartUSB mit myAVR öffne, dann steht dort JEDESMAL 1MHz is default, erst nach dem auslesen der Fuses zeigt es den richtigen Wert von 8MHz an.
Geändert von HeXPloreR (09.10.2012 um 20:53 Uhr)
Bei dem Satz komm ich nicht mit.
Egal, hier meine Vorgehensweise:
Ich stelle den AVR auf 1MHz (lfuse=0xE1) und gebe im File F_CPU 1000000UL an.
Ich baue und flashe mein Programm.
Die LEd blinkt mit 1Hz->Stimmt so.
Ich stelle den AVR auf 2MHz (lfuse=0xE2).
Die Led blinkt mit 2Hz->Stimmt so, da das neue Programm noch nicht geflasht wurde, also stimmen die Zeiten nicht.
Ich ändere im File auf f_CPU 2000000UL.
bauen, übertragen.
Die Led blinkt aber nach dem flashen immernoch mit 2Hz->Stimmt nicht, da er eigentlich die Zeiten anpassen müsste.
---->>>Der Compiler passt die Zeiten nicht an.
Und ich hab jetzt in das ASM File gekuckt und einmal für 1MHz erstellt und einmal für 8MHz, die Dateien sind absolut identisch.
Falls jetzt noch einer an einen Hardware defekt glaubt muss er schon ein verdammt gutes argument haben.
Ich hab mal die ASM files als zip angehängt damit ihr euch überzeugen könnt.
Geändert von Thalhammer (09.10.2012 um 20:58 Uhr)
Also ich habe das jetz mal gemacht so wie Du es beschreibst, nur habe ich auf 8Mhz kompiliert und dann 1Mhz auf dem µC eingestellt ... und was denkst Du passier?
Richtig die Led geht jetzt alle 4000ms aus und an. Warum? Weil die frequenz nun um das 8fache langsamer ist.
ich würde sagen Dein programm stimmt dann so.
Tu mir bitte einen gefallen und ändere die Zeiten in Deinem Programm in werte die man auch mal mit dem Auge mitverfolgen kann 100ms kann sind da doch etwas schnell
Geändert von HeXPloreR (09.10.2012 um 21:50 Uhr) Grund: unpassender Text
Willst du es nicht verstehen oder kanst du nicht.
ES IST VOLLKOMMEN EGAL WIE ICH F_CPU EINSTELLE!!!!!!!!!!
Wenn ich meinen uC auf 1MHz stelle und F_CPU auf 1Mhz stelle kommt ein blinken im sekundentakt raus
Lasse ich meinen uC auf 1Mhz und stelle im File z.b. F_CPU=80000000000000000UL ein kommt trotzdem ein blinken im sekunden takt raus.Code:for(uint8_t i=0;i<10;i++) _delay_ms(100);
Die ausgabe des avr-gcc ist genau gleich, scheiß egal was ich bei F_CPU einstelle. Sei es nun 1Hz oder 3Billionen Gigaherz, er rechnet IMMER MIT 1MHz.
Lesezeichen