hat keiner einen tipp für mich, ich weiss nichtmehr weieter. ich weiss nichtmehr wo ich weitermachen kann. ich glaub nicht das es am spi liegt, da ich es ja schaffe die led an und auszuschalten. ich hab die chips schon ausgetauscht um einen hardware schaden auszuschließen. das einzigste was unterschiedlich zu deinen grundaufbau ist, ich hab 27pF kondensatoren an den quarz und die resetleitung des mcp2515 nur mit 10k gegen 5V+ ohne kondensator gegen masse. ich kann gerne mal den schaltplan hier posten.
ich würde dir gerne helfen, leider kann ich Basic nicht so gut....
Mal eine blöde Frage vonmir:
Warum machst du Software SPI, und nicht Hardware-SPI ?
( Rein aus Interesse )
Tipp,
Versuch mal eine Funktion zu bauen, die nach der initialisation
die Register des MCP2515 liest, und sie dir auf die Serielle Schnittstelle
zum PC ausgibt. Dann kannst du überprüfen, ob die Register auch
wirklich so gesetzt sind, wie du es wolltest.
Noch eine Frage,
Dein Problem liegt einzig und allein darin, dss du die 166kbps nicht hinbekommst?
also mein problem liegt darin das ich nur 500kbit(und das auch nur duch zufall) hinbekomme.
mit 166k wollte ich nur testen weil ich mein laptop gerade auf diese boud eingestellt hatte. für das was ich vor hab brauch ich verschiedene baudraten, aber leider nicht 500kbit
warum verwende ich kein hardware spi: eigendlich ganz einfach, da ich noch alte at90s2313 hatte die kein spi haben und die attiny2313 haben angebich auch kein richtiges. die haben nur die spi um sie selber zu sprogrammieren glaub ich.
Also, ich habe gerade mal im
"Microchip CAN Bit Timing Calculator" nachgeschaut.
Hier mal meine Theorie:
Weder mit 16MHz, noch mit 20Mhz Quarz kommt man auf die 166kbps.
Das geht einfach rechnerrisch nicht auf. Es gibt für diese Quarze
anscheinend keine Lösung für 166kbps, die 0% Error hat...
166,667kb war das Beste glaub ich, wären sogar nur -0,4016% Error.
Mit 20MHz, BRP-1 = 5, 10Tq.
Mit 16MHz, BRP-1 = 1, 24Tq.
Kannst es ja mal versuchen... Einige Pakete werden evtl Fehlerhaft übertragen. Eben 0,4% der Pakete... Also ca. 1 von 250Paketen.
Ich glaube aber, dass der MCP2515 in einem Solchen fall dann den sendevorgang wiederholt!
( Sorry, dass ich dir das erst jetzt sage :-/ )
Das ist vergleibar mit dem UART.
Setzt man für den ATMEL zB 8MHz quarz ein, kann man
keine üblichen Baudraten erzielen, die 0% Error liefern.
Du müsstest als mit den Formeln im Datenblatt zurückrechnen,
welches Quarz du einsetztn müsstest, dass 166kbps "als ganze Zahl" rauskommt... Aber mir 0,4% Error dürfte es schon funktionieren!
hatte schon mit 166,66 kbit probiert. hab auch schon mit 250kbits 125kbit und 62.5kbit getested und ging nichts :/ und bei diesen werten dürfte 0% fehler sein.
von der thorie hab ich her auch schon alles kapiert und der vergleich mit urat ist mir auch bewust, es kommen aber leider keine daten an.(ausser wenn ich meinen pc auf 500k stelle und den mcp2515 auf 166,66kbit)
ich werd mal deinen tipp ausprobieren und die geschriebenen register wieder auslesen.
ich war heute den ganzen tag in der nähe von straubing, da hätte ich eigendlich gleich bei dir vorbeischauen können *duck*
Müßte tatsächlich 166,667kb sein.
Offenbar stimmt was mit der Übertragung zum CNF1 nicht.
Der haut Dir da ne 0 rein, anstatt ne 2...
Das Problem könnte darin bestehen, dass du vergessen hast,
den MCP2515 in Konfigurationsmodus zu versetzen.
Bei mir sieht der INIT-Vorgang so aus:
1. Den Chip Resetten
2. den Chip in Configurationsmodus versetzen: REQOP2 in CANCTRL auf 1 setzen.
2. CNF1, 2, 3 usw... Filter, Masken usw.. setzen
3. Wieder in Normalmodus versetzen.
ohh richtig peinlich, ich hab den punkt 2 vergessen. einen reset mache ich noch aber in den config modus schalte ich ihn nicht, nur dann aus. *und noch paar mal mit den kopf gegen die mauer hau*
ich sag jetzt lieber nicht wielange ich schon vor den quellcode war und gekrübelt habe. ich werd das heute abend gleich testen.
Funktioniert das bei dir ohne delay nach dem reset? Bei mir hat's erst gefunzt als ich nach dem reset noch ein _delay_ms( 1 ) eingefügt hab. Dafür spar ich mir den 2. Schritt, da der chip nach einem reset automatisch im config modus ist.
Lesezeichen