Hallo, ich bin gerade dabei ein uC Netzwerk (ein Master, 6 Slaves) über SPI fertigzustellen. Die Slaves werden dabei parallel angeschlossen ( je eine /CS Leitung für jeden Slave ). Bin gerade dabei mir zu überlegen, ob es denn sinvoll ist eine Art CRC einzubauen. Bei SPI werden ja während einer Datenübertragung das Sendereg. des Masters mit dem Empfangsreg. des Slaves ausgetauscht. Wenn ich also nach einer vollständigen Übertragung das Sendereg. des Masters mit dem gesendeten Byte vergleiche, dann dürfte doch bei Übereinstimmung kein Fehler aufgetreten sein oder? Mfg, Mathias
hmm dann ist es aber dass was zuvor gesendet wurde oder? bzw. das was eben im datenreg. drinn steht
Was beim Senden reinkommt ist das, was davor beim Slave im Transfer-Register stand. Was das ist, hängt von dessen Programm ab.
Du brauchst ne Ready-Leitung (kann ja als open drain für alle Slaves die gleiche sein), z.B.: http://www.mikrocontroller.net/forum/read-1-249737.html#new Oder elend lange Wartezeiten. Anders gehts nicht !!! CRC ist nicht dazu da, um Softwarefehler auszubügeln, sondern um Störungen (EMV) zu erkennen. Peter
zu was eine ready leitung? wenn ich mir mit einem höher prioren interrupt im slave jedes mal das empf. byte abhole, dann ist wohl sichergestellt das kein byte überschrieben wird. und außerdem gibt es ja das wcol bit
Bei Nichtnennen des MC-Typs wird hier immer der AVR angenommen und der hat gar keine Prioritäten. Wenn Du aber die höchste Priortiät bei den Slaves verwenden kannst, dann muß die Wartezeit nur so groß sein, wie lange der Interrupthandler braucht, um das nächste Sendebyte reinzustellen. Aber ganz ohne Wartezeit geht es nicht. Es sein denn Dein unbekanntwer MC ist z.B. ein AT89LP4052 mit gepuffertem SPI (enhanched mode). Peter
sry @ peter handelt sich um einen LPC931 da das versenden beim master in einer main loop passiert (bei jedem durchlauf wird ein byte versendet).. ist die wartezeit auf alle fälle sichergestellt ( min. um den faktor 100 laenger als die zeit die der interrupthandler benoetigt ) Mathias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.