Universal DRO basierend auf Arduino Nano - shDRO. Teil 2

Hallo nochmal!

Ich beschreibe weiterhin meine Entwicklung von shDRO. In diesem Teil werde ich den Geräteabfragealgorithmus und das Format der Konsolenbefehle beschreiben.

Der erste Teil.

Firmware

Da die Anzahl der Kanäle / Ports, an die Lesegeräte angeschlossen werden können, 12 beträgt und jeder Kanal theoretisch so konfiguriert werden kann, dass er unterbricht, werden zwei PCINT-Interrupt-Handler verwendet (für die Ports D und C). Dies impliziert eine Einschränkung der Verbindung: Alle für die Eingabe konfigurierten Ausgänge des Geräts müssen mit den Kanälen einer Gruppe verbunden sein. Wenn der Kanal für die Ausgabe konfiguriert ist, spielt es für das aktuelle Gerät keine Rolle, zu welcher Gruppe er gehört. Gruppen: Gruppe1 (Kanäle 0-5), Gruppe2 (Kanäle 6-11).

Zwei Ringpuffer mit jeweils 256 Bytes werden für Interrupt-Handler verwendet.

Der Interrupt-Handler-Code lautet:

buf[pos] = DATA_N; pos++; 

Wobei DATA_N einer der Ports ist: PIND, PINC.

Die Datenverarbeitung ist wie folgt:

  • Wenn ein Interrupt auftritt, wird ein neuer Portwert in den Puffer geschrieben.
  • Der Puffer wird regelmäßig abgefragt, und daraus werden die Daten gelesen, die nach der letzten Abfrage angezeigt wurden (die Position des Puffers der letzten Abfrage wird in der Gerätestruktur gespeichert).
  • Beim Lesen neuer Daten werden die für die Kanäle eingestellten Interrupt-Pegel mit den aktuellen Portdaten verglichen. Wenn die Interrupt-Ebene nicht übereinstimmt, werden die Daten ignoriert.
  • es prüft, ob alle Daten zur Verarbeitung akzeptiert wurden (zum Beispiel müssen 24 Bits für das BIN6-Protokoll empfangen werden);
  • Die Daten werden in einer "lesbaren" Form verarbeitet und die verarbeiteten Daten werden auf dem Bildschirm angezeigt.
  • dann wird der Vorgang wiederholt;

Um die obige Logik zu implementieren, sind die folgenden Logikmodule in der Firmware implementiert:

  • Gerät: Das Modul enthält alle Informationen zu einem angeschlossenen Gerät. Für jedes angeschlossene Gerät wird ein solches Modul erstellt.
  • Protokoll: Das Modul enthält Informationen zum Protokoll und zur Verarbeitung der an den Ports eintreffenden Signale gemäß diesem Austauschprotokoll.
  • Funktion: Das Modul enthält Informationen zum Konvertieren von vom Protokollmodul empfangenen Daten. Beispielsweise gibt es ein Protokollmodul, das ein Quadratursignal unterstützt, aber die Geräte, die ein Quadratursignal ausgeben, können unterschiedlich sein: Es kann sich um ein optisches Lineal oder einen Geschwindigkeitssensor handeln. Das heißt, In einem Fall müssen die Daten in mm oder Zoll und im anderen in U / min konvertiert werden. Dieses Modul macht genau das;
  • LED: Ein Modul, das Informationen zu Indikatoren anzeigt. shDRO enthält 4 Anzeigen, und für jedes Gerät wird die gewünschte Anzeigeanzeige gesetzt.

Um das Gerät anzuschließen, benötigen Sie in der Konsole Folgendes:

  • Konfigurieren Sie die gewünschten Kanäle.
  • Gerät hinzufügen;
  • für Gerätesatzprotokoll, Funktion und LED;
  • Hinzufügen / Binden der erforderlichen Kanäle zum Gerät;

Konsole

Im Moment habe ich die Funktion der Konsole im ArduinoIDE-Portmonitor und in Terminal v.1.9b überprüft. Für Terminals vom Typ Putty müssen Sie den Echo-Modus implementieren (nicht implementiert).

Befehlsformat:

 <> </1> <_1> </N> <_N> 

Die maximale Anzahl von Argumenten pro Zeile beträgt 5.

Der Fall spielt keine Rolle. Die Befehlsanalyse erfolgt, nachdem die Zeichenfolge in Kleinbuchstaben konvertiert wurde (Ausnahme: Der Wert des Arguments in Anführungszeichen).

Alle Befehle werden erst ausgeführt, nachdem der Setup-Befehl ausgegeben wurde (eine Ausnahme ist der Hilfebefehl, der eine Liste aller verfügbaren Befehle anzeigt).

Alle Befehle werden im beigefügten Archiv sowie in der ersten Version der Firmware im Hex-Format beschrieben.

shDRO.zip (.hex + Beschreibung der Befehle)

ShDRO-Quellen

Fortsetzung folgt.

Vielen Dank!

PS
Befehle zum Konfigurieren von Geräten und Kanälen können ohne Umreifen an das nackte Arduino gesendet werden.

PS1
Anfrage an diejenigen, die in Kasan leben.
Wenn Sie haben:
  • digitale Bremssättel, die gemäß den Protokollen arbeiten: 24BIT, BCD7;
  • iGaging digitale Lineale (21BIT-Protokoll);

Könnten Sie sie mir dann für ein paar Tage geben, um Protokolle für sie zu schreiben und zu debuggen?
Ich verspreche, sie sicher und gesund zu halten!
Aber das ist in PM. Vielen Dank im Voraus.

PS2
Ich habe vergessen, der Befehlsbeschreibungsdatei zwei Befehle hinzuzufügen:
- Speichern: Speichert die Einstellungen von Kanälen und Geräten im EEPROM.
- Laden: Entlädt die Einstellungen von Kanälen und Geräten aus dem EEPROM (das Laden erfolgt automatisch während der Initialisierung).
Ich werde die Datei nicht erneut hochladen, denken Sie daran. "Hilfe" zeigt diese Befehle jedoch an.

Source: https://habr.com/ru/post/de446458/


All Articles