Forum: Mikrocontroller und Digitale Elektronik Mit VB.NET in AVR EEPROM schreiben


von Johannes Kreller (Gast)


Lesenswert?

Hallo Gemeinde,

bin nicht neu hier aber schon seit 6 Jahren zum ersten mal wieder.
Gibt es eine Möglichkeit, mit C# oder VB.NET einen String in AVR Eprom 
zu schreiben?

Bin für jede Hilfe sehr dankbar
Johannes

von El Patron B. (bastihh)


Lesenswert?

Klar... Machbar ist alles....

Software für Windows in VB oder C# schreiben die mittels USB- 
Seriellwandler die Daten an den AVR schickt, der AVR  schreibt sie dann 
in ein EEProm (Der AVR muss natürlich die passenden Firmware haben, 
diese wirst du wahrscheinlich auch noch, neben der Windows Software, 
coden müssen. ;))

Also ohne es böse zu meinen: Bei der Art wie du die Frage stellst, ist 
die Gesamte Aufgabe für dich nicht durchführbar.


Was hast du denn genau vor? Und bitte keine Geheimniskrämerei, sonst bin 
ich raus.

(Edit): Kauf dir einfach ein Arduino Nano.

: Bearbeitet durch User
von Johannes Kreller (Gast)


Lesenswert?

Hey El Patron B,

danke für deine Antwort.
Ne ne nichts ist Geheimnis :-)

Ich habe mir ein Laufschrift gebaut und der Text ist nun jetzt fest in 
der EEPROM beim Flashen mit drin.

Würde gerne es VB.NET oder C# Tool reinschreiben, damit der Text sich 
ändert.

von EAF (Gast)


Lesenswert?

Johannes Kreller schrieb:
> Würde gerne es VB.NET oder C# Tool reinschreiben, damit der Text sich
> ändert.

Was hindert dich?

von Thomas F. (igel)


Lesenswert?

Dann suche dir erst mal eine Schnittstelle aus über die PC und AVR 
kommunizieren sollen.

Wird gerne gewählt: Ein USB-UART-Wandler
https://de.aliexpress.com/item/32735988635

von 900ss (900ss)


Lesenswert?

Ich sehe 2 Wege. Du suchst dir ein Interface mit dem du deinen PC an den 
AVR koppelst (UART, SPI, I2C, ....) und implementierst in der Firmware 
des AVR eine Möglichkeit, über das Interface die Bytes zu empfangen und 
schreibst sie dann in das EEPROM.
Oder du schreibst die Daten, die in das EEPROM sollen in ein Hexfile 
(Intel oder Motorola Format) und rufst dann von VB aus AVRDUDE mit 
entsprechenden Parametern auf und AVRDUDE programmiert die Bytes ins 
EEPROM. Dafür brauchst du dann noch ein Programmiergerät. Das sollte 
aber ja eh vorliegen, da du den AVR ja auch mit dem Programm bestücken 
musst.

Du könntest natürlich auch direkt den Programmer von VB aus ansprechen. 
Dafür musst du das Wissen über das Protokoll des jeweils verwendeten 
Programmers haben. AVRDUDE nimmt dir das ab.
Voraussetzung für AVRDUDE ist natürlich ein kompatibler Programmer. Aber 
mit den meisten Programmern kann AVRDUDE umgehen.

von EAF (Gast)


Lesenswert?

Johannes Kreller schrieb:
> Ne ne nichts ist Geheimnis :-)

Geheim ist:
1. welche Sprache auf dem µC
2. welcher konkrete µC
3. welche Schnittstelle
4. wie weit entfernt
und viele weitere ungeklärte Dinge

Solange es nicht konkreter wird empfehle ich:
https://github.com/thijse/Arduino-CmdMessenger
Vielleicht nicht optimal, aber alles daran um von C# zu AVR quatschen zu 
können.
evtl reichts dir ja, wenn du dir da ein bisschen abschaust.

von Stefan F. (Gast)


Lesenswert?

Johannes Kreller schrieb:
> Gibt es eine Möglichkeit, mit C# oder VB.NET einen String in AVR Eprom
> zu schreiben?

Mit AVR910 und AVR911 hat Atmel einen einfachen Programmieradapter zum 
Nachbauen samt Kommunikationsprotokoll beschrieben:
http://ww1.microchip.com/downloads/en/appnotes/atmel-0943-in-system-programming_applicationnote_avr910.pdf
https://ww1.microchip.com/downloads/en/Appnotes/doc2568.pdf

Etwas moderner sind Programmieradapter die das STK500 Protokoll 
sprechen. Die Bootloader von Arduino "sprechen" es ebenfalls:
https://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/doc2525.pdf

Ich würde an deiner Stelle allerdings nicht das Rad (die Software) neu 
erfinden, sondern dem Vorbild von Arduino folgen und einfach avrdude 
als Unterprogramm aufrufen.

von Sascha W. (sascha-w)


Lesenswert?

Also wenn einfach nur ein Text in den EEPROM soll wüsste ich jetzt nicht 
wozu man dafür auf dem PC ein extra Programm schreiben müsste. Da als 
Verbindung zum AVR eh nur Seriell (oder Seriell über USB) in Frage 
kommt, würde für das Übertragen des Textes auch ein Terminalprogramm 
ausreichen.
Im AVR sollte das keine große Sache sein, über UART reinkommende Daten 
puffern und mit abschließendem Steuzeichen (CR) den Puffer in das EEPROM 
übertragen.

Sascha

von c-hater (Gast)


Lesenswert?

Stefan F. schrieb:

> Ich würde an deiner Stelle allerdings nicht das Rad (die Software) neu
> erfinden, sondern dem Vorbild von Arduino folgen und einfach *avrdude*
> als Unterprogramm aufrufen.

Genau. Von Dotnet aus macht man das mit der Process-Klasse. Zu finden im 
Namespace System.Diagnostics. Und für Kommandozeilenprogramme (wie eben 
avrdude) wird man auch einiges von dem Zeug aus dem Namespace System.IO 
benötigen, da man zumindest stdio und stderr abfangen muss, um sinnvoll 
mit dem Programm zu interagieren.

von c-hater (Gast)


Lesenswert?

c-hater schrieb:

> benötigen, da man zumindest stdio und stderr abfangen muss, um sinnvoll

stdio sollte natürlich stdout heißen.

von Johannes Kreller (Gast)


Lesenswert?

900ss D. schrieb:
> Oder du schreibst die Daten, die in das EEPROM sollen in ein Hexfile
> (Intel oder Motorola Format) und rufst dann von VB aus AVRDUDE mit
> entsprechenden Parametern auf und AVRDUDE programmiert die Bytes ins
> EEPROM. Dafür brauchst du dann noch ein Programmiergerät. Das sollte
> aber ja eh vorliegen, da du den AVR ja auch mit dem Programm bestücken
> musst.

Hi 900ss,
die Methode hört sich besser an, da ich die Pins für den UART etc. 
vergeben habe. Die HEXfile könnte ich modifizieren und mit der AVRDUDE 
flsahen.

Wo gibt es ein Beispiel oder eine Erklärung, wie ich mit C# oder VB.NET 
die AVRDUDE ansteuern kann, d.h. AVRDUDE starten hexfile laden und 
flashen.

Danke
Johannes

von c-hater (Gast)


Lesenswert?

Johannes Kreller schrieb:

> Wo gibt es ein Beispiel oder eine Erklärung, wie ich mit C# oder VB.NET
> die AVRDUDE ansteuern kann, d.h. AVRDUDE starten hexfile laden und
> flashen.

Selber programmieren kommt nicht in Frage?

von Johannes Kreller (Gast)


Lesenswert?

c-hater schrieb:
>
> Selber programmieren kommt nicht in Frage?

Klar möchte ich selber programmieren, allerdings kenne ich die AVRDUDE 
nicht so gut. Ein Ansatz wäre hilfreich.

Danke
Johannes

von c-hater (Gast)


Lesenswert?

Johannes Kreller schrieb:

> Klar möchte ich selber programmieren, allerdings kenne ich die AVRDUDE
> nicht so gut. Ein Ansatz wäre hilfreich.

avrdude verhält sich wie praktisch jedes andere Kommandozeilenprogramm 
auch. D.h.: Starten, Beenden mitbekommen, Ausgaben abfangen ist genau 
so, wie immer in einer solchen Anwendung. Und natürlich gibt es 
Hunderte, wenn nicht sogar Tausende Beispiele für sowas im Netz. Mehr 
oder weniger korrekte...

Was bleibt, ist: avrdude mit den korrekten Parametern zu versorgen, 
damit es tut, was du willst. Das kannst du schon lange vor dem 
eigentlichen Programmieren ausprobieren, indem du es einfach benutzt. 
Die Doku für die möglichen Parameter ist vollständig, man muss sie nur 
lesen.

Schwierig ist eigentlich nur eins: die mitgelesenen Ausgaben von ardude 
zu parsen und zu bewerten. Da kann man es sich aber einfach machen und 
es einfach dem Benutzer überlassen, sich damit zu befassen. Sprich: du 
liest die Ausgaben ein und interessierst dich erstmal überhaupt nicht 
für deren Inhalt. Statt dessen schreibst du sie stumpf in eine 
Multiline-Textbox und überlässt es dem Benutzer, sie sinnvoll zu 
interpretieren. Also insbesondere, einzuschätzen: hat das nun geklappt 
oder nicht...

Aber man kann natürlich auch den Rückgabewert des Prozesses benutzen. 
Wenn der Prozess terminiert hat und da eine Null drinsteht, ist doch 
sehr wahrscheinlich, dass avrdude die gegebenr Anweisung erfolgreich 
ausgeführt hat. Nur eins ist so natürlich nicht gewährlistet: dass die 
gegebene Anweisung auch das war, was du wirklich wolltest.

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.