Start
Experimente
Grundlagen
Produkte
- ES-M32
-- Erster Test
-- USB
-- Bascom
-- RAM
-- ADC
-- Ports
-- Relais -- Morsen -- Datenlogger -- SIOS -- ASCII -- mV-Logger -- I/O12/24 V -- Bootloader
Neues
Impressum
|
ES-M32
SIOS-Emulation
Das SIOS-Interface hatte viele Freunde, wird aber leider nicht mehr gebaut. Ein Nachfolger auf der Basis eines ATmaga32 ist schon in der Entwicklung. Aber auch mit dem
ES-M32 steht eine passende Hardware-Basis zur Verfügung, um ein SIOS-kompatibles Interface bauen. Das Gerät kann nun
wahlweise über die RS232 oder über den USB gesteuert werden.
Im Einzelnen sollen die
SIOS-Kommandos nach der folgenden Tabelle umgesetzt werden. Dabei wurden gewisse
Einschränkungen und Doppelbelegungen notwendig. Der digitale Ausgangsport D
wird nur mit insgesamt 6 Bit zugänglich, weil D4 und D5 für die PWM-Ausgabe
verwendet werden. Die analogen Ausgänge sind hier PWM-Ausgänge mit einer
Auflösung von 8 Bit. Man kann jedoch über den Funktionsumfang des SIOS hinaus
auch eine 10-Bit-Ausgabe definieren.
Kommando
|
Parameter
|
Antwort
|
Funktion
|
1
|
|
10
|
Interface-Kennung
|
16
|
Bitmuster
|
|
Digitale
Ausgabe, Port D
|
32
|
|
Bitmuster
|
Digitale Eingabe, Port C
|
48
|
|
8-Bit-Ergebnis
|
Analogeingang A, ADC0
|
49
|
|
8-Bit-Ergebnis
|
Analogeingang B, ADC1
|
usw.
|
|
|
|
51
|
|
8-Bit-Ergebnis
|
Analogeingang D, ADC3
|
56
|
|
Highbyte
|
Analogeingang A, ADC0),
|
1
|
|
Lowbyte
|
10 bit
|
usw.
|
|
|
|
59
|
|
Highbyte
|
Analogeingang D, ADC3,
|
1
|
|
Lowbyte
|
10 bit
|
64
|
8-Bit-Wert
|
|
Analogausgang A, PWM1A (PD5)
|
65
|
8-Bit-Wert
|
|
Analogausgang B, PWM1B (PD4)
|
|
'-------------------------------------------------------------- ' ESM32 SIOS ' ATMEGA32, 11,0592 MHz '--------------------------------------------------------------
$regfile = "m32def.dat" $baud = 19200 $crystal = 11059200 $hwstack = 32 $swstack = 64 $framesize = 64
Dim Command As Byte Dim N As Byte Dim L As Byte Dim H As Byte Dim D As Byte Dim Dd As Word
Open "com1:" For Binary As #1
Config Portd = Output Portc = 255
Config Adc = Single , Prescaler = Auto , Reference = Off ' Pre 8...32 Start Adc
Config Timer1 = Pwm , Prescale = 8 , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Start Timer1
Do Get #1 , Command 'SIOS Device 10 If Command = 1 Then Put #1 , 10
'Firmware V2.1 If Command = 2 Then Put #1 , 21
'Output Port D If Command = 16 Then Get #1 , D Portd = D End If
'Input Port C If Command = 32 Then D = Pinc Put # 1 , D End If
'ADC 8 Bit If Command = 48 Then Dd = Getadc(0) Shift Dd , Right , 2 D = Dd Put #1 , D End If If Command = 49 Then Dd = Getadc(1) Shift Dd , Right , 2 D = Dd Put #1 , D End If If Command = 50 Then Dd = Getadc(2) Shift Dd , Right , 2 D = Dd Put #1 , D End If If Command = 51 Then Dd = Getadc(3) Shift Dd , Right , 2 D = Dd Put #1 , D End If If Command = 52 Then Dd = Getadc(4) Shift Dd , Right , 2 D = Dd Put #1 , D End If If Command = 53 Then Dd = Getadc(5) Shift Dd , Right , 2 D = Dd Put #1 , D End If
'ADC 10 Bit If Command = 56 Then Dd = Getadc(0) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
If Command = 57 Then Dd = Getadc(1) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
If Command = 58 Then Dd = Getadc(2) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
If Command = 59 Then Dd = Getadc(3) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
If Command = 60 Then Dd = Getadc(4) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
If Command = 61 Then Dd = Getadc(5) D = High(dd) Put #1 , D Get #1 , D D = Low(dd) Put #1 , D End If
'PWM Output 8 Bit If Command = 64 Then Get #1 , H Dd = 4 * H Pwm1a = Dd End If If Command = 65 Then Get #1 , H Dd = 4 * H Pwm1b = Dd End If
'PWM Output 10 Bit If Command = 72 Then Get #1 , H Dd = 256 * H Get #1 , L Dd = Dd + L Pwm1a = Dd End If If Command = 73 Then Get #1 , H Dd = 256 * H Get #1 , L Pwm1b = Dd End If Loop
End
Download: ESM32SIOS.zip (22 KB)
Die schnelle
8-Bit-Analogmessung führt zunächst eine Messung mit der Auflösung 10 Bit aus
und reduziert dann die Daten auf acht Bit. Bei der Messung in voller
Auflösung müssen die Daten in zwei Bytes zurückgeschickt werden. Zwischen dem
Highbyte und dem Lowbyte wird ein Byte zur Synchronisierung empfangen. Der PC
sendet hier laut Protokoll ein Byte 1, ein beliebiges anderes Byte würde jedoch
ebenfalls funktionieren.
Die analogen Ausgaben mit
einer Auflösung von 8 Bit multiplizieren den Ausgabewert mit vier und steuern
den PWM-Ausgang mit 10 Bit an. Zusätzlich gibt es hier die neuen Kommandos 72 und 73
für eine PWM-Ausgabe mit der vollen Auflösung von 10 Bit.
|
Ein
einfaches
Benutzerprogramm für dieses Interface lässt sich mit Visual
Basic realisieren. Das VB-Projekt ist ebenfalls im Projekt-ZIP
enthalten
Der Anwender sieht die Spannung an den vier analogen Eingängen in
10-Bit-Auflösung in Balkenanzeigen und als digitale Anzeige. Die
digitalen
Eingänge werden einzeln und als Byte angezeigt. Beide
PWM-Ausgänge lassen sich
über Schieberegler einstellen, wobei die mittlere Ausgangsspannung
in Volt
angezeigt wird. Die digitalen Ausgänge können durch Anklicken
umgeschaltet
werden. Es werden jeweils acht digitale Ein- und Ausgänge
angezeigt. Die
Software kann verwendet werden um angeschlossene Versuche oder Modelle
direkt
zu testen.
Außerdem kann nun die gesamte Bandbreite der SIOS-Software eingesetzt werden. Dazu gehört z.B. auch Compact Definition und ProfiLab Expert.
Literatur: B. Kainka, Basiskurs BASCOM-AVR, Elektor-Verlag, 2011
|
|