www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit SPI


Autor: Jan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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")

Autor: theFloe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.