Hallo Forum, zum schnellen Debuggen von Controllerprojekten habe ich auf o.g. Entwicklungsbrett vor einiger Zeit mal eine Anwendung programmiert, um über ein serielles Protokoll (1 Leitung und Masse) verschiedenste Daten sichtbar machen zu können. Hierbei können kleinste Controller (Tiny13, Tiny10...) ohne viel Aufwand an jedem I/O-Pin Daten senden und das XMINILAB macht diese auf senem OLED sichtbar. Die Routinen zur Ausgabe sind beispielsweise in diesem Projekt enthalten: Beitrag "Motorola T81 Ladegerät: Tuning" Infos über das XMINILAB gibt es hier: http://www.gabotronics.com/development-boards/xmega-xminilab.htm Die Einspeisung des Signal findet an Pin "EXT" statt, der gegenüber Masse positiv sein muss. Auf dem Foto ist eine Beispielausgabe zu sehen. Die Datenübergabe kann HEX, DEZIMAL uns ASCII sein, außerdem kann man auf die UART des XMINILAB routen und den Bargraf am rechten Rand mit 8 Bit füllen, um schnelle Signale eines einzelnen Bytes zu sehen. Vielleicht hat jemand Lust, sich das Ganze auf sein angestaubtes XMINILAB zu spielen... ;-) Ich benutze den Sniffer so gut wie jeden Tag, beruflich und auch privat.
Und hier noch schnell eine Spezifikation zur Pulsgenerierung:
1 | 1. Displaypin Spezifikation: |
2 | |
3 | - 0->1->0->1 - Pulsbreite: jeweils >=1µs bis maximal 30µs, symmetrisch! |
4 | - Startbit: 3 Flankenwechsel -> Pause |
5 | - Logisch 1: 2 Flankenwechsel -> Pause |
6 | - Logisch 0: 1 Flankenwechsel -> Pause |
7 | |
8 | Pause zwischen Bits: >=5µs, jedoch mindestens 2,5-fache Pulsbreite |
9 | Pause zwischen Bytes: >=30µs |
10 | |
11 | Die Pulse eines Bits dürfen nicht wesentlich jittern. |
12 | Pausen zwischen den Bits sind unkritisch und können vom Sender gestreckt werden. |
13 | Gleiches gilt für Pausen zwischen Bytes. |
14 | |
15 | Laufzeit für ein komplettes Zeichen inklusive Header und Adresse bei Minimal-Timing: ~180µs |
16 | |
17 | Die Polarität der Daten ist irrelevant. |
18 | Der Pegel bleibt auf dem letzten Pegel eines Datenframes stehen, bis ein neuer Frame kommt. |
19 | Man kann hier wunderbar die Pin-Toggle-Funktion nutzen, die viele Controller von Haus aus bieten. |
20 | |
21 | |
22 | 2. Datenformat: |
23 | |
24 | 2.1. Header |
25 | |
26 | 0000 LCD, HEX Daten |
27 | 0001 LCD, DEZ Daten |
28 | 0010 LCD, ASC Daten |
29 | 0011 reserviert |
30 | |
31 | 0100 LED |
32 | 0101 reserviert |
33 | 0110 reserviert |
34 | 0111 reserviert |
35 | |
36 | 1000 RS232, HEX Daten |
37 | 1001 RS232, DEZ Daten |
38 | 1010 RS232, ASC Daten |
39 | 1011 reserviert |
40 | |
41 | 1100 reserviert |
42 | 1101 reserviert |
43 | 1110 reserviert |
44 | 1111 reserviert |
45 | |
46 | |
47 | 2.2. Adresse |
48 | |
49 | xxxx xxxx absolute Position auf dem LCD oder in der UART-Zeile |
50 | |
51 | |
52 | 2.3. Datenbyte |
53 | |
54 | xxxx xxxx Nutzdaten, die dargestellt werden sollen |
55 | |
56 | |
57 | 2.4. Aufbau Datenframe |
58 | |
59 | LCD: Startbit, Header (4Bit), Adresse (8Bit, 0x00-0xFF), Datenbyte (8Bit) |
60 | RS232: Startbit, Header (4Bit), Adresse (8Bit, 0x00-0x27), Datenbyte (8Bit) |
61 | LED: Startbit, Header (4Bit), Adresse (8Bit, 0x00), DatenByte (8Bit, LLLLLLLL, 1 Bit pro LED) |
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.