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
Attachments
Filename: | $01400005 korrekt B … irst.PNG |
Filesize: | 16.14 KB |
Title: | $01400005 korrekt Bit-Bang MSB first. |
Information: | korrekte Ausgabe mit Bitbanging |
Download counter: | 132 |
Filename: | $05004001 SPI Order MSB.PNG |
Filesize: | 19.38 KB |
Title: | $05004001 SPI Order MSB |
Information: | Ausgabe mit SPIOutLong, Order MSB, für mich falsch |
Download counter: | 134 |
Filename: | $A0000280 SPI Order … rekt.PNG |
Filesize: | 19.66 KB |
Title: | $A0000280 SPI Order LSB korrekt. |
Information: | SPIAusgabe Order LSB, korrekt |
Download counter: | 132 |