Avr mega 8 und MCP 2515 für einen CAN Bus

OP #423986
Lesenswert?
• ▲
▼
Hallo zusammen,
ich bin auf der Suche nach einem funktionstätigen Programm für eine 
mega8 mit einem MCP 2515.
Ich programmiere derzeit auf Bascom, nur leider ist darüber nichts zu 
finden und die Litaratur gibt auch nicht viel her.....

überall findet man nur Denkanstöße..... kann man nicht mal gemeinsam ein 
Programm hinbekommen?

Vielen Dank
Michael
OP #424209
Lesenswert?
• ▲
▼
Ich habe die gesammte Dokumentation sogar ausgedruckt vor mit 
liegen..... jedoch wie bekomme ich die Daten in die drei register, wie 
kann ich überhaupt ein register über spi ansprechen? Wie schreibe ich 
die Daten dann rein, wie Initialisiere ich das ganze Ding zu 
senden....... ?
Und wie kann die Gegenseite auslesen???

Danke für den link an crazy Horse, jedoch ist das c, oder? Wer kann das 
übersetzen zu bascom?

Ich stelle auch anschließend das FUNKTIONIERNDE komplettprogramm zur 
Verfügung,

Also, bitte helft mir

Viele Grüße
Michael
Gast #424211
Lesenswert?
• ▲
▼
Mit Basic werden dir hier wirklich nicht viele helfen können. Ohne einen 
weiteren Glaubenskrieg anzetteln zu wollen: zu >90% arbeiten die Leute 
hier mit C oder Assembler.
Versuchs mal da:
http://www.roboternetz.de/
Da sind viele unterwegs, die mit Bascom arbeiten. Ich glaube nicht, dass 
sich einer für dich extra die Mühe macht, sich dafür in Basic 
einzuarbeiten.
Gast #424285
Lesenswert?
• ▲
▼
Vielleicht solltest im Betreff auch Bascom erwähnen. (nur ein Tip am 
Rande...)

Ich gehe davon aus, dass im Bascom-Handbuch eine SPI-Funktion 
beschrieben wird (suchen!).
Eigentlich ist es ziemlich einfach per SPI zu kommunikzieren.
Das Protokoll ist ja auch im Datenblatt des MCP2515 beschrieben.
OP #425430
Lesenswert?
• ▲
▼
Danke für die Infos, jedoch sehe ich immer mehr, dass mir die 
Grundkentnisse für die SPI Kommunikation fehlen. Ich habe zwei Bücher 
über Bascom und die Hilfe aus dem Programm, jedoch ist alles nur als 
Grundthema behandelt.

Wenn ich es richtig für die Praxis des MCP2515 verstanden habe;

1. Slave Select manuell auf Masse ziehen
2. 1. Register anspechen , Daten hineinschreiben
3. 2. Register anspechen , Daten hineinschreiben
4. 3. Register anspechen , Daten hineinschreiben
5. Slave Select manuell wieder auf Potential

..... und wenn man alles richtig gemacht hat müsste das Ding senden

und zum lesen müsste es dann einen Interrupt geben oder so?

Oder?

Dank Euch
Gast #425549
Lesenswert?
• ▲
▼
Nicht ganz so. Das erste Byte nach aktiviertem SS ist das Kommando. Vor 
dem nächsten Kommando muss also erstmal SS inaktiv sein.

Schreiben ginge auch mit einem einfachen spiout und NOSS=0. Lesen indes 
nicht, weil BASCOM die Richtungsumschaltung mitten drin nicht hinkriegt, 
spimove kann nur 1 Byte, müsste N Bytes können. Deshalb muss SS manuell 
gesteuert werden.

Lass das mit den Interrupts mal für den Anfang bleiben.


Der Kern:

Const CanCmdReset = &HC0
Const CanCmdRead = &H03
Const CanCmdWrite = &H02

Function CanRegRead(byval Addr) As Byte
   Reset PortB.4
   Local Tmp As Byte
   Tmp = CanCmdRead
   SpiOut Tmp , 1
   SpiOut Addr , 1
   SpiIn Tmp , 1
   CanRegRead = Tmp
   Set PortB.4
End Function

Sub CanRegWrite(byval Addr As Byte , byval Value As Byte)
   Reset PortB.4
   Local Tmp As Byte
   Tmp = CanCmdWrite
   SpiOut Tmp , 1
   SpiOut Addr , 1
   SpiOut Value , 1
   Set PortB.4
End Sub

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.