Forum: Mikrocontroller und Digitale Elektronik SPI auf dem AT32UC3C-ek


von Lars (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich arbeite mit dem AT32UC3C-ek und möchte SPI nutzen. Mit Hilfe der 
Datenblätter konnte ich auch schon einiges finden aber laufen tut noch 
nichts.
1
pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);

Beim Compilieren bekomme ich die Fehlermeldung, dass die obige Funktion 
nicht deklariert ist. Dann habe ich die pm.h eingebunden und dann 
folgten etwa 100 weitere Fehler....
Für nen Tipp wäre ich da sehr dankbar.

Gruß Lars

von cskulkw (Gast)


Lesenswert?

Beim UC3C mußte ich beim CAN-Treiber noch das SCIF mit einbinden. Da war 
für die Taktgenerierung der Peripherie erforderlich, wenn ich es richtig 
verstanden hatte.

Benutzt Du das ASF? -> Wenn ja, da sind doch Beispiele. Ich rate Dir 
sehr, diese zuvor Dir anzuschauen.

Eine Sache verstehe ich in Deinem Code nicht. Die while-schleife enthält 
nichts.

Ich das so Absicht? Oder war das eine Vereinfachung?

von Lars (Gast)


Lesenswert?

Das mit der leeren Schleife war nur eine Vereinfachng.
Die Beispiele habe ich mir angeschaut, ich find sie recht verwirrend.

Ich hatte auch noch einen Fehler beim Mappen der GPIOs aber einen Takt 
kann man noch immer nicht mit dem Oszi messen.

von cskulkw (Gast)


Lesenswert?

Hallo Lars,

mit welcher Entwicklungsumgebung arbeitest Du?

Im neuen AVRStudio 5.0 sind jede Menge Beispiele. Leider ist mein 
UC3C-EK heute morgen gestorben - glaube ich. Deshalb kann ich nicht 
nachprüfen.

Aber bisher haben die Beispiele immer gute Dienste geleistet.

Außerdem habe ich auf dem UC3A erfolgreich den SPI mit dem Display in 
Betrieb genommen, weil ich eine andere Displayansteuerung brauchte.

...

von Lars (Gast)


Lesenswert?

Beim UC3A hab ich es auch geschafft.
Ich arbeite nun mit dem AT32UC3C-ek und dem AVRStudio 5. Ziel ist es 
einen AD-Wandler über SPI anzusprechen.

von cskulkw (Gast)


Lesenswert?

Nachdem ich mir das UCC3-EK Beispiel für die SD-Karte via SPI angeschaut 
habe, ist mir aufgefallen, dass Deine main-Funktion sich in einer spi.c 
befindet.
Wenn es sich nicht um eine Vereinfachung handelt und Du nur zu 
Demozwecken, Deine Datei "spi.c" genannt hast, dann könnte es eine 
Dateinamenüberschneidung sein. Das ASF-Driver-File vom SPI heißt 
ebenfalls spi.c.
Sollte das zutreffen, dann würde es auch die anderen Fehler/Warnungen 
erklären.

Vllt war es ja das.

von Lars (Gast)


Lesenswert?

Nein die Datei heißt main.c

Ich habe gerade das Beispiel SPI Master Mode Basic laufen lassen. In 
diesem Beispiel werden dann 2 LEDs angesteuert wenn die Initialisierung 
der SD Karte iO ist. Setze ich ein eigenes Projekt auf und lade die 
Dateien aus dem Framework leuchtet nur eine LED, obwohl kein Fehler 
aufgetaucht ist.

Anscheinend sind verschiedene Files aus dem Framework und den 
Besispielen nicht identisch....

von Lars (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab den Code etwas überarbeitet. Hab mir das Beispiel aus dem 
Framework genommen und anstatt SPI1 SPI0 initialisiert. Ich müsste doch 
normal die Clock an PB 12 messen können?!

von ULP (Gast)


Lesenswert?

Hallo,

bin auch gerade am versuchen spi zu initialisieren aber irgendwie kommen 
bei mir jede menge fehler wenn ich dieses projekt bei mir einfüge.

../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:45:  error: variable 'SPI0_DEVICE' has initializer but 
incomplete type
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:48:  error: unknown field 'id' specified in initializer
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:49:  warning: excess elements in struct initializer
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:49:  warning: (near initialization for 'SPI0_DEVICE')
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:  In function 'init_devices':
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:131:  error: implicit declaration of function 
'spi_master_init'
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:132:  error: implicit declaration of function 
'spi_master_setup_device'
../../../AVR32Framework/asf-2.6.0/../../D081_Akzent_Color/AVR32_with_lim 
e/src/main.c:149:  error: implicit declaration of function 
'spi_select_device'
make: *** [../../D081_Akzent_Color/AVR32_with_lime/src/main.o] Fehler 1

von asdasd (Gast)


Lesenswert?

Lars schrieb:
> Ich müsste doch
> normal die Clock an PB 12 messen können?!

Nö, da deine while-Schleife ist leer. Ohne spi_write()-Aufrufe wird da 
gar nichts passieren.

von ULP (Gast)


Lesenswert?

ferner muss du auch mit spi_selectChip(&AVR32_SPI0,1) deinen richtigen 
Chip auswählen denn du auch konfiguriert hast!

von Mario (Gast)


Lesenswert?

Hallo,

sitze gearde auch vor dem AT32UC3C-ek und will SPI testen.
Im Datenblatt gibt es z.B SPI1 MOSI auf PB04(GPIO37) und PB19(GPIO51).

Mir ist noch nicht klar wie und wo man definiert an welchem PIN jetzt 
z.B MOSI rauskommt.

Konkret: Ich will am J20 ein SPI Bauteil ansprechen. Dort gibt es 
PD4(SPI0 MOSI), PD5(SPI0 MISO) und PD6(SPI0 SCK)

wie und wo muss ich definieren damit diese Pins das SPI0 Modul sind.

Danke und Gruß
Mario

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.