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: 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
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...
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.
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.
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
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
"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
"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.
@ 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
>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
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
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.
>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
@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