Forum: Mikrocontroller und Digitale Elektronik Problem mit SPI


von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen!!!


Habe folgendes Problem und weiss zum verrecken nicht woran es liegt.
Der gesamte Code ist um einiges länger und tut meines erachtens bei dem
Fehler nichts zur Sache. (ok, vielleicht such ich auch am falschen
Ende), deshalb hab ich nur den Teil in den Anhang getan, welcher mir
wichtig erscheint. Controllertyp ATMEGA128. Compiler CodeVisionAVR.
Debug über AVRStudio.

Das Problem sollte hoffentlich schon aus meinem Anhang erkenntlich
sein, aber ich versuchs nochmal zu erklären.

sagen wir ich habe ein single-master, multi-slave-system.
jetzt habe ich eine bestimmte senderoutine um einen string an einen
slave zu schicken. (siehe anhang "STRING_FUNKTIONIERT")
also das klappt problemlos.

sobald ich eine zweite routine für einen zweiten slave hinzunehme und
egal wann und wo ich in meinem code an einen der beiden slaves einen
string senden will, bleibt mir der controller in der jeweiligen routine
in der while-schleife hängen.
so die while schleife fragt das SPIF (SPI interrupt flag) im SPSR ab.
(siehe Anhang "FUNKTIONIERT NICHT")
(das bedeutet ja eigentlich das die daten nicht rausgeshiftet werden,
wenn er dort hängen bleibt.)


weiter unten im anhang sind zwei weitere funktionen um nur einen
character an einen der slaves zu senden. dies funktioniert aber
wiederum einwandfrei.(siehe Anhang "CHAR_FUNKTIONIERT")

von theFloe (Gast)


Lesenswert?

Hallo,

ich würde mir jeweils eine Funktion für Strings und Char schreiben.
und dann immer vor dem Aufruf den gwünschten slave auswählen.

Da es mit CHAR funktioniert, probier doch einfach:

while ((chr = *mystr++)!=0) {
sendchartoslave(chr);
}

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.