AVR-SPI zu schnell, was tun?

OP #335260
Lesenswert?
• ▲
▼
Hallo miteinander!

Ich habe folgendes Problem:
Ich möchte mit einem AVR mega128 über SPI ein Device ansprechen,
welches laut Datenblatt allerdings nur eine Maximalgeschwindigkeit von
40KHz unterstützt.
Der uC allerdings läuft mit 16MHz und hat meines Erachtens einen
Prescaler von höchstens 128, was immer noch 125KHz SPI Clock bedeuten
würde.

Also was tun jetzt?
Kann man die USART verwenden? Selbst implementieren? Wie ist das mit
zeitkritischen Problemen?

Vielen Dank!
hubert.
#335265
Lesenswert?
• ▲
▼
> Das mit Software-SPI klingt gut. Sind da fertige Bibliotheken
> verfügbar (am besten in C)?

Hmmmm...
Ist es denn so schlimm, in einem Timer-Interrupt, der sicherlich noch
andere Aufgaben nebenher erledigen kann, einen Taktimpuls an einem Pin
zu erzeugen und den zugehörigen Logikpegel an einen anderen Pin zu
legen und einen Logikpegel von einem anderen Pin einlesen?

Braucht man dazu eine fertige Bibliothek?

...
#335267
Lesenswert?
• ▲
▼
> ich kenne das problem manchmal liesst man daten ein, die so
> schnell kommen dass man mit 1 mhz einfach nicht mehr hinkommt.

Das mag bei größeren Projekten schon mal der Fall sein, aber auch da
kann man durch geschickte Interrupt-Programmierung die Rechenleistung
optimal nutzen.

Um Missverständnisse zu vermeiden: Ich rede von Assembler und habe mit
dem Mega128 noch nicht gearbeitet.

...
Gast #335270
Lesenswert?
• ▲
▼
Hi

> Ich kenne das problem manchmal liesst man daten ein, die so
> schnell kommen dass man mit 1 mhz einfach nicht mehr hinkommt.

SPI ist ein synchroner Bus, das verpasst Du gar nichts, wenn Du über
den Clock nichts einliest. Das kannste mit 1Hz oder mit 1MHz einlesen,
ist egal.

Im Anhang findest Du den C-Source für die Ansteuerung eines SPI FRAM's
von Ramtron.
Bitte häng mich nicht daran auf. Der Code habe ich mal für einen
raschen Test geschrieben und ist nicht überarbeitet. (Geschrieben für
einen H8S-2378 Renesas Controller)

Vielleicht kannst Du ja was davon brauchen.

Musst übrigens in Deiner Applikation aufpassen, das Du den richtigen
SPI Mode verwendest. (Steht im Datenblatt) Mein Code verwendet Mode 3.

Gruss Andy
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren