Repository navigation
LinkHitec de
English · Deutsch
Diese Seite ist ein Abschnitt von Der Link, der die Verkabelung, das Frame-Format, die Page Map und die übrigen Pages enthält. Pins heißen nach ihrer GPIO-Nummer (General-Purpose Input/Output). PWM steht für Pulsweitenmodulation.
Hitec ist ein Name oder eine Marke seines Inhabers. Er steht hier nur, um zu sagen, mit welchen Servos die Page arbeitet.
Die Hitec-Page (HITEC, 0x34) ist neu in 4.23. Sie fährt rohe Transaktionen
der Hitec-Servoleitung aus protocols/hitec
auf einem Port von PROG: classic (HS-5xxx,
HS-7xxx, 19.200 bit/s) oder D-Serie (115.200 bit/s). Die Page hält keine
Hitec-Session. Der Schreiber stellt eine Transaktion bereit, die Page fährt
sie, und der Mitschnitt und seine Dekodierung bleiben bis zur nächsten auf
der Page. Welche Bytes ein Servo nimmt und in welcher Reihenfolge, ist Sache
des Schreibers. Eine Session auf dem Panel ist nicht gebaut.
shared/outputs/hitec_port.c hält die Regeln.
Ein Port ist frei, von dieser Page gehalten oder von der KST-Page gehalten (Der Programmierport für Servos von KST und Chaservo), nie zwei davon. Nichts wird im Flash gehalten: nach einem Neustart des IOmcu ist der Port frei.
OPEN nimmt den Port:
- STOPPING, 50 ms: der Port gibt keinen Puls aus, ein laufender Puls endet.
- Der PWM-Generator gibt den Pin ab. Der Leitungstreiber öffnet die Leitung darauf als losgelassenen Eingang: classic mit dem Pull-down des Pads, die D-Serie mit seinem Pull-up und invertiertem Eingang. Die internen Pulls haben 50 bis 80 kOhm; die D-Serie braucht einen Pull-up auf der Platine.
- OPEN. Ein Treiber, der keine PIO-State-Machine (PIO: Programmable
Input/Output), keine 29 Worte Programmspeicher oder keine 2 DMA-Kanäle
(Direct Memory Access) bekommt, lässt den Port mit Ergebnis 5 (
NO_LINE) frei.
In OPEN startet ein Kommando eine Transaktion (BUSY). Der Port steht wieder in OPEN, wenn der Treiber den Mitschnitt zurückgibt. Der Treiber beendet eine Transaktion selbst 1 ms nach der längsten Zeit, die sie dauern kann; eine Transaktion, die nach 10.000 ms noch läuft, bricht zusätzlich die Page ab.
CLOSE gibt den Port aus jedem Zustand außer frei zurück: eine laufende Transaktion wird abgeschnitten, die Leitung geschlossen und der Pin gehört dem Generator. Die Versorgung bleibt, wie sie ist. ABORT schneidet ab, was läuft, und behält den Port.
| Operation | Was auf die Leitung geht | Schlüssel |
|---|---|---|
| SEND | der Vorlauf auf dem Ruhepegel (D-Serie: auf Low getrieben), 1 bis 8 Bytes mit 0 bis 6 Ruhe-Bitzeiten dazwischen, dann der Empfänger für das Fenster | immer |
| LISTEN | der Empfänger für das Fenster; mit Antwort ein Byte am Ende des Stoppbits des ersten empfangenen Bytes | mit Antwort |
| LEVEL | die Leitung 1 us bis 4 s auf einem Pegel gehalten, dann losgelassen. Open Drain treibt nur Low | nie |
| POWER | das Aus- und Einschalten der Versorgung unten, dann ein LISTEN ab dem Einschalten | mit Antwort |
Vorlauf, Fenster und Pegel reichen bis 4.000.000 us. Ein Mitschnitt hält bis zu 16 Bytes. Das Fenster zählt nur die Zeit, die auf ein Startbit gewartet wird. Jedes empfangene Byte hat die Zeit seines Startbits in ns ab dem Start des Empfängers und sein Stoppbit, wie es abgetastet wurde.
Ein SEND, ein LISTEN oder ein POWER nennt einen Dekoder für den Mitschnitt:
| Dekoder | Argument | Dekodiert |
|---|---|---|
| 0 | keins | nichts; DEC liest 0, VALUE 0 |
| 1 | das classic-Kommandobyte | die Antwort, die dieses Kommando hat (hitec_c_decode()); nur classic |
| 2 | das gelesene Register der D-Serie | die Antwort dieses Registers (hitec_d_decode()); nur D-Serie |
| 3 | das erwartete Byte | ein Byte und nichts danach (hitec_listen_decode()) |
Die Ergebniscodes der Dekoder sind hitec_rx_t: 0 OK, 1 ARG, 2 ABORTED,
3 OVERFLOW, 4 SILENT, 5 EARLY, 6 LATE, 7 NAK, 8 LENGTH, 9 FRAMING, 10 GAP,
11 ACK, 12 HEADER, 13 ADDRESS, 14 SUM.
POWER braucht einen PD mini, der antwortet (SUPPLY). Es:
- verlangt die Versorgung aus;
- wartet, bis sie aus gelesen wird, höchstens 3000 ms, sonst Ergebnis 3
(
SUPPLY); - hält sie für die bereitgestellten 0 bis 10.000 ms aus;
- verlangt sie an mit der bereitgestellten Spannung und Stromgrenze;
- startet im selben Durchlauf das bereitgestellte LISTEN.
Die Spannung ist 4800 bis 6000 mV, bis eine Session das Servomodell kennt.
Die Stromgrenze ist 50 bis 3000 mA. Die Spannung plus 700 mV muss unter dem
Eingang des PD mini liegen, wenn der Eingang bekannt ist. Ein Sollwert
außerhalb davon wird mit SUPPLY_RANGE abgewiesen. Eine Versorgung, die das
Einschalten abweist, gibt Ergebnis 3; ein LISTEN, das der Treiber abweist,
gibt Ergebnis 4 (START) bei eingeschalteter Versorgung. Vom Ausschalten
bis zum Ende des LISTEN ist die SUPPLY-Page gehalten (Flag-Bit 11): das
Panel kann die Versorgung ausschalten, aber nicht einschalten und keinen
Sollwert verschieben.
Ein Ausschalten der SUPPLY-Page wartet auf ein Byte, das auf der Leitung sein kann, höchstens 12 ms: Vorlauf und Bytes eines SEND, und ein LISTEN oder das LISTEN eines POWER, das antwortet, ganz, weil die Antwort geht, sobald das erste Byte gekommen ist.
Ein Stopp ist der verlorene Heartbeat, der stille Link oder das Schalten der Bank auf SAFE. Bei einem Stopp:
- wird eine laufende Transaktion abgebrochen: das Pad wird sofort
losgelassen, und der Mitschnitt hält die Bytes bis dahin, als abgebrochen
markiert (Ergebnis 6,
CUT); - endet ein POWER in seiner Auszeit dort, und die Versorgung bleibt aus; ein POWER, dessen LISTEN läuft, wird wie eine Transaktion abgeschnitten, und die Versorgung ist, wie die SUPPLY-Page sie hat: aus nach verlorenem Heartbeat oder stillem Link, an nach einem Schalten auf SAFE allein;
- bleibt der Port mit dem Pin als losgelassenem Eingang gehalten, so wie ein KST-Port in PROGRAMMING bleibt;
- ist ein Port, der noch in STOPPING steht, wieder frei;
- wird Bit 3 von
STATE(STOPPED) gesetzt.
Solange STOPPED gesetzt ist, werden SEND, LISTEN, LEVEL und POWER mit
STOPPED abgewiesen. CLEAR löscht es, solange dem Heartbeat vertraut wird
und der Link nicht still ist; CLOSE und ein neues OPEN löschen es auch.
Solange dem Heartbeat nicht vertraut wird oder der Link still ist, zählt
jeder Durchlauf als Stopp, und jedes Kommando außer ABORT und CLOSE wird mit
UNSAFE abgewiesen. Die Bank schaltet nicht auf ARMED, solange die Page
einen Port hält, und OPEN wird abgewiesen, solange sie ARMED ist.
Ein Lesen gibt diese Register:
| Register | Name | Liest |
|---|---|---|
| 0 | STATE |
Bits 0 bis 2 der Zustand: 0 FREE, 1 STOPPING, 2 OPEN, 3 BUSY, 4 POWER_OFF. Bit 3 STOPPED. Bit 4 ein PD mini antwortet. Bit 5 die Page hält einen Mitschnitt. Bit 6 die letzte Transaktion hat ein Byte auf die Leitung gelegt. Bits 12 bis 15 der Port |
| 1 | SEQ |
die SEQ des letzten angenommenen Kommandos; 0 beim Start |
| 2 | OP |
Bits 12 bis 15 die letzte gestartete Operation, Bits 0 bis 11 die seit OPEN gestarteten Transaktionen, bei 4095 gehalten |
| 3 | RESULT |
niederwertiges Byte das Ergebnis dieser Operation: 0 keins, 1 läuft, 2 fertig, 3 SUPPLY, 4 START, 5 NO_LINE, 6 CUT. Höherwertiges Byte, warum das letzte angenommene Kommando nichts gestartet hat, 0 wenn es gestartet hat |
| 4 | CAP |
Bits 0 bis 4 die gehaltenen Bytes. Bit 8 der Empfang endete bei seiner Anzahl, Bit 9 die Antwort ging hinaus, Bit 10 Überlauf, Bit 11 abgebrochen. Bits 12 und 13 der Dekoder |
| 5 | DEC |
niederwertiges Byte das Ergebnis des Dekoders, höherwertiges Byte die ID der Antwort der D-Serie |
| 6 | VALUE |
der dekodierte Wert |
| 7 | VIEW |
was Register 16 bis 31 zeigen |
| 8 bis 15 | BYTES |
Byte 2 k im niederwertigen Byte von Register 8 + k, 2 k + 1 im höherwertigen; 0 hinter den gehaltenen Bytes |
| 16 bis 31 | DATA |
VIEW 0: die Startbits der Bytes 0 bis 7, ns, je 32 Bit, niederwertige Hälfte zuerst. VIEW 1: Bytes 8 bis 15. VIEW 2: der Lauf, unten |
VIEW 2:
| Register | Liest |
|---|---|
| 16, 17 | die Verzögerung des Dekoders, ns |
| 18, 19 | der Vorlauf, wie das PIO-Programm ihn gefahren hat, ns |
| 20, 21 | vom Start bis zum Mitschnitt, us |
| 22, 23 | die längste Zeit, die die Transaktion dauern konnte, us |
| 24 | die Bitzeit der offenen Leitung, ns; 0, solange keine offen ist |
| 25 | die Leitung: Bit 0 die Familie (0 classic, 1 D-Serie), Bit 4 der Treiber (0 Open Drain, 1 Push-Pull) |
| 26 | der Pin des Ports; 0xFFFF, solange der Treiber keinen hält |
| 27, 28 | das Fenster, das der Mitschnitt verlangt hat, us |
| 29 | Bit k: das Stoppbit von Byte k wurde auf dem Startpegel abgetastet |
Ein Schreiben sieht andere Register:
| Register | Name | Nimmt |
|---|---|---|
| 0 | CMD |
Bits 0 bis 3 die Operation: 1 OPEN, 2 CLOSE, 3 SEND, 4 LISTEN, 5 LEVEL, 6 ABORT, 7 POWER, 8 CLEAR. Bits 8 bis 11 der Port. Jedes andere Bit 0 |
| 1 | SEQ |
die SEQ der Page plus 1, modulo 65536 |
| 2 | KEY |
0x48A5 für eine Operation, die ein Byte auf die Leitung legt, sonst 0 |
| 3 | CRC |
die Prüfsumme über Register 4 bis 21, für jede Operation außer ABORT, CLOSE und CLEAR |
| 4 | LINE |
OPEN: Bit 0 die Familie, Bit 4 der Treiber. Classic ist nur Open Drain |
| 5 | NTX |
SEND: niederwertiges Byte die zu sendenden Bytes, 1 bis 8; höherwertiges Byte die Ruhe-Bitzeiten zwischen zweien, 0 bis 6 |
| 6 bis 9 | TX |
Byte 2 k im niederwertigen Byte von Register 6 + k, 2 k + 1 im höherwertigen |
| 10, 11 | LEAD |
SEND: der Vorlauf, us, niederwertige Hälfte zuerst |
| 12, 13 | WINDOW |
SEND, LISTEN, POWER: das Fenster, us |
| 14 | RX |
niederwertiges Byte die zu empfangenden Bytes, 0 bis 16, 0 nur ohne Fenster; Bit 8 das erste Byte beantworten (LISTEN, POWER) |
| 15 | ANSWER |
niederwertiges Byte die Antwort; Bit 8 der Pegel eines LEVEL |
| 16, 17 | LEVEL |
LEVEL: wie lange, us |
| 18 | DECODE |
Bits 0 und 1 der Dekoder, Bits 8 bis 15 sein Argument; Bits 2 bis 7 0 |
| 19 | SUPPLY_MV |
POWER: 4800 bis 6000 mV |
| 20 | SUPPLY_MA |
POWER: 50 bis 3000 mA |
| 21 | OFF_MS |
POWER: 0 bis 10.000 ms |
| 22 | VIEW |
0 bis 2. Gilt, sobald geschrieben, und fällt nicht unter die Prüfsumme |
Die Prüfsumme ist die CRC-16 des Links (Cyclic Redundancy Check), mit
0xFFFF begonnen, über das niederwertige und dann das höherwertige Byte jedes
Registers (link_kst_crc()), wie auf der KST-Page.
Register 0 bis 3 sind das Kommando: ein Frame, geschrieben als genau diese 4
Register und ganz oder gar nicht angenommen. Register 4 bis 22 werden vor dem
Kommando in beliebigen Fenstern geschrieben. Ein Schreiben, das Register 23
oder höher erreicht, wird mit READ_ONLY abgewiesen, ein VIEW über 2 mit
BAD_VALUE.
Ein Frame mit einer anderen SEQ als der der Page plus 1, einer Operation 0
oder über 8, einem gesetzten Bit außerhalb von Operation und Port oder einem
KEY, der weder 0 noch 0x48A5 ist, wird mit BAD_VALUE abgewiesen und ändert
nichts. Der eben angenommene Frame, noch einmal gesendet, wird quittiert und
tut nichts. Jeder andere Frame wird quittiert; was aus ihm wurde, steht in
RESULT.
Das höherwertige Byte von RESULT. Ein Port, den der Build nicht hat, wird
vor jeder anderen Prüfung mit PORT abgewiesen, ABORT ausgenommen. Dann, in
dieser Reihenfolge für eine Transaktion:
| Code | Name | Warum |
|---|---|---|
| 7 | NO_KEY |
ein SEND ohne Schlüssel, vor jeder anderen Prüfung; ein LISTEN oder POWER mit Antwort, nach der Bereichsprüfung |
| 6 | NOT_OPEN |
der Port ist frei |
| 1 | BUSY |
eine Transaktion oder ein POWER läuft, der Port steht in STOPPING, oder OPEN auf einem gehaltenen Port |
| 2 | PORT |
kein solcher Programmierport, oder nicht der gehaltene |
| 9 | STOPPED |
seither ein Stopp; erst CLEAR |
| 5 | UNSAFE |
dem Heartbeat wird nicht vertraut, oder der Link ist still |
| 8 | STAGED |
Register 4 bis 21 haben nicht die Prüfsumme, die CRC nennt |
| 11 | RANGE |
die bereitgestellte Transaktion ist keine, die die Leitung fährt, der Dekoder passt nicht zur Familie, oder ein reserviertes Bit ist gesetzt |
| 13 | NO_SUPPLY |
POWER ohne einen PD mini, der antwortet |
| 12 | SUPPLY_RANGE |
POWER: ein Sollwert oder die Auszeit außerhalb des Bereichs |
| 3 | HELD |
OPEN: die KST-Page hält den Port |
| 4 | ARMED |
OPEN: die Bank ist ARMED |
| 10 | NO_PIN |
OPEN: der Port hat keinen Pin |
Die KST-Page weist ENTER und ein REBOOT aus PWM mit ihrem BUSY (1) ab,
solange diese Page den Port hält.
Ein classic-Lesen der EEPROM-Adresse 0x12 auf Port 0, roh geschrieben, wie
die Prüfstandskonsole (Die Prüfstandskonsole) es
nimmt. Das Kommando ist 0x61 0x12 0x00, sein Summenbyte 0x8D; der
classic-Dekoder (1) ist für Kommando 0x61 genannt. Die Page steht auf SEQ
0.
w 0x34 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
w 0x34 0 0x0001 1 0 0x8135
r 0x34 0 4
w 0x34 4 0 0x0104 0x1261 0x8D00 0 0 0 0 0x05DC 0 2 0 0 0 0x6101 0 0 0
w 0x34 0 0x0003 2 0x48A5 0xE56A
r 0x34 0 16
Die ersten beiden Zeilen öffnen die Leitung, classic und Open Drain; die
dritte liest nach 50 ms STATE 2 (OPEN). Die vierte stellt 4 Bytes mit 1
Ruhebit dazwischen, ein Fenster von 1500 us für 2 Bytes und den Dekoder
bereit; die fünfte sendet sie mit dem Schlüssel. 0x8135 und 0xE56A sind die
Prüfsummen der beiden bereitgestellten Blöcke. hitec open 0 c und
hitec c 0 0x61 0x12 0 der Konsole tun dasselbe und rechnen SEQ und die
Prüfsummen selbst.
rcbench
English
Using the bench
- What this is for
- Building
- Bringing up the link
- First run on hardware
- Screens
- Balancing
- Servo procedures
- Servo programmer for KST and Chaservo servos
- Stick programming
- Receiver buses
- Safety
- Parameters of ESCs with BLHeli_32 firmware
Reference
- The link
- The programming port for KST and Chaservo servos
- The programming port for Hitec servos
- The bench console
- DShot and the output drivers
- The OpenYGE protocol
- ESC programming profiles
- Performance
- Interface language
Deutsch
Den Prüfstand benutzen
- Worum es geht
- Bauen
- Den Link in Betrieb nehmen
- Erster Lauf auf der Hardware
- Bildschirme
- Auswuchten
- Servoverfahren
- Servo-Programmierer für KST- und Chaservo-Servos
- Stick-Programmierung
- Empfängerbusse
- Sicherheit
- Parameter von ESCs mit BLHeli_32-Firmware
Referenz