Forum: Mikrocontroller und Digitale Elektronik AVR SPI 24Bit


von Luky S. (luky)


Angehängte Dateien:

Lesenswert?

Ich habe einen 16Bit AD-Wandler (ADS8321) bislang per Software-SPI mit 
einem AVR angesteuert.
Da der AVR nun aber auch noch was anderes nebenher machen soll, möchte 
ich die Hardware-SPI Schnittstelle verwenden, weis aber leider nicht, 
wie ich damit das im Anhang dargestellte Timing erzielen kann.
Wie kann ich mit der Hardware SPI des AVR 24Bit übertragen und die 
Timings im Anhang einhalten? Die Taktfrequenz (SCL) sollte dabei 
zwischen 1-2MHz liegen.
Mein Problem ist, das der ADC sehr empfindlich auf die Pausen reagiert 
wenn ich 3*8 Byte nacheinander schicken will.
Wie kann ich also 24Bit "nahtlos" hintereinander verschicken?

von holger (Gast)


Lesenswert?

>Wie kann ich also 24Bit "nahtlos" hintereinander verschicken?

cli
spi write
spi write
spi write
sei

von Luky S. (luky)


Lesenswert?

Das funktioniert eben bei mir so nicht ohne längere Pause dazwischen

von hans (Gast)


Lesenswert?

Hallo Lukas,

wenn du einen neueren MEGA verwendest kannst du den UART als SPI-Master
nehmen. dann hast du Buffer für die Daten und ein Flag für Buffer
empty. Damit kannst du deine Daten nahtlose lesen und schreiben.
Die CLK ist max. Fosc/2 und wie die Baudrate einstellbar.

Beim "normalen" SPI fehlt der Buffer, es gibt Lücken beim nachladen.

gruß hans

PS: z.B. MEGA 48/88.. ,  324p,

von holger (Gast)


Lesenswert?

>Das funktioniert eben bei mir so nicht ohne längere Pause dazwischen

Was ist für dich lang? Wie lang dürfen die Pausen max. sein?
Codeschnipsel verfügbar?

von Christoph H. (christoph_b)


Lesenswert?

habe das selbe Problem.
Würde gerne 24bit über SPI zwischen 2 Atmegas verschicken.

von holger (Gast)


Lesenswert?

>habe das selbe Problem.
>Würde gerne 24bit über SPI zwischen 2 Atmegas verschicken.

Dann schick drei Bytes und gut. Wo ist das Problem?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Die UART als Master-SPI funktioniert wunderbar, auch bei den XMegas, die 
noch einen Tick schneller durch höheren Takt und DMA sind.

von oha (Gast)


Lesenswert?

Falls das SPI interface es nicht kann, kann man die pins auch per code 
bewegen.

von H.Joachim S. (crazyhorse)


Lesenswert?

@oha:
Luky S. schrieb:
>...bislang per Software-SPI mit
> einem AVR angesteuert.
> Da der AVR nun aber auch noch was anderes nebenher machen soll, möchte
> ich die Hardware-SPI Schnittstelle verwenden...

:-)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

oha schrieb:
> Falls das SPI interface es nicht kann, kann man die pins auch per code
> bewegen.

Luky S. schrieb:
> Die Taktfrequenz (SCL) sollte dabei
> zwischen 1-2MHz liegen.

Alles klar?!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

H.joachim Seifert schrieb:
> Luky S. schrieb:
>>...bislang per Software-SPI mit
>> einem AVR angesteuert.
>> Da der AVR nun aber auch noch was anderes nebenher machen soll, möchte
>> ich die Hardware-SPI Schnittstelle verwenden...
Vor zwei Jahren...   :-o
Luky S. schrieb:
> 09.01.2009

Blöd, dass Christoph B. den Thread gekapert hat:
Christoph B. schrieb:
> habe das selbe Problem.

Und ich vermute, er hat NICHT das selbe Problem.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.