Atmega 8 mit UNO programmieren

Hallo,

so langsam bin ich am verzweifeln.

Habe nun schon einige Stunden mit dem Internet verbracht, um meine vorhanden Atmega 8 Mikrocontroller mit dem Arduino Uno Board zu programmieren.

Als erstes habe ich mit Pony Prog die Fuse Bits des µC (Atmega8) auf 8MHZ Interner Takt gestellt, um den geringsten Aufbau für das Programmieren zu haben. (Fusebits als Bild beigefügt).

Anschließend habe ich von der folgende Seite den Bootloader mit Pony Prog und dem Pollin AVR Board auf den Atmega 8 kopiert.

http://todbot.com/blog/2009/05/26/minimal-arduino-with-atmega8/

Dann habe ich den Atmega 8 auf ein Steckbrett gepackt und wie folgt angeschlossen

https://www.arduino.cc/en/Tutorial/ArduinoISP (Bild unten Links)

Anschließend habe ich das Beispiel ISP auf meinen µC vom Uno kopiert.

Dann bei den Tool als Programmer Arduino as ISP ausgewählt.

Wenn ich z.B. dann auf Burn Bootloader klicke bekomme ich folgende Fehlermeldung

Arduino: 1.6.6 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/bin/avrdude -CC:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM6 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf"

Using Port : COM6
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 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 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 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

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

avrdude: Device signature = 0x1e9307
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.

avrdude done. Thank you.

Ich habe festgestellt, dass meine Installation von IDE1.6.6 teilweise eine andere Ordner Struktur hat als ich diese im Netz finden kann.

Wenn ich versuche ein Sketch "Blink" mit Shift-Taste auf den Atmega8 zu kopieren, bekomme ich folgende Meldung:

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf"

Using Port : COM6
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 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 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 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.02s

avrdude: Device signature = 0x1e9307
avrdude: Expected signature for ATmega328P is 1E 95 0F
Double check chip, or use -F to override this check.

avrdude done. Thank you.

Und er bleibt beim Hochladen hängen.

Was mache ich flasch?

Gibt es ein gutes Beispiel mit funktionierendem Bootload für Atmega8?

Hoffe ihr könnt weiterhelfen.

Werde ja nicht der erste sein :frowning:

Fuse_Bits_Atmega8.png

C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/bin/avrdude -CC:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM6 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m

...

avrdude: Device signature = 0x1e9307
avrdude: Expected signature for ATmega328P is 1E 95 0F

Immerhin hat avrdude gemerkt, dass du keinen atmega328p angeschlossen hast.
Und er hat die Signatur deines atmega8 richtig erkannt!

Ist doch gut :wink:

Wenn ich als Breadboard das Atmega8 auswähle.

Siehe Link oben, bekomme ich folgende Meldung

Das Board breadboard:avr:atmega8 definiert keine "build.board"-Einstellung. Sie wurde automatisch auf AVR_ATMEGA8 festgelegt.
Build-Optionen wurden verändert, alles wird neu kompiliert
"" -w -x c++ -M -MG -MP -DF_CPU=8000000L -DARDUINO=10606 -DARDUINO_AVR_ATMEGA8 -DARDUINO_ARCH_AVR "-IC:\Users\Michi\Documents\Arduino\hardware\breadboard\avr\cores\arduino" "-IC:\Users\Michi\Documents\Arduino\hardware\breadboard\avr\variants\standard" "C:\Users\Michi\AppData\Local\Temp\buildec87937f16bfb68a195c58cebed11b5d.tmp\sketch\Blink.ino.cpp"
exec: "-w": executable file not found in %PATH%
Fehler beim Kompilieren.

Wo liegt hier der Fehler?

Ich selbst mache sowas nur mit ATtinys, aber skorpi hat was dazu geschrieben, was anderen schon geholfen hat: ATtiny 85 16Mhz - #17 by skorpi080 - Deutsch - Arduino Forum

Wobei "executable file not found in %PATH%" auf ein Problem der Installation hindeutet. Von IDE 1.6.6 sind hier schon manche Merkwürdigkeiten berichtet worden, möglicherweise wäre IDE 1.6.5 die bessere Wahl.

Und warum so kompliziert das ganze?
Atmega328 vom UNO ab, den Atmega8 da rein, als Board Arduino NG or older, Prozessor Atmega8 und bootloader brennen.

Bei SMD biste halt selber schuld.

Hallo,

leider funktioniert das auch nicht

Arduino: 1.6.6 (Windows 7), Board: "Arduino NG or older, ATmega8"

C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/bin/avrdude -CC:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf -v -patmega8 -cstk500v1 -PCOM6 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:0xca:m -Ulfuse:w:0xdf:m

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch

System wide configuration file is "C:\Users\Michi\Downloads\arduino-1.6.6-windows\arduino-1.6.6\hardware\tools\avr/etc/avrdude.conf"

Using Port : COM6
Using Programmer : stk500v1
Overriding Baud Rate : 19200
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x03
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x03

avrdude done. Thank you.

Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Was muss ich noch beachten?

Fuse Bits? Beschaltung des Boards?
Kann ich wenn der Bootload mal kopiert wurde dann auch einfach so Programme übertragen?

Hallo,

also ich habe mir so einen "Spezial" Uno mit ATMEGA 8 (od. ATMEGA 168) und Optiboot hergerichtet, funktioniert mit IDE 1.6.6. Auch Bootloader flashen mit USBASP u.dgl. :slight_smile:

Der dazu verwende Optiboot Boatloader wird prinzipiell auch beim UNO verendet und mit der IDE geliefert. Das Problem ist das die Datei "platforms.txt" in Bezug auf die älteren CPUs im Laufe der Zeit wohl nie richtig gepflegt wurde, also habe ich da selber Hand angelegt. Außerdem habe ich in der "boards.txt" nach alter Methode zwei weitere Boards angelegt, den ATMEGA8 mit dem Optiboot (UNO) Bootloader sowie den ATMEGA168 mit dem Optiboot (UNO) Bootloader.

Der Optiboot hat gegenüber dem alten Bootloader (Arduino NG,...) den Vorteil viel weniger Speicher zu belegen (512 byte statt 2k), gerade beim Mega8 ein Argument. Auch Baudrate u.s.w. entspricht dann dem UNO, also darf man dann nicht mehr Arduino NG oder Duemilanove u.s.w. einstellen!

Ich stelle die modifizierten Dateien hier gerne zur Verfügung, einfach Dateien tauschen und fertig. Aber ohne Gewähr, die Änderungen basieren teilweiseaus Try&Error sowie gefährlichem Halbwissen :smiling_imp:

Christian

boards.txt (26.6 KB)

platform.txt (8.1 KB)

Habe die Daten nun mal im Installationsverzeichnis ersetzt, wo auch die exe liegt

Welchen Programmer wählst du aus?

Bekomme immer noch die Fehlermeldung.

Hallo,

nicht zur exe Datei dazu sondern ins passende Unterverzeichnis: .../hardware/arduino/avr.

Dann als Board den "Arduino ATMEGA8 mit Optiboot" auswählen. Als Programmer verwende ich den USBASP, daher auch diesen ausgewählt. Braucht man nur für den Bootloader - Anschließend normaler Upload via USB

Christian

Hallo,

danke für die Antwort.

Habe das schon in die richtige Ordner Struktur entpackt.

Aber Arduino legt ja auch einen Sketchordner ab.

Das meinte ich eigentlich.

Also ich habe nun mit Pony Prog den Bootload ATMEG8 der bei der IDE mitgeliefert wird auf den µC geflasht.

Dann den ATMEG8 in das UNO Board gesetzt.

Als Platine habe ich Uno ausgewählt

Als Programmer AVRISP mkii oder Arduino as ISP

und der Upload vom Beispiel Blink funktioniert nicht.

Es muss doch dann möglich sein, über das USB Kabel vom UNO den µC zu programmieren

Hardtacker:
Dann den ATMEG8 in das UNO Board gesetzt.

Als Platine habe ich Uno ausgewählt

Als Programmer AVRISP mkii oder Arduino as ISP

Hallo,

das passt so nicht, kann so nicht gehen. Der UNO hat einen anderen Bootloader (Optiboot) mit anderer Baudrate. Für den alten ATMEGA8 Bootloader passt als Board "Arduino NG or older".
Oder alternativ gleich den neueren Optiboot (aus dem Ordner optiboot) - aber dann mit meinem "Arduino ATMEGA8 mit Optiboot". Und dann der normale USB Upload ohne Programmer aber auf richtigem Port...

Christian

Habe es nun ans laufen bekommen.

Habe die FuseBits nicht über PonyProg gesetzt sondern über das Mk2USB Port

Mit folgenden Settings:

8 Mhz interner RC-Oscillator

Low Fuse

11100100
Brown-out detection level at VCC=2.7 V; [BODLEVEL=1]
Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms; [CKSEL=0100 SUT=10]
High Fuse

11011001
Serial program downloading (SPI) enabled; [SPIEN=0]
Boot Flash section size=1024 words Boot start address=$0C00; [BOOTSZ=00]; default value
Lockbits

11111111
Mode 1: No memory lock features enabled
Application Protection Mode 1: No Lock on SPM and LPM in Application Section
Boot Loader Protection Mode 1: No lock on SPM and LPM in Boot Loader Section

Dann habe ich den µC auf meinem Steckboard wie bei Ardunio aufgezeigt angeschlossen.

Auf das Uno Board das Beispiel ISP geflasht, dann das Blink Beispiel ausgewählt. Programmer: Arduino as ISP und dann über die SHIFT+Upload das Beispiel auf den ATMEGA8 geladen.

Nun blinkt die LED.

Juhu

Danke euch allen, für die gute Unterstützung.

Ergänzung,

als Board habe ich dann "Arduino NG or older" ausgewählt, Prozessor ATMEG8