Forum: Mikrocontroller und Digitale Elektronik spi Probleme


von Daniel K. (crazyman)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe Code für meine Kommunikation per SPI der zwei ATMega16 
geschrieben, naja eher den Beispiel Code von Atmels Seite genommen. 
Dieser funktioniert jedoch bei mir nicht und ich weiss auch nicht voran 
es liegt. Vielleicht könnte jemand meinen Code durchschauen? Vielen 
Dank.

von ... .. (docean) Benutzerseite


Lesenswert?

.zip statt .rar erhöht die Chancen deutlich

von holger (Gast)


Lesenswert?

Ich sehe kein SlaveSelect (SS) Signal vom Master
für den Slave im Code.

von Daniel K. (crazyman)


Angehängte Dateien:

Lesenswert?

Sorry der die Zip Datein

von Daniel K. (crazyman)


Lesenswert?

Also ich habe SS vom Master auf Vcc und vom Slave auf Ground gelegt wie 
dies in AVR151 steht.

von holger (Gast)


Lesenswert?

So wie es aussieht benutzt du Code für den IAR Compiler
mit dem AVR-GCC. Dein Code "funktioniert" nicht weil
der AVR-GCC ihn nicht compiliert. Da muß man schon einiges
anpassen ;)

von holger (Gast)


Lesenswert?

>Also ich habe SS vom Master auf Vcc

Autsch. Also wenn du ihn nicht benutzt dann
bitte offen lassen. Aber nicht an Vcc anschliessen!
Sonst brennt dir der Pin weg.

von Daniel K. (crazyman)


Lesenswert?

also eigentlich compiliert er ihn da ich ihn auch schon angepasst habe. 
Es sei dem du hast was gefunden.

von holger (Gast)


Lesenswert?

>also eigentlich compiliert er ihn da ich ihn auch schon angepasst habe.
>Es sei dem du hast was gefunden.

>// Interrupt Routine Master Mode (interrupt controlled)
>#pragma vector=SPI_STC_vect
>void ISR_SPI (void)
>{

Ich glaub ich muß mir mal ne neue Version
vom AVR-GCC ziehen. Compiliert der den Code
da oben wirklich? Oder benutzt du IAR?

von Johannes M. (johnny-m)


Lesenswert?

holger wrote:
>>Also ich habe SS vom Master auf Vcc
>
> Autsch. Also wenn du ihn nicht benutzt dann
> bitte offen lassen. Aber nicht an Vcc anschliessen!
> Sonst brennt dir der Pin weg.
Wenn er nicht als Ausgang konfiguriert ist, ist das kein Problem, und 
dann sollte er auch auf VCC gelegt werden (allerdings bitte nicht 
direkt, sondern über den internen Pull-Up). Allerdings sollte der SS 
im Master-Betrieb idealerweise als Ausgang konfiguriert sein...

von Daniel K. (crazyman)


Lesenswert?

ja ich weiss dass der code eigentlich für iar geschrieben wurde aber in 
gcc wird der #pragma teil ignoriert

was ist den eigentlich mit dem teil:

void ISR_SPI (void)

ist der interrupt auch falsch?

von Johannes M. (johnny-m)


Lesenswert?

Daniel Kremer wrote:
> void ISR_SPI (void)
>
> ist der interrupt auch falsch?
Für den AVR-GCC ja.

von holger (Gast)


Lesenswert?

>void ISR_SPI (void)
>
>ist der interrupt auch falsch?

Das ist beim AVR-GCC kein Interrupt
sondern eine schnöde Funktion.
Interrupts sehen so aus

ISR(ISR_NAME)
{
}

von Johannes M. (johnny-m)


Lesenswert?

holger wrote:
> Interrupts sehen so aus
>
> ISR(ISR_NAME)
> {
> }
Wobei "ISR_NAME" i.d.R. der im Datenblatt angegebene Vektorname mit 
angehängtem "_vect" ist...

von Daniel K. (crazyman)


Lesenswert?

hm muss wohl den interrupt mal bearbeiten, vielen Dank aufjeden fall.

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.