Forum: Mikrocontroller und Digitale Elektronik Einsteig mit ATmega8 unter Linux


von Max (Gast)


Lesenswert?

Hallo Gemeinde,

Ich hab mich entschlossen für einen Bekannten eine kleine 
Bierbrau-Steuerung (Temperaturregelung mit KTY81) zu programmieren und 
bin gerade dabei mich in die Thematik einzuarbeiten. Da ich beruflich 
bereits Software entwickle (C++ unter RT-Linux) hab ich ein wenig 
Vorahnung ... doch aller (Neu-)Anfang ist bekanntlich schwer.

Nach langem hin und her hab ich mich für das "Atmel Evluations-Board 
Version 2.0" von Pollin entschieden und möchten für meine Anwendung 
einen ATmega8 verwenden. Gestern hab ich das board bestückt und heute 
mal unter Windows mit Ponyprog das Pollin-Testprogramm eingespielt ... 
das hat dann auch soweit funktioniert.

Da ich fast nur mehr auf Linux (Debian) arbeite und alle Tools vorhanden 
sind hab ich als nächsten Schritt gleich die nötigen Pakete installiert 
und mal versucht den Inhalt des eeproms auszulesen, doch leider ohne 
erfolg.

Ich konnte trotz Suche hier im Forum und im www nicht ausfindig machen 
welchen Programmieradapter (option -c) man avdrdude mit auf den weg 
geben muss um den ATmega8 und das oben genannte board (RS232-ISP 
Schnittstelle) benutzen zu können ... weiss das vielleicht jemand? Ich 
hab jetzt mal auf verdacht "ponyser" angegeben

Und das kam dabei raus:
1
$> avrdude -p m8 -P /dev/ttyS0 -b 9600 -c ponyser -U eeprom:r:eeprom.hex
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.00s
6
7
avrdude: Device signature = 0x1e9307
8
avrdude: reading eeprom memory:
9
10
Reading | ################################################## | 100% 0.19s
11
12
avrdude: writing output file "eeprom.hex"
13
avrdude: output file eeprom.hex auto detected as invalid format
14
avrdude: invalid output file format: -1
15
avrdude: write to file 'eeprom.hex' failed
16
17
avrdude: safemode: Fuses OK
18
19
avrdude done.  Thank you.

Hab vorher noch via ponyprog ins eeprom geschrieben doch leider ist das 
file nach dem auslesen leer. Gibt man noch den Filetyp (-U 
eeprom:r:eeprom.hex:h) mit an füllt er alles mit 0xff auf. Weiss dazu 
jemand etwas?

Und hat vielleicht jemand ein simples Beispiel inkl C-Sourcecode und 
Makefile usw. von dem man mal ausgehen und sich dann weiterarbeiten 
kann?

Herzlichen Dank,
Max

von Christian U. (z0m3ie)


Lesenswert?

Also die Device ID schaut recht gültig aus. Für mich schaut das aus als 
ob er  sich schon mit dem Controller unterhält weissa ber nicht in 
welchem Ausgabeformat du denn das EEPROm File haben möchtest. Ich kann 
dir aber ausm hut nicht sagen wie das geht musst mal in die avrdude doku 
schaun...

von Εrnst B. (ernst)


Lesenswert?

Du hast mit dem Pollin-Beispiel-Program den FLASH-Speicher beschrieben, 
liesst aber mit avrdude den EEPROM-Speicher aus.

versuch mal
1
avrdude -p m8 -P /dev/ttyS0 -c ponyser -t

(kein -b, Baudrate ist bei bitbanging-Adaptoren schnuppe)

-t öffnet den terminal-modus.

dann
1
dump flash

/Ernst

von Max (Gast)


Lesenswert?

hex-Format wäre mir je eh recht, dazu muss man bei der -U Option hinten 
noch ":h" anhängen ... dann meckert avrdude zwar nicht mehr aber der 
inhalt stimmt nicht. Es steht auf jeden fall nicht das drinnen was ich 
mit ponyprog reingeschrieben hab.

von Max (Gast)


Lesenswert?

Ich hab zum test mal das pollin-prog mit ponyprog auf den kontroller 
geladen - das hat funktioniert.

Dann hab ich noch mit ponyprog etwas ins eeprom geschrieben - das hat 
auch funktioniert.

Und jetzt hab ich mit avrdude das eeprom wieder ausgelesen - und der 
inhalt passt nicht, stehet nur 0xff drinnen. So wie bei einem leeren 
eeprom.

von C. H. (_ch_)


Lesenswert?

Hast du dazwischen mal geflasht? Wenn ja, dann sei dir bewusst, dass das 
EEPROM auch gelöscht wird, wenn man nicht explizit die "EEPROM-save" 
Fuses programmiert hat.

Gruß,
Christian

von Max (Gast)


Lesenswert?

1
$> avrdude -p m8 -P /dev/ttyS0 -c ponyser -t
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.00s
6
7
avrdude: Device signature = 0x1e9307
8
avrdude> dump flash
9
>>> dump flash 
10
0000  0c 94 2a 00 18 95 00 00  18 95 00 00 18 95 00 00  | .*.............|
11
0010  18 95 00 00 18 95 00 00  18 95 00 00 18 95 00 00  |................|
12
0020  18 95 00 00 18 95 00 00  18 95 00 00 18 95 00 00  |................|
13
0030  18 95 00 00 18 95 00 00  18 95 00 00 18 95 00 00  |................|

... hmmm, da scheint dann ja doch etwas drinnen zu stehen.

von Max (Gast)


Lesenswert?

nein ... nachdem ich mit ponyprog ins eeprom geschrieben hab, hab ich 
kein progrmm mehr ins flash geladen.

von C. H. (_ch_)


Lesenswert?

was sagt "dump eeprom 0 255" ?

von Εrnst B. (ernst)


Lesenswert?

Naja, avrdude scheint dann wenigstens zu funktionieren, evtl. hast du 
dir die Lock-Fuses verstellt (soll ja bei Ponyprog öfters vorkommen, 
dass man unbeabsichtigt die fuses falsch schreibt)

Kannst jetzt ja zum testen mit avrdude neu flashen, und dabei die fuses 
kontrollieren (dump hfuse, dump lfuse etc...)

zum Berechnen des Hexwertes der Fuses gibts:

http://palmavr.sourceforge.net/cgi-bin/fc.c

/Ernst

von Max (Gast)


Lesenswert?

1
avrdude> dump eeprom 0 255
2
>>> dump eeprom 0 255 
3
0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
4
0010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
5
0020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
6
0030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
7
0040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
8
0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
9
0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
10
0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
11
0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
12
0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
13
00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
14
00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
15
00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
16
00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
17
00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
18
00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff     |............... |

blödsinn ... zuvor hatte ich ja das flash ausgelesen. im eeprom is alles 
auf 0xff

Max

von C. H. (_ch_)


Lesenswert?

dann steht auch definitiv nichts im EEPROM. Wirklich sicher, dass das 
Pony das EEPROM richtig beschrieben hat?

von Max (Gast)


Lesenswert?

beim holen der hfuses bekomm ich folgendes (selbiges bei den lfuses):

1
$> avrdude -p m8 -P /dev/ttyS0 -c ponyser -U hfuses:r:eeprom.hex
2
3
avrdude: AVR device initialized and ready to accept instructions
4
5
Reading | ################################################## | 100% 0.00s
6
7
avrdude: Device signature = 0x1e9307
8
"hfuses" memory type not defined for part "ATMEGA8"

ja ja die (con)fuses ... muss mir nochmal die Unterlagen vom mega8 
anschaun, auf den ersten blick wars ein wenig verwirrend. Ich hab sie 
auch mit ponyprog verändert, bin mir aber net sicher ob sie passen. 
Wichtig ist mir eigentlich eh nur die 16MHz vom externen Oszilator.

Veilleicht noch ein simpler Beispielcode in C inkl. Makfeile?

Danke mal auf jeden Fall,
Max

von Εrnst B. (ernst)


Lesenswert?

"dump hfuse" ohne "s" am Ende ;)
gäb noch "lfuse", "calibration", "lock" und "signature"

Ansonsten kannst du auf der avrdude Console auch direkt Hexwerte ins 
EEprom schreiben und wieder auslesen, wenn du das noch testen willst.

von Max (Gast)


Lesenswert?

@ C. H.
Ich werds morgen nochmal kontrollieren ... könnte ja schon sein dass 
ponyprog doch nix ins eeprom geschrieben hat.

@ Ernst Bachmann
ooops ... danke!
das schaut dann auch schon besser aus:
1
avrdude> dump hfuse
2
>>> dump hfuse 
3
0000  d9                                                |.               |
4
5
avrdude> dump lfuse
6
>>> dump lfuse 
7
0000  ef                                                |.               |
8
9
>>> dump calibration 
10
0000  9b 9b 92 93                                       |....            |
11
12
avrdude> dump lock
13
>>> dump lock 
14
0000  3f                                                |?               |
15
16
avrdude> dump signature
17
>>> dump signature 
18
0000  1e 93 07                                          |...             |

Also scheint ja als würde avrdude unter linux soweit funktionieren.

Kennt jemand einen Debian-Mirror wo man ponyprog bekommt, so zum testen?

Danke,
Max

von C. H. (_ch_)


Lesenswert?

>Kennt jemand einen Debian-Mirror wo man ponyprog bekommt, so zum testen?
Warum unbedingt das Pony?
Wenn du nur was mit GUI willst, dann such hier im Forum mal nach 
"burnomat" oder so. Da hat einer eine ganz schöne Oberfläche für avrdude 
geschaffen.

Gruß,
Christian

von Max (Gast)


Lesenswert?

ich glaub dass ich mit avrdude eh glücklich bin ... man kann es perfekt 
ins Makefile einbinden und ich steh auch auf konsole applikation. Dachte 
nur mal so testhalber.

burnomat (http://avr8-burn-o-mat.aaabbb.de/) schaut auch recht nett aus 
... vorallem um die fuses zu setzten vielleicht net schlecht.

Danke,
Max

von Gast (Gast)


Lesenswert?

Ich würde Windows empfehlen, mit dem AVRISP von Atmel und AVRStudio. Da 
kann man sich auf die eigentliche Aufgabe konzentrieren, als erst mal 
das Werkzeug in betrieb zu setzen.

von C. H. (_ch_)


Angehängte Dateien:

Lesenswert?

>ich steh auch auf konsole applikation
wenn man seiner Tastatur mächtig ist, ist's auch noch schnell :)

>Veilleicht noch ein simpler Beispielcode in C inkl. Makfeile?
Hab dir mal was drangehängt. Ist nur ein kleines Lauflich am PortD.

Gruß,
Christian

von Max (Gast)


Lesenswert?

@C.H.

Danke!

Es wird zwar die io.h noch nicht gefunden aber das bekomme ich auch noch 
hin. Mal schaun welches Paket da noch fehlt oder der include-path passt 
nicht.

Gute Nacht,
Max

von C. H. (_ch_)


Lesenswert?

apt-get install binutils-avr

von C. H. (_ch_)


Lesenswert?

oder auch die "avr-libc"

von Max (Gast)


Lesenswert?

Bei den binutils-avr ist dei header nicht dabei und avr-libc findet 
"apt-get install" nicht.

1
$> apt-get install avr-libc
2
Reading package lists... Done
3
Building dependency tree       
4
Reading state information... Done
5
Package avr-libc is not available, but is referred to by another package.
6
This may mean that the package is missing, has been obsoleted, or
7
is only available from another source
8
E: Package avr-libc has no installation candidate

eine ahnung wo die zu finden sind?

von C. H. (_ch_)


Lesenswert?

puh, was wird denn mit "apt-cache search avr" alles gefunden?
Bei mir sind da beide mit dabei...

von Max (Gast)


Lesenswert?

ja da hab ich auch schon geschaut, aber leider nix:

1
$> apt-cache search avr
2
ava - Algebraical Virtual Assembler for Atmel's AVR MCUs
3
avarice - use GDB with Atmel's JTAG ICE for the AVR
4
avra - Assembler for Atmel AVR microcontrollers
5
avrdude - software for programming Atmel AVR microcontrollers
6
avrdude-doc - documentation for avrdude
7
avrp - Programmer for Atmel AVR microcontrollers
8
avrprog - Programmer for Atmel AVR microcontrollers
9
binutils-avr - Binary utilities supporting Atmel's AVR targets
10
gcc-avr - The GNU C compiler (cross compiler for avr)
11
gdb-avr - The GNU Debugger for avr
12
libgringotts2 - encapsulate data in an encrypted and compressed file
13
sdcc - Small Device C Compiler
14
sdcc-doc - Small Device C Compiler (documentation)
15
sdcc-libraries - Small Device C Compiler (libraries)
16
simulavr - Atmel AVR simulator
17
traceroute-nanog - Determine route of packets in TCP/IP networks (NANOG variant)
18
uisp - Micro In-System Programmer for Atmel's AVR MCUs
19
libmjpegtools-dev - MJPEG video capture/editting/playback MPEG encoding
20
libmjpegtools0 - MJPEG video capture/editting/playback MPEG encoding
21
mjpegtools - MJPEG video capture/editting/playback MPEG encoding

meine sources.list schaut folgendermassen aus:

1
deb http://ftp.at.debian.org/debian testing main non-free
2
deb http://www.debian-multimedia.org testing main
3
4
# Acrobat Reader
5
deb http://ftp.debian-unofficial.org/debian testing non-free
6
7
# Skype
8
deb http://download.skype.com/linux/repos/debian/ stable non-free

von C. H. (_ch_)


Lesenswert?

Ich verwende die Ubuntu Standard-sourcelist.

vielleicht hilft das:http://www.frost.de/files/avr-libc_1.4.5-3_all.deb

von Max (Gast)


Lesenswert?

jop, das wars ... jetzt funktionierts auch mit dem kompilieren.

Danke nochmals für deine Hilfe,
Max

von C. H. (_ch_)


Lesenswert?

Bitte.

Gute Nacht,
Christian

von Max (Gast)


Lesenswert?

Hab soeben nochmal mit ponyprog das eeprom ausgelesen und auch nur 0xFF 
bekommen ... bin ich froh :-)

Max

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.