Arduino Uno als Programmer für ATMega 8?

Hallo zusammen,

ich bin recht neu in dem Gebiet Arduino, habe aber viel mit Elektronik und Programmieren zutun. Ich würde gerne ein ATMega 8 mit meinem Arduino Uno programmieren, vorausgesetzt es ist überhaupt möglich. Wenn ja wie muss ich es machen, sprich wie anschließen, etc.

Ich würde mich sehr über hilfreiche Antworten freuen.

Viele Grüße

Florian

Hallo Florian,

ja, kannst du. Nach dieser Anleitung den Arduino als ISP (Programmer) mit dem ATMega8 verschalten. In der IDE stellst du als Board den Arduino NG or older w ATMega8 ein. Du solltest dich mal mit dem Thema Fuses beschäftigen, der ATMega8 ist nämlich im Auslieferungszustand auf 1MHz interner Takt eingestellt.

Es gibt weitere gute Anleitungen unter dem Suchbegriff ArduinoISP.

Gruß Reinhard

der ATMega8 ist nämlich im Auslieferungszustand auf 8MHz und nicht 1 Mhz.

Hier ist eine super Anleitung, mit Video, Bilder und Test auf Deutsch.

Hi Ihrs,

so einige Infos habe ich mir schon herausgefischt ;) leider zeigt der Link von skorpi auch nur eine Unzahl von Googlesuchergebnissen, mit denen ich auch nicht weiterkomme. Ein direkter Link wäre auch in 10 Jahren noch sinnvoller.

Den Uno habe ich erfolgreich programmiert, beim Bootloader flashen bekomme ich die Fehlermeldung:

"Yikes! Invalid device signature, Double check connections and try again, or use -F to override this check."

Die Verdrahtung scheint ok, mit -F kann ich nun so garnichts anfangen :(

mein Verdacht liegt beim fehlenden Quarz, obwohl ja auch der Bootloader ohne Quarz, mit dem internen Takt funzen sollte.

Device Signature ist immer 0x000000

Ich hoffe, hier noch mehr sinnvolles zu erfahren.

"Yikes! Invalid device signature, Double check connections and try again, or use -F to override this check."

Hatte ich immer als der verfused war.

Hm, ansprechen klappt jetzt doch. Verfused ist er trotzdem "efuse" memory type not defined for part "ATmega8"

Der Fehlertext komplett:

Using Port : COM4 Using Programmer : stk500v1 Overriding Baud Rate : 19200 AVR Part : ATmega8 Chip Erase delay : 10000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail :

Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00 lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00 calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : STK500 Description : Atmel STK500 Version 1.x firmware Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x1e9307 avrdude: erasing chip avrdude: reading input file "0x3F" avrdude: writing lock (1 bytes):

Fehler beim Brennen des Bootloaders. Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written avrdude: verifying lock memory against 0x3F: avrdude: load data lock data from input file 0x3F: avrdude: input file 0x3F contains 1 bytes avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ... avrdude: 1 bytes of lock verified "efuse" memory type not defined for part "ATmega8"

avrdude done. Thank you.

Da helfen wohl nur noch die ganz harten Methoden :D

Hab ich schon ein Thread dazu gemacht, such mal nach Skorpi08 Attiny85

Verfused ist er trotzdem "efuse" memory type not defined for part "ATmega8"

Der AtMega8 hat keine efuse. Das sagt die Meldung und das Datenblatt bestätigt es.

Da helfen wohl nur noch die ganz harten Methoden

:grin: von oben ein Loch rein bohren und eine efuse einfüllen. :grin:

Leider zeigst du das avrdude Kommando, welches du verwendest, nicht.... Aber trotzdem die Frage: Warum versuchst du die efuse zu setzen, obwohl der Prozessor diese gar nicht hat?

Warum versuchst du die efuse zu setzen

Ich wollte nur den Bootloader flashen, dann muss ja die Routine nicht Ok sein, welches ich nun nicht glaube........... Dass mich Windows mit Vista und Win7 total verxxxxxt bin ich ja schon gewohnt :D

dann muss ja die Routine nicht Ok sein,

Routine? Welche Routine, sehe keine ... Ich würde einen fehlerhaften Eintrag in die boards.txt, oder platform.txt vermuten.

Oder, wenn du das avrdude Statement selber absetzt, dann selber gemacht. (aber das bleibt ja geheim)

Tipp: Es ist recht schwer gegen Vermutungen anzukämpfen. (nicht nur gegen fremde, sondern schlimmmer noch, die eigenen) Wenn du wissen willst, was an der Routine falsch ist, solltest du sie zeigen.

Jetzt hat es geklappt mit der Dos Box und dem bereinigen der Komandos (eFuse).

         Using Port                    : COM4
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega8
         Chip Erase delay              : 10000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
W   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
           eeprom         4    20   128    0 no        512    4      0  9000  90
00 0xff 0xff
           flash         33    10    64    0 yes      8192   64    128  4500  45
00 0xff 0x00
           lfuse          0     0     0    0 no          1    0      0  2000  20
00 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  2000  20
00 0x00 0x00
           lock           0     0     0    0 no          1    0      0  2000  20
00 0x00 0x00
           calibration    0     0     0    0 no          4    0      0     0
 0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0
 0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.08s

avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xca"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xca:
avrdude: load data hfuse data from input file 0xca:
avrdude: input file 0xca contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xdf"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xdf:
avrdude: load data lfuse data from input file 0xdf:
avrdude: input file 0xdf contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude: safemode: lfuse reads as DF
avrdude: safemode: hfuse reads as CA
avrdude: safemode: Fuses OK (H:FF, E:CA, L:DF)

avrdude done.  Thank you

Danke noch einmal!