Probleme mit in8 - LPC

Fragen und Diskussionen zu den Geräten. Sowohl Hardware als auch Software. English is welcome.
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Probleme mit in8 - LPC

Beitrag von abierwirth »

Hallo zusammen...

Vorweg schon einmal, vielen Dank für dieses Tolle Projekt!!

Ich habe ein Problem mit dem Binär Eingang. Wenn ich den ersten Kanal Binäreingang, als Schaltzähler konfiguriere. Dann scheint etwas mit der Fallenden Flanke nicht zu passen.

Das ganze stellt sich so da:

1. Konfiguriert auf steigende Flanke = Zählverhalten Normal beim schließen des Stromkreises
2. Konfiguriert auf fallende Flanke = nichts! Man kann keinen Zählvorgang auslösen!
3. Konfiguriert auf beide Flanken = verhalten wie bei 1.

Jetzt ist die Frage, mache ich etwas Falsch oder kann das Fehlverhalten jemand bestätigen?

******* fb_app_in8.c ** Zeile 277 *********

case 10:// ### Schaltzähler ###
n=eeprom[0xD5+(pinno*4)];// Parameter Flanke für Zählimpuls
if ((n&0x01 && st_Flanke)||(n&0x02 &! st_Flanke)){
zaehlervalue[pinno]++;// zählwert erhöhen
schrittzaehler[pinno]++;// schrittzähler erhöhen
maxzaehler=(eeprom[para_adr +2]<<8) +eeprom[para_adr+3];
tmp=0;

Ist die Eprom Position für diesen Parameter korrekt und wie kann ich das überprüfen?

Ist der IF Operator korrekt?

Wert in st_Flanke sollte eigentlich passen, sonst würde man das in den anderen Funktionsarten auch merken!

Ich bin der Meinung gleiches Problem gibt es auch beim Impulszähler?

Viele Grüße in die Runde
Andre
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

Re: Probleme mit in8 - LPC

Beitrag von oldcoolman »

Ist mir neu, dass das nicht geht. Hast du es selber compiliert? Wenn ja, kannst du mal die mem Größe checken,ob die nicht ins eeprom reinläuft?
liebe Grüße
Andreas
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Re: Probleme mit in8 - LPC

Beitrag von abierwirth »

Hallo Andreas,

nein das ist eines der fertigen Images aus Github https://github.com/selfbus/software/tre ... eases/3.11

Mit den Daten aus dem Eprom meine ich die ETS Einstellungen, die in den Aktor geschrieben werden. Sind die abhängig von der Größe des Images? Ich dachte die Parameter von der ETS werden immer an die gleiche Stelle geschrieben egal wie groß die Firmware im LPC ist.

Macht mir den Anschein, das da ein Konfig Parameter nicht an der Stelle steht, womit dann verglichen wird.

Kann man die Byte und Bit Positionen irgendwo nachschauen, oder muss ich die herausfinden, indem ich nur einen Parameter verändere und dann den Eprom Inhalt vergleiche?

Normal sollte man die Position eines Parameters in einer Applikation doch mit den angaben aus der vd4 Datei errechnen können.

Besonders bei den anderen Funktionen fällt das Problem ja nicht auf. Nur die Fallende Flanke wird nicht gezählt.

Gruß, Andre
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

Re: Probleme mit in8 - LPC

Beitrag von oldcoolman »

Ich habe das erwähnt, weil wenn man beim Programmieren nicht aufpasst, das Programm zu groß wird, dann überschreibt die ETS Programmteile, da sie ja eben stur immer an die selbe Stelle schreiben soll. Du musst da nichts rausrechnen , ich kann das nachschauen. Es ist nur so lange her dass ich die zerlegte Tabelle erst wieder finden muss. ;-)
liebe Grüße
Andreas
Tontechniker
Beiträge: 274
Registriert: 25. Mai 2013, 09:49
Wohnort: Melsungen/Hessen

Re: Probleme mit in8 - LPC

Beitrag von Tontechniker »

Hallo Andre,
bist Du sicher, dass der LPC vor dem Programmieren gelöscht wurde, oder können noch "alte" Reste von einer vorigen Programmierung drin geblieben sein?
Gruß
Hans
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Re: Probleme mit in8 - LPC

Beitrag von abierwirth »

Hallo, danke für die Antworten..

Ich habe hier Binäreingänge 19 stehen und alle verhalten sich gleich. Habe nicht alle 19 getestet aber 6 Stück als Stichprobe. Eigentlich waren die LPCs neu, nur der erste wurde mit 2-3 Images getestet. Aber neu müssen die ja auch nicht leer gewesen sein.

Ich kann gerne nochmal einen Löschen und neu Flaschen.

Gruß, Andre
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Re: Probleme mit in8 - LPC

Beitrag von abierwirth »

Hi Andreas,

Du brauchst die Tabelle nicht suchen.

Ich glaube es ist ein Bug im Code, will es nur erstmal Testen und fixen!

Gruß, Andre
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Re: Probleme mit in8 - LPC

Beitrag von abierwirth »

Hallo zusammen,

ich bin gestern dazu gekommen den LPC nochmal neu zu Flashen. Das Ergebnis war aber das gleiche.

Da ich ein bissel Faul bin :-) und auch den Original Code nicht verändern wollte habe ich dann doch mal geschaut was die ETS da so in das Eprom schreibt.

Wenn ich dann in der ETS zwischen "Steigender Flanke" und den zwei anderen Werten umschalte, verändert sich beim Programmieren nur ein MemoryWrite Befehl!

MemoryWrite (S=5) Count=1, Address=01D5, Data=$71 = Steigend
MemoryWrite (S=5) Count=1, Address=01D5, Data=$72 = Fallend
MemoryWrite (S=5) Count=1, Address=01D5, Data=$73 = Beide

Ansicht in Binär, Interessant sind nur Bit 1 und 2 von Rechts:

0000 0000 0111 0001 = Steigend
0000 0000 0111 0010 = Fallend
0000 0000 0111 0011 = Beide

Also Bit1 = Flag für Steigende Flanke
und Bit2 = Flag für Fallende Flanke

Bei dem vergleich werden die Bits durch das AND separiert.

n&01 = 0000 0000 0000 0001 = Steigend = true
n&01 = 0000 0000 0000 0000 = Fallend = false
n&01 = 0000 0000 0000 0001 = Beide = true

n&02 = 0000 0000 0000 0000 = Steigend = false
n&02 = 0000 0000 0000 0010 = Fallend = true
n&02 = 0000 0000 0000 0010 = Beide = true

Das Ergebnis wird mit st_Flanke abgeglichen.

Die Operatoren sind:
(n&01 && st_Flanke) = Wenn Steigende Flanke konfiguriert (Logischer UND Vergleich) st_Flanke Wahr?
(n&02 &! st_Flanke) = Wenn Fallende Flanke konfiguriert (UND nicht Zuweisung/Verknüpfung) st_Flanke Wahr?

Bei n&02 wird kein vergleich gemacht sondern eine Verknüpfung oder eine Zuweisung? Gibt es den Operator &! in C? Ich konnte nichts finden?

Müsste es nicht (n&02 && !st_Flanke) heißen?

Hatte noch keine Zeit den "NEUEN" Code zu Compilieren. Da muss ich mir erstmal eine Buildumgebung einrichten um mir eine neue HEX Datei erstellen zu können. (Das habe ich erst einmal mit SelfBus Code gemacht)

Gruß, Andre
abierwirth
Beiträge: 7
Registriert: 9. Mär 2019, 17:08

Re: Probleme mit in8 - LPC

Beitrag von abierwirth »

Hallo zusammen,

das Problem ist gelöst. Meine korrigierte Version erkennt jetzt je nach Parameter die entsprechenden Flanken!

Es waren nur die falschen Operatoren. Ich habe ein Pull Request in GIT mit den Korrekturen erstellt.

https://github.com/selfbus/software/pull/1

Gruß, Andre
Doumanix
Beiträge: 511
Registriert: 7. Nov 2017, 16:33

Re: Probleme mit in8 - LPC

Beitrag von Doumanix »

Habe den Pullrequest eben angenommen.
Es wäre schön, wenn noch jemand anderer mal drüber testen könnte und die richtige Funktion bestätigen könnte.

@abierwirth: kannst du auch die HEX zur verfügung stellen. Könnte helfen.
Antworten