Hallo zusammen, vorweg, ich habe erst seit drei Wochen wieder angefangen, mich mit der Programmierung zu beschäftigen (vor 10 Jahren das letzte Mal). Aktuell arbeite ich mit ATmega328P-PU und wechsle "noch" zwischen C und LunaAVR hin und her, wobei ich sehr gerne C nehmen würde (warum noch hin und her, sie im folgenden) Mir ist nun folgendes aufgefallen und bin etwas ratlos, ob diess Verhalten Ursache sein könnte, für das nicht funktionieren meiner UART Ausgabe: Ich habe mir in LunaAVR ein Programm geschrieben, das mir Sensorwerte von PC0 und PC1 und über UART schreibt. Nehme ich einen jungfräulichen Chip und programmiere diesen direkt in Luna, passt alles: Werte von PC0/PC1 werden mir sauber ausgegeben. Ähnliches Programm in C (noch ohne ADC, lediglich Initialisierung der UART, Ausgabe von "Hallo"), diesmal aber in Atmel Studio 6: Beim ersten mal flashen, erhalte ich eine Ausgabe (nicht das Wort "Hallo", sondern irgendwelche anderen Werte), aber immerhin eine Ausgabe. Flashe ich nun ein zweites Mal (wegen falscher F_CPU als Ursache falascher BAUD-Rate), erhalte ich überhaupt keine Ausgabe mehr. Ändere ich die F_CPU wieder zurück, erhalte ich ebenfalls keine Ausgabe mehr (obwohl andere Werte als Hallo zuvor funktionierten). Jetzt habe ich nachgeforscht und folgendes herausgefunden: Fusebits werden zwischen avrdude (Luna AVR) und Atmel Studio anders geschrieben, allerdings anscheinend nur durch Atmel Studio und auch erst beim zweiten flashen. Nun meine Fragen: 1) Ist das normal, dass Fusebits unterschiedlich gesetzt/interpretiert werden? Jungfräulicher Chop geschrieben mit avrdude LunaAVR/avrdude lfuse = 0xff hfuse = 0xde efuse = 0x05 unmittelbar danach gelesen in Atmel Studio lfuse = 0xff hfuse = 0xde efuse = 0xfd wenn ich nun die efuse nicht wieder korrigere, läuft kein Programm mehr aus LunaAVR, wobei sich mir daraus meine zweite ergibt: 2) Liegt es genau daran, dass durch die Änderung der Fusebits mein Programm in C irgendwann "aussteigt"? Kann ich es irgendwie verhindern, dass die Fusebits verändert werden können? In den Projekteinstellungen hab ich nichts gefunden. Habe schon einige Zeit investiert, aber ich komme auf keinen grünen Zweig, ob ich dies fixieren kann und wie die efuse mit der UART Ausgabe zusammenhängen könnte. Verwende noch das STK500, ein AVR ISP mkII kommt morgen, um meine Schaltung direkt programmieren zu können, ohne den Chip stets zu wechseln. Könnte aus Eurer Erfahrung heraus, die Fusebit-Umstellung dadurch sowieso hinfällig werden? Ich hoffe, ich habe nicht zu verwirrend geschrieben, aber nach über 3 Stunden (und die Tage zuvor waren auch nicht weniger) ist mein Latein langsam am Ende. Vielen Dank, Daniel
Wenn ich deine beiden Fuse Konfigurationen in http://www.engbedded.com/fusecalc eingebe, sehe ich keinen Unterschied in der Konfiguration. Wohl aber erhalte ich bei 0xFD eine Warnung
1 | * Note that some numerical values refer to fuses containing undefined |
2 | bits (set to '1' here). Depending on the target device these fuse |
3 | bits will be read either as '0' or '1'. Verification errors will |
4 | occur if the values are read back with undefined bits set to '0'. |
5 | Everything is fine if the values read from the device are either the |
6 | same as programmed, or the following values (undefined set to '0'): |
7 | Extended: 0x05. |
d.h. 0x05 und 0xFD sind für den µC identisch, weil einige Bits vom µc nicht benutzt werden. Die relevanten Bits sind aber gleich. Details zu der Belegung der Extended Fuse: siehe Datenblatt
:
Bearbeitet durch User
Hallo, vielen Dank für Deine Analyse. Den Hinweis im fusecalc habe ich gesehen und auch wieder nicht (wahscheinlich hab ich es nur nicht verstanden und mich zu sehr auf den Unterschied in efuse konzentriert). Werde mir heute Abend das Datenblatt nochmals explizit dahingehend ansehen, um das Thema nach und nach zu verstehen bzw. wie man diese Informationen entsprechend interpretiert. Vielen Dank nochmals! Daniel
Daniel Seichter schrieb: > Verwende noch das STK500, ein AVR ISP mkII kommt morgen, um meine > Schaltung direkt programmieren zu können Das ist Unsinn. Die Signale am 6-poligen Kabel des STK500 sind identisch mit denen des AVR ISP mkII. Zum Programmieren einer externen Schaltung reicht also eins von beiden. Der Programmer im Atmel Studio macht immer nur das, was Du ihm sagst. Die Fuses werden also nicht "versehentlich" geändert, wenn Du "Programm Flash" drückst. Du mußt extra in das Fuse-Menü gehen, um sie zu ändern.
Daniel Seichter schrieb: > Könnte aus Eurer Erfahrung heraus, die Fusebit-Umstellung > dadurch sowieso hinfällig werden? Mit den Fusebits wird die interne Controllerhardware konfiguriert. U.a. die Taktquelle. Stell dir das wie ein paar DIL-Schalter vor. Da so ein Controller aber keine Wartungsklappe hat, macht man das bei den AVRs mit den Fusebits. Diese Einstellungen sind nicht abhängig vom Programmiergerät. Sondern von den Anforderungen der Schaltung und der Anwendung, die darauf laufen soll. mfg.
Hallo Peter, danke für Deine Antwort. Da ich gestern noch nicht dazu kam, mir dies genauer anzusehen, werde ich mir nochmals explizit das Menü ansehen, ob ich hier, durch was auch immer, eine Einstellung getätigt haben könnte, ob bspw. die Fusebits, wie beim Auslesen nach dem Schreiben durch LunaAVR, geschrieben werden. Der AVRISP mkII war so oder so notwendig, da ich auf meinem Laptop leider keine serielle Schnittstelle mehr habe, aber jetzt wo Du sagst muss ich Dir in jedem Fall recht geben -> Kabel vom STK direkt auf die Schaltung und es würde gehen. @Thomas Deine Empfehlung, es mir wie Schalter vorzustellen, werde ich anwenden. Wie bereits geschrieben, habe ich seit 10 Jahren mich nicht mehr damit beschäftigt. Ich hoffe, dass ich heute früher Feierabend machen kann, damit ich diese Baustelle endlich abschließen und mich um die eigentliche Programmierung kümmern kann. viele Grüße, Daniel
Hallo, ich habe da ein Problem Mit Atmel Studio 6.1 und LUNAAVR. Ich möchte gern beides paralel betreiben was jedoch anscheinend nicht geht? Mache ch da was falsch bei der Instalation oder was muss ich tun damit es funktioniert? Wenn ich Atmel Studio installiere kommen die AVRISP mk2 Treiber in den Ordner Jungo im Gerätemanager, dann funktioniert das Atmel Studio. Installiere ich danach die Treiber für LUNA verschwindet AVRISP mk2 aus dem Ordner und wandert in den Treiberordner von LUNA im Gerätemanager. Dann funktioniert aber Atmel Studio nicht merh zum flashen.? Kann mir bitte mal jemand da einen Rat oder Hinweis geben? MfG Fritz
Hallo Fritz, LunaAVR installiert überhaupt keine Treiber! Wie kommst Du zu dieser Meinung ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.