Hallo Helmut,
ich würde das jedenfalls zunächst mal direkt ohne den SPItreiber probieren.
Evtl liegts an einem Timingproblem. so was ähnliches wie:
TMC_CS[@PortB,2] : bit; // Pins als Beispiele
TMC_DataOut[@PortB,3] : bit;
TMC_DataIn[@PortB,4] : bit;
TMC_Clk[@PortB,5] : bit;
TMCOutData,TMCInData : longword;
bitz: byte; // Bitzähler
// in InitPorts : DDRB:= xx1011xx incl (TMC_Clk); incl (TMC_CS);
procedure TMC429; //
begin
excl (TMC_CS);
udelay(1); // Delays jeweils noch anzupassen
bitz:=31;
repeat
excl (TMC_Clk);
if bit(TMCOutData,bitz)=true then incl(TMC_DataOut);
else excl(TMC_DataOut);
endif;
udelay(1); // Delays jeweils noch anzupassen
incl (TMC_Clk);
udelay(1); // Delays jeweils noch anzupassen
if TMC_DataIn = true then incl(TMCInData,bitz);
else excl(TMCInData);
endif;
udelay(1); // Delays jeweils noch anzupassen
dec (bitz);
until bitz=255;
incl (TMC_CS);
udelay(1); // Delays jeweils noch anzupassen
end TMC429;
(ungetestet)
golf