Fuses über Arduino Board ändern

Hallo zusammen

Ich habe vor, ein Projekt auf einer eigenen Platine zu realisieren, das von einer Batterie mit Strom versorgt wird. Bei einem ähnlichen Projekt habe ich einen Atmega328 mit Arduino Bootloader verwendet und mit einem externen Quarz verkabelt, sodass er gleich betrieben werden konnte wie auf dem Board. Auch gelang die Programmierung über sowas wie eine selbst gebastelte ISP Schnittstelle nach diesem Vorbild http://arduino.cc/en/Tutorial/ArduinoISP.

Nun möchte ich allerdings etwas Platz- und Stromsparender arbeiten und deshalb einen Atmega168 im TQFP - Gehäuse einbauen. Die Programmierung stelle ich mir ähnlich einfach vor wie beim vorhergehenden Projekt, da dieser Typ auch im Arduino Nano verbaut ist und deshalb in der Arduino IDE ausgewählt werden kann. Gerne würde ich jedoch auch auf den externen Quarz verzichten und stattdessen den internen Oszillator aktivieren. Dafür muss ich jedoch die Fuses entsprechend setzen. Ist dies über das ArduinoUno Board möglich oder müsste ich dazu einen "richtigen" Programmierer haben? Wenn es möglich ist, wie kann ich sowas bewerkstelligen (unter Mac OS X Mountain Lion/AVRFuses)? Das blöde am SMD ist, dass ich es nicht einfach auf dem Board ausprobieren kann, deshalb frage ich hier :/

Grüsse und Dank im Voraus.

Wenn du den “Lilypad w/ ATmega168” Bootloader draufmachst, werden die Fuses auf 8 MHz intern gesetzt. Unter der Einstellung sind dann auch die restlichen Timings angepasst (millis, delay, etc)

So eine kurze Antwort auf so eine lange Frage :) Aber genau so werd ichs machen. Vielen Dank für den Tip! Die Fuses über die ArduinoUno Platine zu setzen ist demnach nicht möglich? Nur für den Fall...

Gruss und Dank

Hallo,

den http://shop.myavr.de/Programmer%20und%20Bridges/mySmartUSB%20light.htm?sp=article.sp.php&artID=200006 kann ich empfehlen. Funktioniert einwandfrei ( mit einigen Einstellungen ) auch mit der Arduino-Software, keine Treiberprobleme. Den gibt es von verschiedenen Anbietern. Einfach mal nach 'mySmartUSB light' googlen

zum Thema 'Fuses' Es ist relativ leicht einen Atmega so zu verfusen, dass ein weiterer Gebrauch schwierig wird. Auch danach solltest Du mal googlen

Gruss Kurti

Hitsuji: Die Fuses über die ArduinoUno Platine zu setzen ist demnach nicht möglich? Nur für den Fall...

Um die Fuses auf einem Atmega-Chip zu setzen, wird ein Programmer benötigt.

Wenn Du keinen "richtigen" Programmer hast, kannst Du behelfsweise aus einen "Arduino as ISP" verwenden, wie es hier beschrieben ist: http://arduino.cc/en/Tutorial/ArduinoISP

Von der Arduino-Software aus werden die Fuses immer (und nur dann) gesetzt, wenn die Funktion "Bootloader installieren" verwendet wird. Diese Funktion funktioniert nur mit Programmer.

Um das zu machen, benötigst Du also - entweder: 1 Arduino, 1 ISP-Programmer - oder: 2 Arduino, davon einer als "Arduino as ISP" konfiguriert

Hitsuji: Die Fuses über die ArduinoUno Platine zu setzen ist demnach nicht möglich? Nur für den Fall...

Eigentlich sollte es gehen - ich hab's auch schon probiert - mit einem Duemilanove allerdings - da hat es nicht funktioniert... hmm

[edit] jurs hat grad geschrieben warum [/edit]

Bzgl eines Programmers. Einen AVR USBasp (hab ich mir dann gekauft) gibt's schon für unter 5 Euro (!) und ich hatte noch nie ein Problem damit, sehr einfach und unkompliziert zu benutzen, kann ich nur empfehlen.

Ausserdem schau dir mal die Datei hardware\arduino\boards.txt an, und rate, wie die IDE Fuses unterschiedlich setzen kann. Du kannst dir auch durch Kopieren und vorsichtiges Ändern dort dein eigenes Board erzeugen ( falls dir z.B. der Name Lilypad nicht gefällt )

Achtung: Wenn Fuses erstmal ganz falsch sind, kannst du den Chip praktisch vergessen.

Mit der Einstellung "Erweiterte Ausgaben beim Upload" kannst du auch sehen, wie die IDE das Programm avrdude verwendet. Das geht auch direkt und dazu gibts auch einige Tutorials ... (Aber mindestens einen AduinoISP als Programmer brauchst du schon)

Hitsuji: So eine kurze Antwort auf so eine lange Frage :) Aber genau so werd ichs machen. Vielen Dank für den Tip! Die Fuses über die ArduinoUno Platine zu setzen ist demnach nicht möglich? Nur für den Fall...

Gruss und Dank

Du kannst Fuses mit Hilfe eines Arduino als ISP-Programmierers setzen aber nicht über ArdunoIDE sondern mit den Programmen von Atmel (gleich wie wenn Du einen ISP-Programmierer verwenden würdest). Wie bereits gesagt bei Falschsetzen der Fuse kann der ATmega unbrauchbar werden. Da hilft nur mehr HV-Programming (geht auch Mithilfe eines Arduinos).

Grüße Uwe

Danke für die zahlreichen Antworten. Über das Zerfusen des Controllers hab ich schon einige Sachen gelesen, da muss man sich halt jeweils für den speziellen Fall nochmals genauer einlesen. Werde aber sicher mal den Trick mit dem Lilypad anwenden und mir irgendwann wohl mal einen richtigen Programmer zulegen, ist sicher praktischer und fehlersicherer als die selbst gebastelten Lösungen :)