Themen / Index

mispav - Firmware mit seriellem Dialog, mit MODBUS-Schnittstelle - float-Berechnungen

Content (automatic)

Wenn mispav auf einem PC kompiliert wird, dann ist angeschlossen

PC --> S/PCPAR --> S/PARLCD16 --> TL2004

Test der Software am PC

MISPAV.CPP kann auch auf einem PC laufen: Siehe mispav_PC.htm

Menüentwürfe Digitalpoti und LCD

Grundsätzlich kann durch das Digitalpoti einer der Menüpunkte vorgewählt werden, die ganz rechts angezeigt werden. Von den möglichen Menüpunkten können 4 angezeigt werden. Durch Drehen wandert die Vorwahlmarkierung ">" herunter.
Durch Drücken wird der Menüpunkt ausgewählt.
Dadurch kann jetzt der entsprechende Wert eingestellt werden , was durch die Markierung "*" angezeigt wird, oder es wird die entsprechende Aktion ausgelöst.

LCD: - Das LCD-Hauptmenü


LCD 4x20
LCD 2x16
S11.991V 0.2399A >US
I-0.320V 0.0015A  IS
-465.uW 00:47:52  KA
1.162mAh  65.8C   RS
11.20V 1.679A>US
1.926V 1.700A IS

Durch Drehen kann die Vorwahl umgeschaltet werden:
>US (Sollwert Spannung) nach >IS (Sollwert Strom) umgeschaltet

Durch Drücken des Tasters wird der entsprechende Menüpunkt aktiviert. Das wird angezeigt durch den Stern: *US oder *IS.
LCD 4x20 LCD 2x16
S0.5273V 0.3000A  US 
I27.977V 0.8821A *IS 
24.68 W 00:01:50  KA 
29.46mAh 20.9C    RS
11.20V 1.679A US
1.926V 1.700A*IS

Durch Drehen kann jetzt der Sollwert verändert werden.
Durch nochmaliges Drücken des Tasters wird der Menüpunkt *IS deaktiviert, bleibt aber vorgewählt und wird angezeigt als ">IS"

Das LCD-Hauptmenü hat die Funktionen:

Diskussion:
  1. Im Softwarestand 2021-02-04 wird der neu eingestellte Sollwert *US oder *IS wofort aktiviert.
  2. Vorschlag, stattdessen: Nachdem >US durch *US bzw. >IS nach *IS aktiviert wurde, bleibt der alte Sollwert aktiv. Der neue Sollwert wird durch Drehen eingegeben, aber erst aktiviert, wenn *US durch nochmaliges Drücken des Tasters aktiviert wird. Sollte länger als 5 Sekunden lang weder gedreht, noch gedrückt werden, wird der alte Sollwert wieder angezeigt und die Aktivierung *US bzw. *IS wieder verlassen.

LCD:KA - Das LCD-Kalibriermenu

Wird erreicht aus dem Hauptmenü durch Drehen der Vorwahl nach '>KA' und Drücken des Tasters
 

S14.399V 1.600 A US 
I 7.365V 775.0mA IS 
5.708 W 00:09:45 >KA 
128.1mAh 63.2C RS


S24.020V 10.050A >US 
I32.141V 3.3120A IS 
UI 
II 

Wenn durch Drehen weiter hinunterpositioniert wird, dann erscheinen die weiteren Menüpunkte, SP und X:

S24.020V 10.050A UI 
I32.141V 3.3120A >II 
SP 
Unter dem Kalibriermenu kann angewählt werden:

LCD:KA:US - Das Kalibriermenü für einen Kanal

Das Kalibriermenü für einen der Kanäle US, IS,UI, II,TM wird erreicht aus dem Kalibriermenü KA durch Anwahl des entsprechenden Kanals.
 
LCD 4x20
LCD 2x16
S2.942V 0.000A >N 
I2.942V 0.124A F 
kal UIst N0 X 
UsollF3313 
US Kalib 5.62>NU
N   -4F40.766 FA
Hinweis: Das Kalibrieren kann auch durch den Dialog an der seriellen Schnittstelle erfolgen. Siehe #bef_k

LCD:MX - Das Einstellmenü für Maximalwerte

S0.0092V 0.0000A >UM 
I26.804V 0.9270A IM 
Umax:5.2496V X 
Imax:0.3000A 
Die hiermit eingestellten Maximalwerte begrenzen die einstellbaren Sollwerte.
 

Die seriellen Schnittstellen

Die erste serielle Schnittstelle eines Atmega644P oder die einzige serielle Schnittstelle eines Atmega2 ist da: (RxD0 = Pin 14, PD0) (TxD0 = Pin 15, PD1) (MODBUS/RS485-Steuerung = Pin 18, PD4).

Die zweite serielle Schnittstelle eines Atmega644P ist da: (RxD1 = Pin 16, PD2) (TxD1 = Pin 17, PD3). Ein Atmega32 hat keine zweite serielle Schnittstelle.

Es gibt für die Verwendung der seriellen Schnittstellen also diese Möglichkeiten

Definition
OPT_SER_DIAL  0
MODBUSADDRS 0
Gar keine serielle Schnittstelle wird verwendet. Die Bedienung erfolgt alleine durch den Drehencoder und die LCD-Anzeige
OPT_SER_DIAL  0
MODBUSADDRS 20
Die erste serielle Schnittstelle wird für die MODBUS-Kommunikation verwendet.
OPT_SER_DIAL  1
MODBUSADDRS 0
Die erste serielle Schnittstelle wird für den Text-Dialog verwendet.
OPT_SER_DIAL  1
MODBUSADDRS 20
Verbotene Kombination
OPT_SER_DIAL  2
MODBUSADDRS 20
Die zweite serielle Schnittstelle eines Atmega644P wird für den Text-Dialog verwendet.
OPT_SER_DIAL  2
MODBUSADDRS 20
Die erste serielle Schnittstelle wird für die MODBUS-Kommunikation verwendet.
Die zweite serielle Schnittstelle eines Atmega644P wird für den Text-Dialog verwendet.

Wenn das Programm mispav auf einem PC ausgeführt wird, dann läuft der Text-Dialog durch die Konsole (vt.cpp) und die MODBUS-Kommunikation läuft durch die Schnittstelle, die in C:\CCKonfig.h spezifiziert ist: #define SFMODBUS_MDOS40_COM "COM1"

Text-Dialog: Die Bedienung durch die serielle Schnittstelle - Befehl '?' Hilfe anzeigen

Durch die serielle Schnittstelle kann ein Dialog geführt werden, mit 19200 Baud, No Parity, 8 Datenbits.

Durch die Eingabe von '?' kann die Hilfe angezeigt werden:

mispav:? ?: Hilfe 

U_I_Steller mispav 
2020-11-19 
Bedienung durch: 
? - Hilfe anzeigen 
z - Rechnerauslastung 
u - vkanal[XUS].w, Spannung vorgeben 
i - vkanal[XIS].w, Strom vorgeben 
m - Messwerte anzeigen 
t - Pruefe Temperaturerfassung 
a - Laufende Anzeige 
k - Kalibrierung 
l - LCD-Anzeigen 
q - Programm beenden

Befehl 'z' - Stack und Werte anzeigen


Auf HAMDUS unter Win95 (MDOS50) zeigt z an:

z: Stackverwendung 
DIA:Stapel frei =1584 verwendet =416 von =2000 
LCD:Stapel frei =1855 verwendet =145 von =2000 
ONE:Stapel frei =1955 verwendet =45 von =2000 
MES:Stapel frei =0 verwendet =2000 von =2000 1s =1193180gettick() =3181810815 
Schleife=0.469716s LCD=0.606489s 
z: Stackverwendung 
DIA:Stapel frei =1584 verwendet =416 von =2000 
LCD:Stapel frei =1855 verwendet =145 von =2000 
ONE:Stapel frei =1955 verwendet =45 von =2000 
MES:Stapel frei =0 verwendet =2000 von =2000 1s =1193180gettick() =3183907869 
Schleife=0.121617s LCD=0.630398s

Auf dem ATmega644P am 2020-11-17

z: Stackverwendung
DIA:Stapel frei =6 verwendet =54 von =60
LCD:Stapel frei =18 verwendet =42 von =60
ONE:Stapel frei =38 verwendet =22 von =60
MES:Stapel frei =39 verwendet =21 von =60 1s =2001122gettick() =183194294
Schleife=0.002377s LCD=0.221448s 

Auf dem Windows XP, MDOS50, nur Simulation, ohne ADC/DAC am 2020-11-20

mispav:z z: Stackverwendung
DIA:Stapel frei =1384 verwendet =616 von =2000
LCD:Stapel frei =1887 verwendet =113 von =2000
ONE:Stapel frei =1976 verwendet =24 von =2000
MES:Stapel frei =1966 verwendet =34 von =2000 1s =1789772gettick() =69338856
Schleife=0.015865s LCD=1.156299s

Befehl 'u' - Neuen Spannungs-Sollwert vorgeben



mispav:u 0.000V Usoll?14.4 14.399V

Es werden nur erlaubte Spannungswerte angenommen.

mispav:u 14.399V Usoll?65.7 Wert wird begrenzt
24.000V

Befehl 'i' - Neuen Strom-Sollwert vorgeben



mispav:i 0.000 A Isoll?0.833 832.9mA

Es werden nur erlaubte Stromwerte angenommen.

mispav:i 832.9mA Isoll?5 Wert wird begrenzt
1.600 A

Befehl 'm' - Messwerte ein Mal anzeigen



mispav:m US:13.998V IS:919.9mA UI:-10.990V II:732.7mA

Befehl 'a' - Laufende Anzeige Ein- / Ausschalten



mispav:a a: laufende Anzeige EINgeschaltet 
US:13.998V IS:919.9mA UI:18.719V II:-1.25 A

Befehl 'b' - MODBUS-Register 0..12 anzeigen

Durch den Befehl 'b' werden die MODBUS-Register 0...12 angezeigt. Das hilft beim Fehlersuchen

Anzeige Bedeutung
mispav:b 
MR0=0
MR1=0
MR2=0
MR3=0
MR4=0
MR5=0
MR6=2021
MR7=303
MR8=25971
MR9=26226
MR10=28524
MR11=29793
MR12=0
in0  0  0  0  0  0  0  0  0
in8  0  0  0  0  0  0  0  0
in16  0  0  0  0  0  0  0  0
in24  0  0  0  0  0  0
MR0 = Anzahl der empfangenen Telegramme.
MR1 = Anzahl der Rahmenfehler, falsches Stoppbit (FRAME)
MR2 = Anzahl der Fehler Datenüberlauf (DOR)
MR3  = Anzahl der Paritätsfehler
MR4 = Anzahl der gesendeten Antworttelegramme
MR5 = Anzahl der Zeitüberschreitungen beim Empfang von Telegrammen
MR6 = Version der Software: Jahr
MR7 = Version der Software: Monat * 100 + Tag als Zahl 101...1231
MR8...MR12 = Name der Software, ASCII, "mispav"

in0 ... = Die Bytes des zuletzt empfangenen Telegramms vom MASTER


 

Befehl 'k' - Der Kalibrierdialog


Kanal    Roh 'n'Nul 'f'Fak   Darst   'a'Roh 'v'Ref 'b'Roh 'w'Ref 'g'Grenze
0*US    2264     -4 40.766  5.623V        0 0.0000      0 0.0000 12.498
1:IS    3644    -61 1.7034  0.373A        0 0.0000      0 0.0000 1.6966
2:UM      36     -5 40.935  0.077V        0 0.0000      0 0.0000
3:IM    3641    -62 1.7072  0.373A        0 0.0000      0 0.0000
4:TM    5168  -3736 690.07    60.3C       0 0.0000      0 0.0000
5:UK    1377      0 30.000    2.52V       0 0.0000      0 0.0000
Kanal  adc0[%] adc1[%] adc2[%] adc3[%] adc4[%] adc5[%] adc6[%] adc7[%]
min        0.20   22.17   99.98   22.14   13.77   22.17   31.54    8.40
mit        0.22   22.22   99.98   22.22   13.77   22.19   31.54    8.41
max        0.22   22.27   99.98   22.24   13.77   22.19   31.54    8.42


Befehle im Kalibriermenue:
 u i - Spannung / Strom neu vorgeben
 a b - Rohwert a b von ADC-Wert uebernehmen
 c d - Rohwert a b vorgeben
 v w - Referenzwert v w vorgeben
 l   - Lineare Gerade berechnen
 g   - Grenzwert einstellen
 n f - Nullpukt, Faktor neu eingeben
 0..3 - Auswahl der Zeile K# zur Bearbeitung
 s - EEPROM schreiben
 x - Kalibrierdialog verlassen

Auch im Kalibrierdialog können die beiden Sollwerte vorgegeben werden.

Die Kalibrierung erfolgt dadurch, dass der Versatz 'n'Nul und der Faktor 'f'Fak so verändert wird, dass die angezeigten Werte mit einem Vergleichsmessgerät übereinstimmen.
Hierzu wird z.B. ein Referenz-Voltmeter angeschlossen und es werden verschiedene Spanungen vorgegeben. Die Anzeige wird mit dem tatsächlichen Wert verglichen.

Es gibt zwei Möglichkeiten die Anzeige zu korrigieren:

  1. Änderung der Werte 'n'Null und 'f'Faktor.
  2. Messen von zwei Vergleichspunkten, z.B: bei niedrigem Wert und bei hohem Wert und berechnen der Ausgleichsgeraden. Die Werte der beiden Vergleichspunkte unter "---- Kalibriertabelle ---" werden von Hand eingegeben durch die Befehle 'c' 'd' 'v' 'w'.
Die Einstell- und Kalibrierwerte können dauerhaft im EEPROM gespeichert werden.
Siehe zur Kalibrierung auch: ../../../../h/home/html/hjh/cc/deutsch/thema_analog.htm#kal

Im Kalibriermenü können auch die Einstellwerte für den entsprechenden Kanal neu eingegeben werden.
'g' - Maximale Grenze des einstellbaren Sollwertes neu eingeben.

Die MODBUS-Schnittstelle

Wenn die serielle Schnittstelle für die Verwendung als MODBUS eingerichtet ist, dann hat mispav die MODBUS-Slave-Adresse 20.
Die Schnittstelleneinstellung ist: 19200 BAUD, 8 Datenbits, keine Parität,
Das ist so vorgegeben in makefile
PN D:\HJH_TZ\Projekte\Mispav\Software\avr\mispav\makefile
Die Wort-Adressen sind:
sfm_Usoll 14 da sind 2 Worte also eine float-Zahl. Der Sollwert für die Ausgangsspannung
sfm_Isoll 16 da sind 2 Worte also eine float-Zahl.
sfm_Usollgrenz 18 da sind 2 Worte also eine float-Zahl.
sfm_Isollgrenz 20 da sind 2 Worte also eine float-Zahl.
sfm_USnull 22 da ist 1 Wort 16 Bit signed
sfm_ISnull 23 da ist 1 Wort 16 Bit signed
sfm_USfak 24 da sind 2 Worte also eine float-Zahl.
sfm_ISfak 26 da sind 2 Worte also eine float-Zahl.
sfm_UInull 28 da ist 1 Wort 16 Bit signed
sfm_IInull 29 da ist 1 Wort 16 Bit signed
sfm_UIfak 30 da sind 2 Worte also eine float-Zahl.
sfm_IIfak 32 da sind 2 Worte also eine float-Zahl.
sfm_UKEnull 34 da ist 1 Wort 16 Bit signed
sfm_Tnull 35 da ist 1 Wort 16 Bit signed
sfm_UKEfakt 36 da sind 2 Worte also eine float-Zahl.
sfm_Tfakt 38 da sind 2 Worte also eine float-Zahl.
sfm_Umess 40 da sind 2 Worte also eine float-Zahl.: die aktuelle Ausgangsspannung
sfm_Imess 42 da sind 2 Worte also eine float-Zahl.
sfm_Takt 44 da sind 2 Worte also eine float-Zahl.
sfm_UKE 46 da sind 2 Worte also eine float-Zahl.
sfm_adc 48 da sind 8 Worte je 16 Bit signed. Das sind die 8 ADC-Werte vom 3208

Wenn mispav.exe im PC ausgeführt wird, dann wird in der LOG-Datei C:\TEMP\mispav\A.log die aktuelle Definition für JAVA erzeugt:
 

public static final int sfm_Usoll = 14;
public static final int sfm_Isoll = 16;
public static final int sfm_Usollgrenz = 18;
public static final int sfm_Isollgrenz = 20;
public static final int sfm_USnull = 22;
public static final int sfm_ISnull = 23;
public static final int sfm_USfak = 24;
public static final int sfm_ISfak = 26;
public static final int sfm_UInull = 28;
public static final int sfm_IInull = 29;
public static final int sfm_UIfak = 30;
public static final int sfm_IIfak = 32;
public static final int sfm_UKEnull = 34;
public static final int sfm_Tnull = 35;
public static final int sfm_UKEfak = 36;
public static final int sfm_Tfak = 38;
public static final int sfm_Umess = 40;
public static final int sfm_Imess = 42;
public static final int sfm_Takt = 44;
public static final int sfm_UKE = 46;
public static final int sfm_adc = 48;

Test im PC H46 2023-11-14: Fehler: Alle Messwerte adc0...adc7 bei 16380 99.98%

Ursache
Das wurde verursacht durch einen MCP3551, welcher an dem unbenutzten Port SS=0x20 angeschlossen war.
#define SSMCP3551_0 0x20 // Bitmaske fuer den ersten Slave Select fuer MCP3551 22 Bit ADC

Abhilfe
Den 6-poligen pmod-Stecker vom Adapter spi6_lpt1 abziehen.


MISPAV3 unzuverlässige MODBUS-Verbindung

Mit der Firmware von 2023-12-27
Slave 20 : mispav 2023-12-27
Antwortet manchmal mit 8A statt 14
qqmodbio:
r 2024-08-16 14:09:13.937Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
qqcrc16  14 04 04 07 E7 04 CB 4D 51
i.O.
0x7E7,0x4CB,
  6:2023=0x7E7=F 0.000000   7:1227=0x4CB=F 0.000000
qqmodbio:
r 2024-08-16 14:09:34.375Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=12000
qqcrc16
FEHLER

qqmodbio:
r 2024-08-16 14:09:40.656Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=12000
qqcrc16
FEHLER

qqmodbio:
r 2024-08-16 14:09:41.484Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  8A 04 04 07 1E 70 B9 2A FD
FEHLER

qqmodbio:
r 2024-08-16 14:09:42.109Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  8A 04 04 07 E7 04 CB 4D 51
FEHLER

qqmodbio:
r 2024-08-16 14:09:43.015Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  8A 04 04 07 E7 04 CB 4D 51
FEHLER

qqmodbio:
r 2024-08-16 14:09:43.796Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  8A 04 04 07 E7 04 CB 4D 51
FEHLER

qqmodbio:
r 2024-08-16 14:09:44.406Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  8A 10 D0 F0 1E D0 FE 53
FEHLER

qqmodbio:
r 2024-08-16 14:09:44.984Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
qqcrc16  14 04 04 07 E7 04 CB 4D 51
i.O.
0x7E7,0x4CB,
  6:2023=0x7E7=F 0.000000   7:1227=0x4CB=F 0.000000
qqmodbio:
r 2024-08-16 14:09:45.765Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=735
qqcrc16  18 04 04 07 1E 70 B9 2A FD
FEHLER

qqmodbio:
Abhilfe: Neu kompiliert, neue Software gebrannt - kein Erfolg

Mit SN1 : unzuverlässig ../../../../h/home/html/hjh/etronik/analog/iso/themen.htm#sn1
Mit SN1 : unzuverlässig ../../../../h/home/html/hjh/etronik/pmod/RS485_iso.htm#SN1
Mit SN2 : unzuverlässig ../../../../h/home/html/hjh/etronik/pmod/RS485_iso.htm#SN2
Mit SN3 : zuverlässiges MODBUS ../../../../h/home/html/hjh/etronik/pmod/RS485_iso.htm#SN3
y 2024-08-16 14:50:09.859
Slave 11 : modone_n 2024-7-26
Slave 13 : modadc4 2024-4-1
Slave 16 : temppid1 2022-12-13
Slave 17 : modverhk 2024-1-4
Slave 20 : mispav 2024-5-4
Slave 24 : temppid2 2024-4-1
Slave 25 : modspiw 2023-11-9
Slave 26 : moddht11 2024-7-25
Slave 105 : moddvm4 2011-5-27
Slave 106 : moddvm4 2020-9-16
qqmodbio:
s 2024-08-16 14:51:23.031Eingabe  Slaveadresse : 20 ?  abgebrochen
MSG2024-08-16 14:51:25.781 Slaveadresse 's'=20=0x14
qqmodbio:
r 2024-08-16 14:51:26.984Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
crc.exe  14 04 04 07 E8 01 F8  ergibt:  3E 17
i.O.
0x7E8,0x1F8,
  6:2024=0x7E8=F 0.000000   7:504=0x1F8=F 0.000000
qqmodbio:
r 2024-08-16 14:51:27.796Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
crc.exe  14 04 04 07 E8 01 F8  ergibt:  3E 17
i.O.
0x7E8,0x1F8,
  6:2024=0x7E8=F 0.000000   7:504=0x1F8=F 0.000000
qqmodbio:
r 2024-08-16 14:51:28.625Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
crc.exe  14 04 04 07 E8 01 F8  ergibt:  3E 17
i.O.
0x7E8,0x1F8,
  6:2024=0x7E8=F 0.000000   7:504=0x1F8=F 0.000000
qqmodbio:
r 2024-08-16 14:51:33.328Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
crc.exe  14 04 04 07 E8 01 F8  ergibt:  3E 17
i.O.
0x7E8,0x1F8,
  6:2024=0x7E8=F 0.000000   7:504=0x1F8=F 0.000000
qqmodbio:
r 2024-08-16 14:51:34.078Lese von 's'Slave=20  'a'Wortadresse=6  'n'Anzahl=2
modbus_read_reg() rva=0
crc.exe  14 04 04 07 E8 01 F8  ergibt:  3E 17
i.O.
0x7E8,0x1F8,
  6:2024=0x7E8=F 0.000000   7:504=0x1F8=F 0.000000
qqmodbio:

Versionen

ATMega644P: (*): ROM: 64KiB 65536 (0x10000) Bytes, RAM:4KiB 4096 RAM
Atmega328: ROM: 32KiB 32768 (0x8000), RAM 2KiB 2048
Atmega32: ROM: 32KiB 32768 (0x8000), RAM 2KiB 2048
Atmega32a: ROM: 32KiB 32768 (0x8000), RAM 2KiB 2048

Stand Speicherbedarf
2020-11-19 ROM: 22912 (5980H), RAM: 1257 (4E9H) MDOS50 für PC - Vortest
2021-02-03  ROM: 28454 (6F26H), RAM: 1629 (65DH)  Serieller Dialog in Ordnung, Kann Spannungen vorgeben und Messen. Kalibrierwerde ermittelt. 
Aber 
Kal:s 
EEPROM schreiben?jEEPROM schreiben 
FEHLER EEPROM ls1 
FEHLER EEPROM ls2 
2021-02-04  ROM: 28768 (7060H), RAM: 1625 (659H)  Jetzt auch mit Digitalpoti und LCD-Anzeige 
EEPROM kann auch geschrieben werden. 
2021-02-23  ROM: 29686 (73F6H), RAM: 1649 (671H)  auch mit Temperaturerfassung, läuft in Seriennummer 2, auf ATMega644P 
2021-03-01 ROM: 29670 (73E6H), RAM:  1667 (683H) Fehlerkorrektur, DAC-Normierung bis 16383
2021-03-13 ROM: 32416 (7EA0H), RAM:  1858 (742H) MODBUS
2021-03-17 ROM: 30912 (78C0H), RAM:  1909 (775H) tsonewin entfernt, jetzt auch mit
adc6 =Temperatur, 
adc7 = UKE
mit Dialog, MODBUS
2021-04-06 ROM: 30800 (7850H), RAM:  1806 (70EH) Digitalpoti geht,
MODBUS geht, wenn alleine dann auch sehr zuverlässig
Dialog geht
2021-04-08 ROM: 30476 (770CH), RAM:  1806 (70EH) Digitalpoti geht,
MODBUS geht, auch wenn 11=modone_n und Brose und PDA48 am BUS hängt.
LCD-Kalibrierdialog mit Umpolung des Faktors.
Temperaturerfassung KTY81 korrigiert
2022-01-05
ROM: 30836 (7874H), RAM:  1713 (6B1H)
Poti.-Beschleunigung verbessert. Kann jetzt schneller bedienen.
2022-01-05 ROM: 30878 (789EH), RAM:  1713 (6B1H)
Mit Filter 0.5/16
2023-11-13
ROM: 35778 (8BC2H), RAM:  1738 (6CAH)
Kann jetzt auch FC=16 - Nein, da sind Fehler in der Software! Fehler korrigiert 2023-12-27
TODO: Kann nicht mehr %5f - Format !!!
2023-11-14
ROM: 29616 (73B0H), RAM:  1784 (6F8H)
Repariert otprintf.cpp - jetzt include, repariert adcm3208.cpp
2023-12-27
ROM: 29638 (73C6H), RAM:  1784 (6F8H)
Kann jetzt auch FC=16 - korrigiert
2024-04-29
ROM: 29718 (7416H), RAM:  1874 (752H)
Für SN=2, Anzeige 4 x 20 %3k ersetzt durch %8k
2024-05-04
ROM: 30126 (75AEH), RAM:  1874 (752H)
Für SN=2, RS485=44
2024-08-16
ROM: 29906 (74D2H), RAM:  1776 (6F0H)
Für SN=3

Siehe auch

../../../../h/home/html/etronik/atmel/atmel_c_atmega164p_324p_644p_40002071A.pdf -
../../../../h/home/netbeans/OpenJDK/util/ModbusMaster/mispav.htm - Abfrage durch das JAVA-Programm