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
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
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
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
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
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
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
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
Eine eigene Frage?
Dieser Thread ist über 13 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.