mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einsteig mit ATmega8 unter Linux


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
$> avrdude -p m8 -P /dev/ttyS0 -b 9600 -c ponyser -U eeprom:r:eeprom.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307
avrdude: reading eeprom memory:

Reading | ################################################## | 100% 0.19s

avrdude: writing output file "eeprom.hex"
avrdude: output file eeprom.hex auto detected as invalid format
avrdude: invalid output file format: -1
avrdude: write to file 'eeprom.hex' failed

avrdude: safemode: Fuses OK

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

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Εrnst B✶ (ernst)
Datum:

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

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

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

-t öffnet den terminal-modus.

dann
dump flash

/Ernst

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
$> avrdude -p m8 -P /dev/ttyS0 -c ponyser -t

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307
avrdude> dump flash
>>> dump flash 
0000  0c 94 2a 00 18 95 00 00  18 95 00 00 18 95 00 00  | .*.............|
0010  18 95 00 00 18 95 00 00  18 95 00 00 18 95 00 00  |................|
0020  18 95 00 00 18 95 00 00  18 95 00 00 18 95 00 00  |................|
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.

Autor: Max (Gast)
Datum:

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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was sagt "dump eeprom 0 255" ?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
avrdude> dump eeprom 0 255
>>> dump eeprom 0 255 
0000  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0010  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0020  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0030  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0040  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
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

Autor: C. H. (_ch_)
Datum:

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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beim holen der hfuses bekomm ich folgendes (selbiges bei den lfuses):

$> avrdude -p m8 -P /dev/ttyS0 -c ponyser -U hfuses:r:eeprom.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307
"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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
avrdude> dump hfuse
>>> dump hfuse 
0000  d9                                                |.               |

avrdude> dump lfuse
>>> dump lfuse 
0000  ef                                                |.               |

>>> dump calibration 
0000  9b 9b 92 93                                       |....            |

avrdude> dump lock
>>> dump lock 
0000  3f                                                |?               |

avrdude> dump signature
>>> dump signature 
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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: C. H. (_ch_)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
apt-get install binutils-avr

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder auch die "avr-libc"

Autor: Max (Gast)
Datum:

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

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

eine ahnung wo die zu finden sind?

Autor: C. H. (_ch_)
Datum:

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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja da hab ich auch schon geschaut, aber leider nix:

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

meine sources.list schaut folgendermassen aus:

deb http://ftp.at.debian.org/debian testing main non-free
deb http://www.debian-multimedia.org testing main

# Acrobat Reader
deb http://ftp.debian-unofficial.org/debian testing non-free

# Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende die Ubuntu Standard-sourcelist.

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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jop, das wars ... jetzt funktionierts auch mit dem kompilieren.

Danke nochmals für deine Hilfe,
Max

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte.

Gute Nacht,
Christian

Autor: Max (Gast)
Datum:

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

Max

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.