Forum: Mikrocontroller und Digitale Elektronik AVR programmieren über ISP mit Bluecontroller


von Ingo K. (kiki)


Lesenswert?

Hallo,

ich versuche den Bluecontroller als ISP Programmer über Bluetooth 
einzusetzen. Der EEPROM Speicher eines Atmega 64 soll damit drahtlos 
ausgelesen und beschrieben werden.
Dafür möchte ich dieses Projekt verwenden:

https://code.google.com/r/michaeldreher42-bluecontroller/

Zunächst habe ich nur den ISP Code im Speicher ohne Bootloader, um nicht 
an zwei Fronten zu kämpfen :-)

Bisher klappt die Einstellung der Fuses für den integrierten Atmega 88PA 
noch nicht. Low u. High lassen sich setzen, jedoch Ext und Loc nicht.

Gruß,
Ingo

von Michael D. (nospam2000)


Lesenswert?

Hallo Ingo,

Das programmieren des BlueController Bootloaders und der Fuses geht 
übrigens am einfachsten mit der Arduino Umgebung, wenn das komplette 
Paket aus https://code.google.com/r/michaeldreher42-bluecontroller/ 
zusätzlich installiert wurde (siehe Verzeichnis doc).

In der Datei "My Documents/Arduino/hardware/myAVR/programmers.txt" 
kannst Du deinen eigenen Programmer eintragen, falls er noch fehlt. 
Momentan habe ich den myAVR für die beiden Protokolle avr911 und 
stk500v2 eingetragen (je nachdem welche Firmware auf den myAVR geladen 
wurde):
1
myavr1.name=myAVR (avr911)
2
myavr1.communication=serial
3
myavr1.protocol=avr911
4
myavr1.speed=19200
5
6
myavr2.name=myAVR (stk500v2)
7
myavr2.communication=serial
8
myavr2.protocol=stk500v2
9
myavr2.speed=19200

Bei den Baudraten bin ich mir nicht sicher. Möglicherweise ist diese 
nicht relevant da die PC<=>Programmer Kommunikation ja über USB geht.

Den Rest kannst Du alles über das Arduino UI erledigen. Die Arduino 
Umgebung muss geschlossen sein oder neu gestartet werden, wenn die Datei 
geändert wird.

Dann in Arduino folgende Schritte machen:
im Menu Tools/Board "Bluecontroller ATmega88PA 19200bps" (bzw. passend 
zu deinem Board) auswählen
1. Im Menu Tools/Programmer den passenden "myAVR" Programmer Typ 
auswählen
2. Im Menu Tools/Serial Port den Serial Port des myAVR auswählen
3. Im Menu Tools den Eintrag "Burn Bootloader" auswählen

Dann werden alle Werte aus der Datei hardware.txt gelesen und der 
richtige Bootloader und die passenden Fuse Werte gebrannt.

 > Deine myAVR-Textdatei habe ich eingefügt, aber der Programmer
 > müsste STK500v2 sein und die Baudrate 57600.
 > Kann ich den Text einfach ändern ?

Den habe ich jetzt auch aufgenommen. Du kannst dort alles eintragen, was 
der avrdude als programmer type unterstützt.

Um den ISP Programmer Sketch danach zu laden:
1. Bluetooth Modul mit PC pairen
2. Im Menu Tools/Serial Port den Serial Port des BlueController 
auswählen
3. Im Menu File/Sketchbook/hardware/bluecontroller/BlueC_ISP auswählen
4. Den Bootloader in den Upload Mode bringen: INT0 und RST Taster 
gleichzeitig drücken und gedrückt halten, dann zuerst RST und danach 
INT0 Taster loslassen. Die Reihenfolge beim Drücken ist relativ egal, 
besser zuerst RST drücken.

5. "Upload" Button drücken

Danach ist der BlueController ISP Programmer im stk500v1 mode 
funktionsfähig. Für den "bluec" mode benötigst du noch den erweiterten 
avrdude, der als Sourcecode im Paket mit dabei ist. Die binaries muss 
ich mal dazu ablegen.

  Michael

von Ingo K. (kiki)


Lesenswert?

Danke Michael,

die Programierung mit der Arduino Umgebung muss ich noch nachholen wegen 
der Fuses.
Ich habe es jetzt erst einmal direkt mit dem myAVR gemacht, ohne Fuses, 
also nur das ISP Programm auf den Atmega88 installiert und danach den 
Bluecontroller an mein Projekt angeschlossen.

Nun bin ich einen großen Schritt weiter:
Die Bluetooth Verbindung funktioniert und ich kann sogar das EEPROM vom 
Atmega64 auslesen !!!

Aber... das Programm, das die EEPROM Daten ausliest und 
weiterverarbeitet meldet: " Ungültige EEPROM Datei "
Avrdude meldet jedoch kein Problem mit dem Auslesen.
Wenn ich den Atmega64 aber über USB-Kabel mit dem PC verbinde und 
auslese, ist die Datei ok.

Ich habe noch andere Programmer Einstellungen versucht, aber soweit wie 
oben beschrieben komme ich nur mit STK500v1. Bei anderen Einstellungen 
wird das Auslesen erst gar nicht gestartet.

Hast du da eine Idee ?

Gruß,
Ingo

von Michael D. (nospam2000)


Lesenswert?

Ingo K. schrieb:
> Die Bluetooth Verbindung funktioniert und ich kann sogar das EEPROM vom
> Atmega64 auslesen !!!
> Aber... das Programm, das die EEPROM Daten ausliest und
> weiterverarbeitet meldet: " Ungültige EEPROM Datei "

Kannst Du mir die beiden unterschiedlichen Dateien mal schicken oder 
selbst die Unterschiede vergleichen?

> Wenn ich den Atmega64 aber über USB-Kabel mit dem PC verbinde und
> auslese, ist die Datei ok.

Was meinst Du damit,  d.h. wie wird diese Datei ausgelesen? Geht dies 
über einen externen Programmer (den myAVR?) oder ist auf dem ATmega64 
ein Programm drauf, welches die Daten schickt und ggf. noch umwandelt?
Verwendest Du für beides avrdude?

  Michael

von Ingo K. (kiki)


Lesenswert?

Michael Dreher schrieb:
> Kannst Du mir die beiden unterschiedlichen Dateien mal schicken oder
> selbst die Unterschiede vergleichen?

werde ich mal machen, aber dafür muss ich erst alles wieder umbauen.....

Michael Dreher schrieb:
> Was meinst Du damit,  d.h. wie wird diese Datei ausgelesen? Geht dies
> über einen externen Programmer (den myAVR?)

Ja, wie vorher mit dem myAVR Programmer. Das Auswerteprogramm verwendet 
Avrdude zum auslesen und schreiben.

Ingo

von Ingo K. (kiki)


Angehängte Dateien:

Lesenswert?

Hallo Michael,

habe hier mal beide EEPROM Dateien hochgeladen. Beide sind gleich groß, 
aber irgend etwas muss anders sein.

Kannst du das mal checken ?

Die Datei "ok" wird mit STK500V2 u. myAVR Programmer ausgelesen,
die "bad" wird mit STK500V1 u. Bluecontroller ausgelesen.
Kann es daran liegen ?

( Die Files umbenennen von .txt in .hex )

Danke,
Ingo

von Ingo K. (kiki)


Lesenswert?

Ich habe jetzt mal die "ok" Datei über den Bluecontroller in das EEPROM 
vom Atmege64 geschrieben und habe folgende Fehlermeldung erhalten:

======================================================================== 
=========
Started AVRDUDE
D:/Programme/companion9x/avrdude.exe -c stk500v1 -p m64 -P com4 -U 
eeprom:w:D:/DOKUME~1/Alle/LOKALE~1/Temp/compat.bin:r
======================================================================== 
=========

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 
0.22s

avrdude.exe: Device signature = 0x1e9602
avrdude.exe: current erase-rewrite cycle count is 151454093 (if being 
tracked)
avrdude.exe: reading input file 
"D:/DOKUME~1/Alle/LOKALE~1/Temp/compat.bin"
avrdude.exe: writing eeprom (2048 bytes):

Writing | ################################################## | 100% 
125.53s

avrdude.exe: 2048 bytes of eeprom written
avrdude.exe: verifying eeprom memory against 
D:/DOKUME~1/Alle/LOKALE~1/Temp/compat.bin:
avrdude.exe: load data eeprom data from input file 
D:/DOKUME~1/Alle/LOKALE~1/Temp/compat.bin:
avrdude.exe: input file D:/DOKUME~1/Alle/LOKALE~1/Temp/compat.bin 
contains 2048 bytes
avrdude.exe: reading on-chip eeprom data:

Reading | ################################################## | 100% 
37.05s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0x04 != 0x41
avrdude.exe: verification error; content mismatch

avrdude.exe done.  Thank you.


======================================================================== 
=========
AVRDUDE done - exit code 1
======================================================================== 
=========

von Michael D. (nospam2000)


Lesenswert?

Ingo K. schrieb:
> habe hier mal beide EEPROM Dateien hochgeladen. Beide sind gleich groß,
> aber irgend etwas muss anders sein.

Ich die Files mal verglichen. Es sieht so aus, dass in der "bad" Datei 
immer 8 Byte identisch sind mit der good Datei und dann 8 Byte fehlen. 
Muss mir den ISP Programmer Code mal ansehen, was das solche Phänomene 
verursachen kann.

  Michael

von Ingo K. (kiki)


Lesenswert?

Wenn immer 8 Bytes fehlen, dann müsste die Datei doch kleiner sein, 
oder?
Ich habe sie einfach mal mit dem Windows Texteditor verglichen und für 
mich sieht es so aus, als ob alles vorhanden ist aber nur etwas 
durcheinander in der Reihenfolge.

Das ist nur mein Eindruck und kann natürlich auch falsch sein.

Ingo

von Ingo K. (kiki)


Lesenswert?

Jetzt mit dem neuen ISP Code für den Bluecontroller funktioniert alles 
bestens mit STK500v1 !!
Vielen Dank

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.