Anlaufzeit Atmega

Wenn man auf den Bootloader verzichtet, wie programmiere ich dann die Chips über Arduino?

Unter Benutzung eines Bootloaders wird der Sketch über TX/RX übertragen.

Hat man keinen wird dabei MOSI/MISO benutzt, wenn ich mich nicht irre !

madworm:
Nein :wink:

Allerdings ist der upload merklich langsamer. Mein patch diesbezueglich wurde und wird ignoriert...

Einfach bei der betreffenden board-definition folgendes (angepasst) einfuegen:

MeinSuperBoard.upload.using=arduino:usbtinyisp

Wo genau füge ich den Code ein?

Und den optiboot habe ich gedownloadet mit der Version 0018 verknüpft in den Ordner Bootloaders, jedoch nach Neustart des Programmes wird kein Optiboot im Menue Board angezeigt :frowning:

  1. Falls nichts schwerwiegendes dagegen spricht, wuerde ich mindestens die IDE V0023 verwenden. Dort ist ein guter optiboot dabei. Und der startet nach einschalten das programm bei mir instantan.

  2. In der datei 'boards.txt' muss das eingefuegt werden. Und zwar bei dem board, welches von nun an mit dem ISP bespielt werden soll. U.u. sollten auch die FUSE settings angepasst werden, wenn man den bootloader runterputzen will/muss. Zur ermittlung derer siehe meine signatur.

Hier ein beispieleintrag (gueltig bis IDE V0023) von mir (einmal mit bootloader, einmal mit ISP + FUSE bits angepasst --> 512 bytes mehr FLASH frei)

##############################################################
#
# to activate this board, select it and use:
#
# 'Burn Bootloader' - 'w/ USBtinyISP' just once
# this makes sure the correct FUSE settings are used
#
8x8RGBLedMatrix1.name=8x8 RGB LED Matrix - ATmega168 / 16MHz Quartz / USBtiny
8x8RGBLedMatrix1.upload.maximum_size=16384
8x8RGBLedMatrix1.upload.speed=115200
8x8RGBLedMatrix1.upload.using=arduino:usbtinyisp
8x8RGBLedMatrix1.bootloader.low_fuses=0xFF
8x8RGBLedMatrix1.bootloader.high_fuses=0xDD
8x8RGBLedMatrix1.bootloader.extended_fuses=0x05

## just so the IDE doesn't throw an error
## it will be overwritten, but we need the correct FUSE settings
8x8RGBLedMatrix1.bootloader.path=optiboot
8x8RGBLedMatrix1.bootloader.file=optiboot_diecimila.hex
##

8x8RGBLedMatrix1.bootloader.unlock_bits=0x3F
8x8RGBLedMatrix1.bootloader.lock_bits=0x3F
8x8RGBLedMatrix1.build.mcu=atmega168
8x8RGBLedMatrix1.build.f_cpu=16000000L
8x8RGBLedMatrix1.build.core=arduino
#
#
#
##############################################################



##############################################################
#
# to activate this board, select it and use:
#
# 'Burn Bootloader' - 'w/ USBtinyISP' just once
# this makes sure the correct FUSE settings are used
#
8x8RGBLedMatrix2.name=8x8 RGB LED Matrix - ATmega168 / 16MHz Quartz / optiboot Bootloader
8x8RGBLedMatrix2.upload.protocol=stk500
8x8RGBLedMatrix2.upload.maximum_size=15872
8x8RGBLedMatrix2.upload.speed=115200
8x8RGBLedMatrix2.bootloader.low_fuses=0xFF
8x8RGBLedMatrix2.bootloader.high_fuses=0xDD
8x8RGBLedMatrix2.bootloader.extended_fuses=0x04
8x8RGBLedMatrix2.bootloader.path=optiboot
8x8RGBLedMatrix2.bootloader.file=optiboot_diecimila.hex
8x8RGBLedMatrix2.bootloader.unlock_bits=0x3F
8x8RGBLedMatrix2.bootloader.lock_bits=0x0F
8x8RGBLedMatrix2.build.mcu=atmega168
8x8RGBLedMatrix2.build.f_cpu=16000000L
8x8RGBLedMatrix2.build.core=arduino
#
#
#
##############################################################

Ab version 1.0 reicht es aus die zeile "...upload.protocol=..." in 'boards.txt' zu loeschen und den programmer typ im menue auszuwaehlen.

Sehr viel Neuland für mich, das mit den Bootloader.

Verstehe nicht warum er mir den optiboot im menue nicht anzeigt obwohl ich es wie in der Anleitung eingefügt habe.

Wäre es möglich das du mir über Teamviewer das in die Board.txt einfügst?

Vielen Dank.

Teamviewer... ist das irgendwas von windows? Bei mir ist microsoft-freie zone.

Oh mist...

ich habe den Befehl eingebene er lädt leider nicht über USBtiny zeigt nur ein error an.
Dabei ist eigentlich alles richtig angeschlossen, da der normale Bootloader auch wunderbar laufen tut.

Du musst dich schon etwas deutlicher ausdruecken... welcher befehl, was wo eingestellt, exakte fehlermeldungen, welches board...

Ok habs hin bekommen er uploadet wunderbar vom Usbtiny, problem jetzt er spinnt total.
Die Led, pin 13, blinkt nur sehr schwach.

Woran kann das liegen?
Muss ich zusätzlich noch was ändern ?

Das problem liegt in zeile 42!

Zeile 42?

ich habe in die Board.txt den befehl atmega8.upload.using=arduino:usbtinyisp

er lädt über tinyisp, aber egal welchen Code die LED13 blinkt nur sehr schwach obwohl ich sie im programmcode als HIGH geschrieben habe.

Hätte ich vorher noch was machen müssen?
Worin könnte das Problem liegen?

Jedenfalls springt der Code sofort an, das ist echt SUPER!

42

Es handelt sich dabei um die Antwort auf die vom Autor bewusst unklar gelassene Frage „nach dem Leben, dem Universum und dem ganzen Rest“

Das gebe ich immer als antwort, wenn die daten nicht fuer eine sinnvolle ausreichen.

Und wenn ich in meine glaskugel blicke, so sehe ich, dass du vermutlich den pin 13 nicht als ausgang definiert hast. Aber da ich den code nicht sehe (der empfang ist heute schlect), ist das etwas vage.

nicht schlecht... darauf hätte ich auch kommen müssen --- die Zeile hatte ich versehentlich gelöscht und es nicht mitbekommen.

Aber das läuft ja viel zu gut, da muss es doch Nachteile bei dieser Methode geben oder?

Selbstverständlich gibt es auch Schattenseiten...
Du hast die volle Kontrolle über die Fuses und Lockbits, kannst also mit wenigen Handgriffen den Mikrocontroller ins nicht mehr programmierbare Jenseits befördern. ]:smiley:
Spaß beiseite, der Arduino-Ansatz, eine kinderleichte, komplette Entwicklungsumgebung zu haben, wird dadurch aufgeweicht. Zusätzliche Hardware wird benötigt, die Programmierung ist somit risikobehaftet, Fehlerquellen vervielfacht. Aber was solls? So lernt man ja auch mehr über fie Mikrocontroller. Der ISP-Anschluss ist ja auch nicht umsonst auf dem Arduino-Board. :smiley:

... aber egal welchen Code die LED13 blinkt nur sehr schwach obwohl ich sie im programmcode als HIGH geschrieben habe.

pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);

Fehlerquellen vervielfacht

Als ob der upload mit dem bootloader niemals versagt haette. HAHAHAHA

madworm:
Als ob der upload mit dem bootloader niemals versagt haette. HAHAHAHA

An welcher Stelle hab ich Gegenteiliges behauptet? Würde ich das nämlich tatsächlich denken, wäre meine tatsächliche Aussage der Vervielfachung ja unsinnig: Null vervielfacht ergibt ja weiterhin Null. :wink:

sth77:
Selbstverständlich gibt es auch Schattenseiten...
Du hast die volle Kontrolle über die Fuses und Lockbits, kannst also mit wenigen Handgriffen den Mikrocontroller ins nicht mehr programmierbare Jenseits befördern. ]:smiley:

Stimmt nicht ganz, man kann einen blockierten ATmega mit einem Hochspannungsprogrammierer aus dem informatischen Jenseits zurückholen. Es werden mit genau definiertem Timing 12V auf den Reset Eingang gegeben und so der ATmega resetiert.
http://blog.makezine.com/archive/2008/09/how-to-use-arduino-as-a-h.html

Manche SPI-Programmierer haben diese Funktion, ansonsten eben obengenannte Bastelvorschläge.
Grüße Uwe

Hallo,

da ich mir gerade einen USBtiny programmer zugelegt habe und damit erstmal Erfahrungen sammeln muss, hier eine ganz blöde Frage zu den Risiken die Fuses falsch zu setzen: Das kann doch sicherlich nur dann passieren, wenn ich im sketch entsprechende "falsche" fuses Einstellungen explizit eingegeben habe?

Gruß Klaus

Unmittelbar aus dem Sketch heraus hast du keine Zugriff. Du musst jedoch die boards.txt anpassen, um einen ISP zu verwenden. Dort hast du dann auch die Möglichkeit, die Fuses und Lockbits zu verbiegen.