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
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
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.
Johannes Kreller schrieb: > Würde gerne es VB.NET oder C# Tool reinschreiben, damit der Text sich > ändert. Was hindert dich?
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
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.
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.
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.
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
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.
c-hater schrieb: > benötigen, da man zumindest stdio und stderr abfangen muss, um sinnvoll stdio sollte natürlich stdout heißen.
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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.