Hallo, ich wollte mal fragen, wie man das realisiert, wenn man nachträglich bestimmte Parameter im Programmcode verändern kann. Dies sollte über die RS232 Schnittstelle geschehen. Als Beispiel wäre hier ein temperaturgesteuerter Motor, für den die Werte "untere Schwelle" (nicht drehen) "obere Schwelle" (maximale Drehzahl) "Sensibilität" (lin Beschleunigung) Um einen Wert zu verändern, würde ich einfach diesen über das UART Register zum MC senden. Dieser Wert wird dann ins EEPROM abgespeichert, ins Ram geladen und verarbeitet. Das Problem ist nur, dass ich das so nicht bei mehreren Parametern hinkriege. (vgl. Bsp.) Eine andere Möglichkeit, die ich noch nicht ausprobiert habe, wäre die Parameter der Reihenfolge nach zu übermitteln und jeweils, wenn einer vom UART empfangen wurde, einen Index hochzählen lasse, welcher dann angibt, wo die Werte hingeschrieben werden sollen. Ich benutze übrigens den MEGA8.
Gute Idee, probier doch mal die andere Möglichkeit aus. Und welches Bsp. sollen wir vergleichen? Wenn's mit einem klappt und mit mehreren nicht, ev. Timing-Problem beim Speichern ins EEPROM?
> wenn man nachträglich bestimmte Parameter im Programmcode verändern kann Falls Du AVRs meinst, da kann man den Programmcode nicht so ohne weiteres ändern. Bei anderen µPs ist soetwas ebenfalls mehr als heikel. Am einfachsten schickst Du eine Zeichenkette (printf(.....)), wo die Parameter nacheinander durch Kommata getrennt sind und zerpflückst den String im µP wieder. Soll es anspruchsvoller werden, kann man seine Daten auch z.B. in einen String mit Intel-Hex-Format packen. Die Prüfsumme macht die Sache sicherer, die Speicheradresse zeigt gleich das richtige Ziel an.
>>Und welches Bsp. sollen wir vergleichen? Ich wollte nochmal auf das Beispiel der 3 Parameter bei der Motorsteuerung verweisen. >>Gute Idee, probier doch mal die andere Möglichkeit aus. Das Problem hierbei ist nur, dass immer alle 3 Werte eingegeben werden müssen. Ich könnte natürlich jeweils vom UART zu PC einen Abfragestring senden, damit man weis, welche Werte man eingeben soll. Vorerst probiere ich das mit eine Terminalprogramm. Später will ich allerdings die Parameter über ein Visual C Programm übergeben. Ich habe fertige Produkte gesehen, wo man konfortabel Werte eingeben konnte, die dann an die Schaltung gesendet wurden. Ich verstehe nur nicht wie diese vielen Werte richtig zugeordnet werden konnten, da die Daten auch über RS232 übermittelt wurden.
Wie wär's mit einer Art Protokoll? Du schickst den Daten dann immer einen Index mit. MfG
Ach so, das Beispiel. Sorry. Ja, Du musst entweder eine Kombination aus Parameter und Wert senden, also z.B.: "untere Schwelle" (nicht drehen): USnnn "obere Schwelle" (maximale Drehzahl) OSnnn "Sensibilität" (lin Beschleunigung) SEnnn wobei US, OS, SE den Parameter kennzeichnen und nnn den zu setzenden Wert. Oder Du liest alle Parameter über die Schnittstelle aus, zeigst sie auf Wunsch auch in Deinem Programm an und sendest nach erfolgter Änderung einzelner oder aller Parameter immer alle Parameter an den Controller.
Definiere ein Zeichen (Byte), welches in den Parametern nicht vorkommen kann (zum Beispiel 0 oder 255). Dies nimmst Du als Startbyte. Daran hängst Du Deine 3 Parameter. Eventuell schickst Du noch eine Prüfsumme hinterher. Der µC empfängt alle 4 Bytes + Prüfsumme, schreibt sie zunächst in einen RAM-Puffer und weiß anhand des Startbytes, welches Datenbyte letztlich wohin muß. Dann speicherst Du nacheinander alle Bytes in die passenden EEPROM-Zellen, wobei dieser Vorgang pro Byte etwa 4ms Zeit braucht (gibt es ein Flag für, das abgefragt und kontrolliert werden muß, bevor ein neues Byte geschrieben werden kann).
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.