Forum: Mikrocontroller und Digitale Elektronik Vorgehensweise Setup in den AVR bringen?


von Mr. K. (kaktus-)


Lesenswert?

Hallo Leute,

folgende Problemstellung.

Es geht um einen AVR und einen PC. Auf dem PC läuft ein Programm was mit 
dem AVR über RS232 kommuniziert und diverse Flags und Messwerte, IO etc. 
vernünftig darstellt. In diese PC Programm gibt es auch eine Seite wo 
jede Menge Parameter (ca.30)eingestellt werden, die bei Veränderung an 
den AVR übertragen werden müssen. Es sind Strings und hauptsächlich Zeit 
Werte in 100ms Schritten.

Jetzt zur eigentlichen Frage:
Wie würdet ihr vorgehen?
- Im AVR über eine Schleife die Setup Parameter in die VAriablen laden?
- Oder Setup Parameter in einen RAM Bereich laden, um dann den Variablen 
den RAM Bereich zuzuordnen.

Bei Stromausfall sind diese Werte dann noch in EEPROM zu sichern.

Wie macht man so was effizient?

von Purzel H. (hacky)


Lesenswert?

Die Parameter sind sowieso im EEPROM des Controllers. Da werden sie beim 
power up her geladen. wahlweise kann amn diese Parameter vom PC her 
aendern.

von Vlad T. (vlad_tepesch)


Lesenswert?

Mr Kaktus schrieb:
> Es sind Strings und hauptsächlich Zeit
> Werte in 100ms Schritten.
warum sollte man Strings konfigurieren wollen, wenn sowiso ein 
PC-Programm die Auswertung macht?

>
> Jetzt zur eigentlichen Frage:
> Wie würdet ihr vorgehen?
> - Im AVR über eine Schleife die Setup Parameter in die VAriablen laden?
> - Oder Setup Parameter in einen RAM Bereich laden, um dann den Variablen
> den RAM Bereich zuzuordnen.
Kannst du mir mal kurz den Unterschied zwischen einer Variable und einem 
Ram-Bereich erklären?



Ich versteh das Problem nicht.
PC sendet Kommando mit neuen Parameter und AVR schreibt geänderte Werte 
in EEPROM.
Was gibts da großartig drüber nachzudenken?

Das einzige, was man sich üerlegen müsste, wär, ob man den Parametersatz 
als ganzes in einem Kommando überträgt oder für jeden Parameter ein 
eigenes Kommando oder irgendwas dazwischen.

von Mr. K. (kaktus-)


Lesenswert?

> Das einzige, was man sich üerlegen müsste, wär, ob man den Parametersatz
> als ganzes in einem Kommando überträgt oder für jeden Parameter ein
> eigenes Kommando oder irgendwas dazwischen.

Genau darum geht es.

von avr (Gast)


Lesenswert?

PC und Board sollten die gleichen Infos haben. Auf
dem Board hast du die bereits im EEProm.
Daher würde ich auf dem PC beim Starten (bzw. auf Befehl)
diese Daten lesen (als ein Block, d.h. alle hintereinander).
Wenn am PC was geändert wird wird dieser Wert (als Einzelwert)
an das Board übertragen.

avr

von Mr. K. (kaktus-)


Lesenswert?

Guter Vorschlag!

von Kluchscheißernder N. (kluchscheisser)


Lesenswert?

Und mach die EEP-Write-Routine so, dass sie vor dem Schreiben den alten 
Inhalt prüft und bei Gleichheit auf das Schreiben verzichtet. Das erhöht 
die Lebensdauer des EEP, da viele Schreibzyklen unterdrückt werden. 
Somit kannst Du auch (ungestraft) den gesamten Datenblock neu schreiben, 
auch wenn sich nur 1 Bit verändert hat. Es wird dann eben nur das Byte 
mit dem veränderten Bit neu geschrieben.

AVRs sind nicht überaus üppig mit RAM ausgestattet. Daher kann es 
(besonders bei kleinen AVRs mit wenig SRAM) sinnvoll sein, die Parameter 
beim Reset nicht ins RAM zu kopieren, sondern dann wenn sie gebraucht 
werden direkt aus dem EEP zu holen.

MfG

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.