Problem mit SPI

Gast #220411
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")
Angehängte Dateien:
Gast #220412
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);
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.