Hallo,
Mathias Dubdidu schrieb:
> Michael U. schrieb:
>> Hallo,
>>
>> Mathias Dubdidu schrieb:
>>> Das Problem ist jetzt nur, dass kein Interrupt ausgelöst wird und auch
>>> der nIRQ dauernd auf Low ist. Leider habe ich noch aus keinem Beitrag
>>> entnehmen können welche Einstellungen ich genau zu machen habe.
>>> Mein FIFO initialisiere ich mit
>>>
1 | >>> D = Spi16(0x82c8);
|
2 | >>> D = Spi16(0xca52);
|
3 | >>>
|
>>> Damit sollte ja nach 5 Byte der nIRQ auf Low gezogen werden oder?
>>
>> Wo soll er die lassen? Er hat nur 16 BIT FIFO, Du mußt also jedes Byte
>> abholen.
>> 0xca81 ist sinnvoll.
>
> Ok das heißt mit 0xca81 würde er nach einem Byte mit nIRQ auf Low gehen
> und damit den Interrupt auslösen oder?
> Und dann kann ich alles 5Byte nacheinander abhohlen
Nein. Rechne Dir aus, wie lange er bei Deiner Baudrate bracuhct, um 1
Byte zu empfangen. Dann entscheide, ob Du per Polling in der ISR bleibst
und auf die restlichen Bytes wartest (Abfrage des FIFO-Bits: SDI aof L,
CS aktiv und SDO abfragen, bis es H wird -> FIFO-Byte da.
Wenn das Zeitverschwendung ist, hole das eine Byte ab, Du weist ja,
wieviele Du sendest, also zwischenspeichern, Anzahl merken und eben auf
den nächsten IRQ warten.
Wenn Du alle Bytes hast eben den FIFO neu starten.
Gruß aus Berlin
Michael