Forum: PC-Programmierung Visual Basic Programm zur Programmierung von AVRs


von Hilel (Gast)


Lesenswert?

Hallo zusammen.
Ich habe vor, ein Programm in VB zu schreiben, das mir sowohl das
Programmieren als auch das Auslesen des Flash-Speichers und des
EEPROMs
über die ISP-Schnittstelle ermöglicht. Die ausgelesenen Daten sollen
ausgewertet werden. Zunächst soll das Programmieren auf einen AVR-Type
begrenzt werden. Ich weiss, dass es bei Atmel AVR Studio gibt, aber
das
löst mein Problem nicht. Ich brauche ein Programm, das in der Lage
ist,
die HEX-Datei für den Flash-Speicher zu ändern, an den zu
programmierenden uC zu übertragen, das EEPROM auszulesen und einige
Speicherzellen davon auszuwerten. Das Programm soll auf die
Application
Note AVR910 basieren.
Hat schon mal jemand von Euch was ähnliches gemacht?
Für jeden Vorschlag bin ich sehr dankbar.

von Hannes Lux (Gast)


Lesenswert?

Hallo...

Ich habs in QBASIC gemacht (QB 4.5), weil ich mit Pony nix gebacken
gekriegt habe... Dabei habe ich mich strikt an die Datenblätter der
AVRs gehalten. Mein ISP-Adapter ist auch etwas unüblich, er bekommt
extern 5V und versorgt die Zielschaltung mit.

Da das Programm noch lange nicht alle AVR-Typen unterstützt und ich
keine Lust darauf habe, andauernd Anfragen nach dem Motto "warum geht
das mit dem Typ xyz nicht?!" beantworten zu müssen, möchte ich
Programm & ISP-Adapter nicht für die Öffentlichkeit frei geben.

Ziel war nicht, ein (möglichst perfektes) ISP-Programm zu schreiben,
sondern mit den vorhandenen Mitteln möglichst schnell und preiswert
AVRs zu programmieren. Und da das "Vorhandene" bei mir nicht
funktionierte, musste QB dran glauben, das hat schon so manche Probleme
beseitigt bzw. gelöst...

Ich habe auch nicht die Absicht, alle Typen zu implementieren, mir
reicht es, wenn das Programm die Typen brennt, die ich selbst verwende.
Sollte ich mit einem neuen Typ beginnen, dann wird dieser Typ eben
implementiert (laut Datenblatt).

Bisher werden folgende Typen unterstützt:
AT90S 1200, 2313, 4433, 8515, 8535
AT-Tiny 12, 15
AT-Mega 8, 32 (beide noch nicht getestet!)

Auf Brennen von Lock-Bits wurde verzichtet.
Das Lesen / Brennen von Fuse-Bits ist bisher auch noch nicht
implementiert.

Beim Tiny12 und 15 wird automatisch der interne RC-Oszillator
kalibriert, indem beim Löschen das Kalibrationsbyte in die letzte Zelle
des Flash kopiert wird (wie es der Hersteller macht), solange das
Programm die letzte Zelle nicht belegt. Bei den Megas wird das zwar
auch gemacht, ist aber noch nicht getestet.

Weiterhin ist ein Löschzähler vorhanden, der anzeigt, wie oft ein Chip
gelöscht wurde. Bei kalibrierbaren Typen werden dabei die Chips anhand
des Kalibrationsbytes unterschieden (ich hatte noch keine zwei
gleiche...).

Die Oberfläche ist Rollbalken-orientiert, auf Mausunterstützung wurde
bewusst verzichtet. Die Dateiroutinen setzen voraus, dass die Daten
(HEX, EEP) im selben Ordner liegen wie das Programm, auf Ordnerwechsel
wurde bewusst verzichtet. Ich kopiere das Programm eben in jedes neu
begonnene Projekt. Da das Programm als selbstständig laufende EXE nur
73KB groß ist, kann ich damit leben... Ich arbeite unter WIN98SE, mit
NT-basierenden OS wird das Programm wohl nicht funktionieren...


Warum willst du das in VB machen?
Wie willst du unter VB die LPT ansprechen?

VB ist mir nicht ganz fremd, habe damit einige Programme, u.a. im Foto-
und Sound-Bereich erstellt (Fotoarchivierung/Verwaltung,
HTML-Fotoalbum-Generator, Soundbearbeitung/Schnitt für Modellbau...).
Ich habe aber bisher noch keinen Weg gefunden (aber dank QB auch noch
nicht intensiv gesucht), Direktzugriff auf den I/O-Bereich zu
programmieren.
Mit GFA-BASIC soll das gut gehen, damit habe ich aber noch nix
gemacht...

Bit- & Bytebruch... - ...HanneS...

von Pfi (Gast)


Lesenswert?

Hallo!

Ich kann dir zwar beim Problem des Brennens selber keine Tipps geben,
kann dir aber sagen, dass der Zugriff auf Parallelschnittstelle
überhaupt kein Problem darstellt. Ich hbe eine Schrittmotorsteuerung in
VB programmiert und habs bei mir mit Win95/Win98SE getestet, keine
Ahnung obs auch mit NT funktioniert, könnte sein, kann dirs aber nicht
garantieren. Falls du Tipps brauchst hierzu, dann melde dich, aber es
gibt APIs dazu, die so odr so gut dokumentiert sind.

Grüsse

von Hannes Lux (Gast)


Lesenswert?

Hi Pfi...

Stimmt, inzwischen habe ich auch davon gehört. Aber als ich das
brauchte, hatte ich noch keinen Internet-Zugang, die Freunde, die
Zugang hatten, hatten keine Ahnung... Da war es einfacher, sich auf IN
und OUT des QB zu besinnen und das damit zu realisieren.

Inzwischen bin ich auf dem Punkt, dass ich VB den Rücken kehren möchte,
komme aber schlecht davon weg. M$ versteht es, einem den Weggang schwer
zu machen.

GFA wäre die interessante Alternative, aber ich finde einfach nicht die
Zeit (oder ist es die Lust?) für den Einstieg...

Auch Purebasic steht als Alternative zu VB zur Debatte, ich habe aber
noch nicht recherchiert, ob es dafür eine API für I/O-Direktzugriff
gibt.

Trotzdem danke für den Hinweis...
Kannst ja mal einen Link hier posten, wo es die API und eine (möglichst
deutsche) Doku dazu gibt...

Bit- & Bytebruch... - ...HanneS...

von Hilel (Gast)


Lesenswert?

@Hannes Lux
>Warum willst du das in VB machen?
>Wie willst du unter VB die LPT ansprechen?
Die Programmierung soll über die serielle Schnittstelle stattfinden und
auf die AN910 basieren. Ich habe es oben erwähnt.
Ich habe mich für RS232 und VB entschieden, weil ich mir ein
Programmiergerät gebaut habe, das auf AN910 basiert. Es versorgt die
Zielschaltung mit 5V und die FW wurde für die Unterstützung anderer
Typen erweitert.
Ich habe auch nicht die Absicht, alle Typen zu implementieren. Das
Programm soll einen bestimmten Typ programmieren, auslesen, EEPROM
auslesen und auswerten können.
Auf Brennen von Lock-Bits, Lesen bzw. Brennen von Fuse-Bits werde ich
verzichten.
da, wie Pfi gesagt hat, der Zugriff auf Parallelschnittstelle
überhaupt kein Problem darstellt, überlege ich schon, ob ich ein
Programmiergerät für die LPT bau und (laut Datenblätter) ein Programm
in VB schreibe. Unter WIN95/98 würde es ohne Probleme funzen. Unter
WinXP habe ich es bis jetzt noch nicht probiert, ob der Zugriff auf die
LPT Probleme bereitet.
Ich glaube von Burkhard Kainka gibt es eine API für die LPT.

@Pfi
>Falls du Tipps brauchst hierzu, dann melde dich.
Ich komme gern drauf zurück, wenn ich so weit bin.
Ich will es aber erstmal über die RS232 mit dem vorhandenen
Programmiergerät und der FW AN910 probieren, weiss aber nicht, wo ich
anfangen soll. Mir fehlt das Protokoll der AN910.
Ich danke euch für die raschen Antworten.

von Robert Meisenbacher (Gast)


Lesenswert?

Hallo zusammen,

ich habe das gleiche Problem wie der Themenstarter.
Die RS-232 über VB anzusprechen ist relativ einfach, ich weiß aber
nicht wie ich damit den AVR zum Ein-und Auslesen von z.b. Flash und
EEProm bringen kann (Bootloader?).
Über die LPT könnte ich den serielle Programmiermodus(MISO,MOSI,SCK)
vom AVR bedienen. Dazu gibt`s im Netz diverse API`s für VB.
Die Befehle und das Timing der seriellen Programmierung vom AVR sind in
den AVR-Datenblättern gut beschrieben.
Hab allerdings lange nicht`s in VB programmiert und sollte mich daher
mal intensiv um die LPT-Ansteuerung kümmern.

Gruß
Robert

von Sven (Gast)


Lesenswert?

Hi Hannes!

Vergiß GFA, PureBasic ist besser, ich steige gerade um. Vor allem gibt
es Unmengen Beispielprogramme, auch für RS232 und LPT. RS232 habe ich
gestern implementiert, gibt es auch verschiedene Varianten mit DLL
(PORT.DLL und InpOut32.DLL) und Libs (MVCOM muß ich mal noch
ausprobieren). Habe PureBasic hier im Forum gefunden, dass hätte mir
vor einem halben Jahr über den Weg laufen müssen. ;-)

Sven

von Hilel (Gast)


Lesenswert?

Danke für die vielen Antworten

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.