TWIoutP-Problem

Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

TWIoutP-Problem

 · 
Gepostet: 05.01.2020 - 14:35 Uhr  ·  #1
Hallo Zusammen,

ich habe folgendes Programm:
Code

Const
  SSeq : Array[0..3] of Byte = $AA,$55,$A5,$5A;
.
.
.
TWIoutP($3E,SSeq[0],@SSeq[1],3];

Zur Erinnerung die Syntax:
Function TWIoutP(SlaveAdr : byte; Command : byte; src : pointer; len : word) : boolean;

Meine Überlegung: Als Command wird Byte0 von SSeq gesendet und als Daten Pointer ab SSeq[1] 3 Bytes.

Festgestellt: Es wird nur Byte0 gesendet und danach 3x $00.

Wo könnte das Problem sein?

Ich will einfach nur 4 Bytes senden und ein Command bräuchte ich eigentlich garnicht.

Gruss
Harry

..... achja ist nur ein einfacher Mega8@1MHz
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 05.01.2020 - 15:56 Uhr  ·  #2
Hallo Harry,

kurze Frage nebenbei was ist das für eine Version vom RIGOL / Gerätetyp.
Meine Firmware hat das mit dem Decodieren Clk/Data noch nicht.
Vielleicht muss ich mal ein Update machen.

Thorsten
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 05.01.2020 - 17:24 Uhr  ·  #3
Hi Thorsten,

das ist ein DSO1104Z Softwarestand vor einem Jahr. Genaue Version muß ich nachschauen.

Gruss
Harry

.... decodieren ist eine Option, die du extra kaufen mußt. Wenn das Oszi neu ist, kann man alle Optionen für (glaub ich) 20 Stunden so benutzen. Danach nicht mehr.
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 06.01.2020 - 09:08 Uhr  ·  #4
Hallo Harry,
hätte auch gedacht, daß Dein Programm so funktioniert.
Bleibt vielleicht erstmal, $AA als Command und das Array [0..2] =$55,$A5,$5A zu senden
TWIOut($AA,SSeq);

golf
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 06.01.2020 - 09:27 Uhr  ·  #5
Hallo Golf,

ich kann nicht auf zweimal senden, da dann wieder die Adresse dabei ist und letztendlich immer noch ein Byte fehlt.
Der Workaround ist übrigens die Konstante in eine Variable umzukopieren und diese dann zu verwenden.
Ich denke TWIoutP mag keinen Pointer auf Konstanten. Gehört das so?

Das vollständige Programm besteht nicht nur aus einem eindimensionalen, sondern aus einem zweidimensionalen Array [0..15,0..3] of Byte.

Gruss
Harry

@Thorsten: https://www.rigolna.com/firmware/
pvs-deck
PowerUser
Avatar
Geschlecht:
Alter: 54
Beiträge: 1343
Dabei seit: 02 / 2009
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 06.01.2020 - 12:18 Uhr  ·  #6
Zitat geschrieben von Harry

Hallo Golf,

ich kann nicht auf zweimal senden, da dann wieder die Adresse dabei ist und letztendlich immer noch ein Byte fehlt.
Der Workaround ist übrigens die Konstante in eine Variable umzukopieren und diese dann zu verwenden.
Ich denke TWIoutP mag keinen Pointer auf Konstanten. Gehört das so?

Das vollständige Programm besteht nicht nur aus einem eindimensionalen, sondern aus einem zweidimensionalen Array [0..15,0..3] of Byte.

Gruss
Harry

@Thorsten: https://www.rigolna.com/firmware/


Hallo Harry,

yepp, habe mir gestern schon die neue Firmware gezogen :-)

Kann es sein, dass Du den Optimizer nutzt? Wenn Du die Konstante nur über den Pointer nutzt könnte er dies so nicht erkennen und die komplette Konstante evtl. entfernen.

So ein Verhalten habe ich auch bei einem Compiler für ein SPS-System (CodeSys). Du musst dann einmal diese Konstante aufrufen bzw. normal ohne Pointer verwenden, damit der Compiler diese Konstante übernimmt.
Ich weiss nicht wie der AVRco dies umsetzt.

Versuche mal in Deinem Code irgendwo etwa folgendes:

Code
if SSeq[0] = SSeq[0] then 
 //mache nichts oder sonstwas
endif;


Gruß
Thorsten
golf
Benutzer
Avatar
Geschlecht:
Herkunft: Donauwörth
Alter: 72
Beiträge: 266
Dabei seit: 11 / 2009
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 06.01.2020 - 12:57 Uhr  ·  #7
Hallo Harry, das war ein Schnellschuß, da hat auch die Adresse gefehlt bei mir.
Du hast recht. Wenn man die Konstanten in ein Var-Aarray kopiert hat, sollte es auch mit TWIOutP funktionieren.
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: TWIoutP-Problem

 · 
Gepostet: 06.01.2020 - 14:24 Uhr  ·  #8
Hallo,

herzlichen Dank :) .... mit dem umkopieren kann ich leben und ich benutze keinen Optimizer, da das Prog compiliert grad mal 1kB hat. Nur ein einfacher I2C-Sender um einen Tuner zu konfigurieren.

Aber vielleicht kann Rolf was dazu sagen, ob das so gewollt ist bei Konstanten?

@Thorsten: installiert auch? Ich hab ein Gerücht gehört, daß das ganze Decodier-Gedöns jetzt standardmäßig immer frei geschaltet sein soll. Stimmt das?

Gruss
Harry
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   137   151 · Page-Gen-Time: 0.036405s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI