Hi, ich würde gerne wissen, wie man eine Konfiguration welche man in Windows paramtetriert (Win32 Anwendung mit Gui) auf einen STM32 überträgt damit das Programm auf dem uC darauf zugreifen kann und dementsprechend die Ausgänge schaltet. Ganz konkret will ich eine Anwendung schreiben um Eingänge und GPIO's zu schalten für eine I/O Box. Eingänge gehen an eine Eingangsbox mit einem STM32 .... dann per UART/RS485...an eine Ausgangsbox mit ebenfalls einem STM32 Also: Eingang 1 schaltet Ausgang2 (bspw. GPIO D2) oder Eingang 1 schaltet Ausgang14 .. je nach Konfiguration bzw. zuordnung wie ich es in dem Win Programm gemacht habe. Ich hab mir gedacht ich würde die Ein und Ausgabe Zuordnungen fest in if schleifen packen und mit Variablen welche in den Bedinungen stecken verknüpfen. und ich lade im prinzip eine Tabelle auf den Prozessor welche die GPIO's <-> Variable Zuordnung beinhaltet. if(Variable IN1 == true) { schaltet Out1 } die Tabelle sieht dann so aus IN1 = GPIO D2 IN2 = GPIO D5 INx = GPIO xx OUT1 = GPIO B4 OUT2 = GPIO B5 OUTx = GPIO xx nur muss dann halt der Prozessor drauf zugreifen und beim Reset darf die Tabelle nich verloren gehen. Wie würdet ihr das machen ? Genauso?
:
Verschoben durch Admin
marcel schrieb: > Hi, > > ich würde gerne wissen, wie man eine Konfiguration welche man in Windows > paramtetriert (Win32 Anwendung mit Gui) auf einen STM32 überträgt damit > das Programm auf dem uC darauf zugreifen kann und dementsprechend die > Ausgänge schaltet. > > Ganz konkret will ich eine Anwendung schreiben um Eingänge und GPIO's zu > schalten für eine I/O Box. > > Eingänge gehen an eine Eingangsbox mit einem STM32 .... dann per > UART/RS485...an eine Ausgangsbox mit ebenfalls einem STM32 > > > Also: > Eingang 1 schaltet Ausgang2 (bspw. GPIO D2) > > oder > > Eingang 1 schaltet Ausgang14 .. je nach Konfiguration bzw. zuordnung > wie ich es in dem Win Programm gemacht habe. > > > Ich hab mir gedacht ich würde die Ein und Ausgabe Zuordnungen fest in if > schleifen packen und mit Variablen welche in den Bedinungen stecken > verknüpfen. Es gibt keine if schleifen! Es ist eine if-Bedingung. > > und ich lade im prinzip eine Tabelle auf den Prozessor welche die GPIO's > <-> Variable Zuordnung beinhaltet. Die Tabelle ist ein Array, dann kannst du einfach mit einer For - Schleife darüber iterieren und deine Bedingungen abarbeiten. > if(Variable IN1 == true) > { > schaltet Out1 > } > > > die Tabelle sieht dann so aus > > IN1 = GPIO D2 > IN2 = GPIO D5 > INx = GPIO xx > > OUT1 = GPIO B4 > OUT2 = GPIO B5 > OUTx = GPIO xx > > > nur muss dann halt der Prozessor drauf zugreifen und beim Reset darf die > Tabelle nich verloren gehen. Dann musst du diese in einem Festspeicher ablegen, z.B. in einem Eeprom oder Flash oder so. > > > Wie würdet ihr das machen ? > > Genauso? Ich verstehe noch nicht genau was du damit bezweckst. Dein Text klingt nach "Anfänger", weisst du wie du z.B. die Tabelle Parsen kannst etc? Ich rate dir Schritt für Schritt vorzugehen, und zuerst mit einem kleinen Beispiel anzufangen, und dann dieses zu erweitern. mfg Andreas
> ich würde gerne wissen, wie man eine Konfiguration welche man in Windows > paramtetriert (Win32 Anwendung mit Gui) auf einen STM32 überträgt damit > das Programm auf dem uC darauf zugreifen kann und dementsprechend die > Ausgänge schaltet. Man linkt eine "Scripting engine" wie z. B. eLua dazu. Der PC überträgt dann die "Konfiguration" in Form eines Skriptes an den µC, welcher dann das Programm ausführt. Der µC interpretiert das Skript zur Laufzeit, und das Skript kann die Peripherie bedienen. http://www.eluaproject.net/ Der andere Ansatz besteht darin, daß der µC über eine API gezielt die Funktionen der Peripherie herausführt (GPIO high, GPIO low, etc.). In diesem Fall bleibt die Kontrolle auf dem PC, diese kann dort ebenfalls in Form eines Skriptes gestaltet werden. In beiden Fällen kann eine Applikation dem PC letztlich das Skript zur Laufzeit erzeugen, und zur Ausführung bringen.
interessant. aber der Controller muss die Konfiguration autark nach upload des scriptes behalten. wäre dies möglich?
Ja, speicher den Kram halt im Flash ab. Ich sehe nicht warum man für diese Aufgabe 2 STM32 braucht. Einer reicht doch auch.
ne zwei stueck weil es ja zwei getrennte boxen sind mit einer busverbindung da zwischen. eine Box fuer die signal eingaenge ... schalter, taster ... und eine box fuer die signal ausgaenge ... aktoren etc.
> aber der Controller muss die Konfiguration autark nach upload des > scriptes behalten. > > wäre dies möglich? SD-Karte, serielles EEPROM, batterie-gepuffertes RAM. Es gibt für die stm32 eine "application note", in welcher die Emulation von EEPROM im Flash beschrieben wird. "EEPROM emulation in STM32F10x microcontrollers"
Ja ich hab jetzt genau das gemacht. Ein Teil vom Flash (32K) zum EEPROM gemacht. Anschließend hab ich dort eine art Lookuptable als Zuordnungstabelleerstellt wo die jeweiligen Funktionen beim auslösen eines EXTI zugreifen. Eleganter ist es jetzt mit dem FreeRTOS während ein Task die I/O's überwacht, kümmert sich ein anderer Task um die ganzen Statusled's und um die Datenübertragung.
Es gibt noch eine andere Variante, welche ich ausprobiert habe. das USB Device als Massstorage konfigurieren. Dann per Windows Application eine unsichtbare config-datei auf den USB Speicher schreiben und diese dann vom Controller bei Beginn einlesen/kopieren lassen in den EEPROM. Hab dann in jeder config datei eine versionsnummer wenn diese dann =! von der config im eeprom ist, soll diese "neue" dann ins eeprom geschrieben werden.
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.