Hi Comunity,
ich habe einen Arduino Mega 2560. Bisher lief er mit dem internen 8 MHz
Ozillator. Jetzt wollte ich den externen 16 MHz Quartz als Quelle
verwenden und habe per Fuse external Clock eingestellt. Aber jetzt
funktioniert gar nichts mehr. Ich kann es auch per ISP-Programmer nicht
mehr umstellen. Was kann ich jetzt tun? Danke schon mal.
Obs schrieb:> Jetzt wollte ich den externen 16 MHz Quartz als Quelle> verwenden und habe per Fuse external Clock eingestellt.
Und warum stellst du "external Clock" ein, wenn du einen externen Quarz
betreiben möchtest?
Dann besorg dir mal irgendeinen Taktgenerator und schließ den an. Dann
wird's auch wieder gehen.
Mike schrieb:> Und warum stellst du "external Clock" ein, wenn du einen externen Quarz> betreiben möchtest?
Weil ich dachte, dass das so richtig ist :D
Was hätte ich denn einstellen müssen? Low Power Crystal Oscillator oder
Full Swing Crystal Oscillator? Was ist dann external Clock? Bekomme ich
das auch mit dem AVR-Dragon hin?
Harald schrieb:> Verwenden die arduinos nicht von Hause aus den 16 MHz quarz? Zumindest> beim Uno ist es definitiv so.
Kann sein. Ich verwende aber auch nicht die Arduino-IDE und den
Arduino-Bootloader, sondern arbeite direkt mit C, dem AVR-Studio und nem
AVR-Dragon.
Obs schrieb:> Mike schrieb:> Und warum stellst du "external Clock" ein, wenn du einen externen Quarz> betreiben möchtest?>> Weil ich dachte, dass das so richtig ist :D> Was hätte ich denn einstellen müssen? Low Power Crystal Oscillator oder> Full Swing Crystal Oscillator? Was ist dann external Clock? Bekomme ich> das auch mit dem AVR-Dragon hin?> Harald schrieb:> Verwenden die arduinos nicht von Hause aus den 16 MHz quarz? Zumindest> beim Uno ist es definitiv so.>> Kann sein. Ich verwende aber auch nicht die Arduino-IDE und den> Arduino-Bootloader, sondern arbeite direkt mit C, dem AVR-Studio und nem> AVR-Dragon.
Das ist dem Chip aber herzlich egal. Die Fuses sind für den externen
quarz schon gesetzt.
Harald schrieb:> Das ist dem Chip aber herzlich egal. Die Fuses sind für den externen> quarz schon gesetzt.
Nicht wenn ich sie im C-Code umsetze ^^
Hab grade mal geschaut und die XTAL1- und XTAL2-Pins sind ja nicht nach
draußen geführt ... kann ich den Arduino jetzt noch retten?
http://arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf
An den XTAL Pins hängt der Quarz...
Ob Arduino oder C ist ziemlich egal. Nachdem der Arduino-Dialekt
letztlich C-Code ergibt, der vom AVR GCC kompiliert wird...
Und Fuses setzt man nicht im C-Code um, oder irre ich!?
Obs schrieb:> kann ich den Arduino jetzt noch retten?
Ja, mit einem externen Taktsignal
- von einem anderen µC erzeugen lassen,
- das 1 kHz Signal vom Oszi,
- die 44,1 kHz aus einem CD Player
- aus 2 Transistoren oder 1-2 Logikgattern einen Taktgenerator bauen
- von der Soundkarte ein Rechtecksignal erzeugen lassen
- LPT Schnittstelle
- Sekundentakt einer Quarzuhr ;-)
Das ist kein Arduino, sondern ein ATmega2560
>> Das ist kein Arduino, sondern ein ATmega2560
Der TO schrieb von einem ARDUINO MEGA 2560 Board - und der ist kein
Arduino??? Sofern du den Chip ATmega 2560 meinst - mea culpa
Obs schrieb:> Harald schrieb:>> Das ist dem Chip aber herzlich egal. Die Fuses sind für den externen>> quarz schon gesetzt.>> Nicht wenn ich sie im C-Code umsetze ^^
Wie kommst du denn auf den Unsinn?
> Hab grade mal geschaut und die XTAL1- und XTAL2-Pins sind ja nicht nach> draußen geführt ... kann ich den Arduino jetzt noch retten?
Löte an dem Quarzanschluss, der auf XTAL1 geht, einen Draht an und lege
da einen Takt an. Dann kannst du wieder mit ISP drauf zugreifen.
Oder du bastelst dir einen JTAG-Adapter. Wird ja auch langsam Zeit. JTAG
arbeitet mit seinem eigenen Takt.
Die Fuses stellst du auf Full Swing oder Ext. Crystal.
mfg.
Thomas Eckmann schrieb:> Obs schrieb:>> Harald schrieb:>>> Das ist dem Chip aber herzlich egal. Die Fuses sind für den externen>>> quarz schon gesetzt.>>>> Nicht wenn ich sie im C-Code umsetze ^^> Wie kommst du denn auf den Unsinn?
Man kann die Fuses auch direkt im C-Code einstellen:
Aber spielt ja auch keine Rolle, ob ich es im C-Code mache oder mit nem
Programmer wie dem Dragon... Tatsache ist ich habs verstellt und
versuche jetzt es wieder hinzubekommen...
>> Hab grade mal geschaut und die XTAL1- und XTAL2-Pins sind ja nicht nach>> draußen geführt ... kann ich den Arduino jetzt noch retten?> Löte an dem Quarzanschluss, der auf XTAL1 geht, einen Draht an und lege> da einen Takt an. Dann kannst du wieder mit ISP drauf zugreifen.> Oder du bastelst dir einen JTAG-Adapter. Wird ja auch langsam Zeit. JTAG> arbeitet mit seinem eigenen Takt.>> Die Fuses stellst du auf Full Swing oder Ext. Crystal.>> mfg.
Danke, das hilft mir doch mal.
Obs schrieb:> Man kann die Fuses auch direkt im C-Code einstellen:
das bringt aber nur was, wenn du anschließend das *.elf File flashst
anstatt des *.hex.
Die Fuses werden dabei immernoch vom Programmer gesetzt und nicht von
deinem Programm im µC
Obs schrieb:> Man kann die Fuses auch direkt im C-Code einstellen:
Man kann die Fuses NICHT im C-Code einstellen! Mit dem vom Compiler bzw.
Linker erzeugten Hex-File kann man keine Fuses einstellen.
Die einzige Möglichkeit beim Flashen des Controllers die Fuse- und
Lockbits zu verändern, ist, wenn alles in einem *.elf-File gespeichert
ist und die Programmierung mit diesem File gemacht wird. Ob es damit:
geht, indem dass im elf-File landet, kann ich ich allerdings nicht
sagen. Mag sein. Ich glaube allerdings kaum, daß du mit einem elf-File
flasht. Aber auch das ist völlig unabhängig vom Programm.
Das Flashen eines Hex-Files hat keine Auswirkungen auf die Fuses.
mfg.
chris schrieb:> das bringt aber nur was, wenn du anschließend das *.elf File flashst> anstatt des *.hex.
Das .elf file ist als default eingestellt im Atmel Studio 6.1
Obs schrieb:> Nicht wenn ich sie im C-Code umsetze ^^
Warum machst du auch so einen scheiß? Selbst schuld! Erst informieren
wie die Fuses gesetzt sind, und dann was machen... Der 16MHz Quarz ist
da nicht aus spaß auf dem Arduinoboard drauf...
Kaj schrieb:> chris schrieb:>> das bringt aber nur was, wenn du anschließend das *.elf File flashst>> anstatt des *.hex.> Das .elf file ist als default eingestellt im Atmel Studio 6.1
Aber nicht zum Flashen. Das ist für den Debugger.
mfg.
Wenn er eh alles besser weiss, dann soll ihm doch Google weiterhelfen...
Echt, zuerst nicht informieren, sich null auskennen, aber alles besser
wissen...
Thomas Eckmann schrieb:> Löte an dem Quarzanschluss, der auf XTAL1 geht, einen Draht an und lege> da einen Takt an.
Man kann auch den XTAL1 Pin an den XTAL1 (Pin 1) vom ATmega16U2 löten
und am besten auch dort belassen. Hier für einen UNO R3 gemacht:
http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp7
Unter "automatischer Abgleich ..." mit einem Bild der Platine.
Harald Nagy schrieb:> Wenn er eh alles besser weiss, dann soll ihm doch Google weiterhelfen...> Echt, zuerst nicht informieren, sich null auskennen, aber alles besser> wissen...
Was für eine überflüssige Antwort :D zu viel Zeit?
Ich hab nur gesagt, dass man die Fuses aus dem C-Code einstellen kann
mit den bereitgestellten Macros. Ich hab nie behauptet, dass das zur
Laufzeit passiert. Und ja, ich flashe das .elf-File mit dem Studio. D.h.
damit:
kann ich sehr wohl die Fuses einstellen.
Ich komme aus der Software-Ecke und kenne mich noch nicht so gut mit
Hardware aus. Da der Quarz nicht innerhalb des ATmega sitzt, dachte ich
rein intuitiv, dass ich ihn als external Clock einbinden muss. Das war
der Fehler. Dank zumindest ein paar hilfreicher Antworten weiß ich das
jetzt und werde versuchen einen externen Clock an XTAL1 dran zu löten.
m.n. schrieb:> Man kann auch den XTAL1 Pin an den XTAL1 (Pin 1) vom ATmega16U2 löten> und am besten auch dort belassen. Hier für einen UNO R3 gemacht:> http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp7> Unter "automatischer Abgleich ..." mit einem Bild der Platine.
Ahh super ... das sieht machbar aus. Vielen Dank!
Thomas Eckmann schrieb:> Kaj schrieb:>> chris schrieb:>>> das bringt aber nur was, wenn du anschließend das *.elf File flashst>>> anstatt des *.hex.>> Das .elf file ist als default eingestellt im Atmel Studio 6.1> Aber nicht zum Flashen. Das ist für den Debugger.>> mfg.
Wenn ich in Atmel Studio 6.1 oben in der Leiste auf "Device Programming"
(Ctrl+Shift+P) und dann auf "Memories" gehe, steht da als default das
.elf-File drin. Drücke ich an gleicher stelle auf "Program", wo wird da
wohl auch das .elf-File auf den Controller geflasht (alles andere würde
ja auch keinen Sinn machen.). Ich bin so dreist zu behaupten, dass diese
Stelle der IDE nichts (zumindesten nichts offensichtliches) mit dem
Debugger zu tun hat. ;)
Noch für die, die es interessiert: Ich habe das Problem jetzt per JTAG
gelöst. Glücklicherweise hatte ich zuvor schon JTAG bei der MCU
aktiviert und so konnte ich einfach die JTAG-Pins meines Dragons mit den
JTAG-Pins des ATmega2560 verbinden, die beim Arduino Mega 2560 über
die ANALOG-IN-Pins A4 bis A7 nach draußen geführt sind. Über JTAG habe
ich dann die Clock Source mit dem Studio umgestellt und nun funktioniert
es wieder wie zuvor. Danke noch mal für die Hilfe und insbesondere für
den Tipp mit JTAG.