all,
ich habe bisher die ganzen SPI-Ein/Ausgaben fast immer mit Bitbanging gemacht. Der Prozessor war da meist schnell genug. Nun wollte ich doch bei einem Projekt die volle Geschwindigkeit. Da ist mir aufgefallen, daß es bei SPI-Order MSB und SPIOutLong für mich einen Fehler gibt.
Wenn ich im Beispiel SPIOutLongD($01400005) mache, wird bei Order LSB das Longword korrekt ausgegeben, das ergibt dann $A0000280 . Bei Order MSB sollte es $01400005 sein, es wird aber $05004001 gesendet. Oder verstehe ich da was falsch ?
golf
// über SPI-Treiber
Import SPI_D;
SPIorderD = MSB; // SPIorderD = LSB;
SPImodeD = 0;
SPIprescD = 1;
SPI_SSD = PortD, 4;
....
HL := $01400005;
SPIoutLongD(HL);
// über Bit-Bang
excl (AD4350LE); // // LE auf Low
HL := $01400005; // InitAD4350ArrayFrac1[1];
bitz:=31; // Bitzähler, 32 relevante Bits werden gesendet
repeat
AD4350Data := bit(HL,(bitz));
incl (AD4350Clk);//
excl (AD4350Clk);//
dec (bitz);
until bitz=255;
incl (AD4350LE); // LE auf High
ich habe bisher die ganzen SPI-Ein/Ausgaben fast immer mit Bitbanging gemacht. Der Prozessor war da meist schnell genug. Nun wollte ich doch bei einem Projekt die volle Geschwindigkeit. Da ist mir aufgefallen, daß es bei SPI-Order MSB und SPIOutLong für mich einen Fehler gibt.
Wenn ich im Beispiel SPIOutLongD($01400005) mache, wird bei Order LSB das Longword korrekt ausgegeben, das ergibt dann $A0000280 . Bei Order MSB sollte es $01400005 sein, es wird aber $05004001 gesendet. Oder verstehe ich da was falsch ?
golf
// über SPI-Treiber
Import SPI_D;
SPIorderD = MSB; // SPIorderD = LSB;
SPImodeD = 0;
SPIprescD = 1;
SPI_SSD = PortD, 4;
....
HL := $01400005;
SPIoutLongD(HL);
// über Bit-Bang
excl (AD4350LE); // // LE auf Low
HL := $01400005; // InitAD4350ArrayFrac1[1];
bitz:=31; // Bitzähler, 32 relevante Bits werden gesendet
repeat
AD4350Data := bit(HL,(bitz));
incl (AD4350Clk);//
excl (AD4350Clk);//
dec (bitz);
until bitz=255;
incl (AD4350LE); // LE auf High
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
