Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 CAN-Bus mit BASCOM


von Renate (Gast)


Lesenswert?

Hallo zusammen.
Ich habe 2 Platinen mit jeweils einem AT90CAN128 und einem PCA82C250 
Treiber.
Die 2 Platinen sind mit den Leitungen CAN-H und CAN-L miteinander 
verbunden.

Ich möchte mit BASCOM von der ersten Platine eine Byte-Variable zur 
zweiten Platine mit dem CAN-Bus übertragen. Die Platinen haben jeweils 
einen 16MHz Quarz.

Wie sehen die Subroutinen aus für:
Initialisierung (16MHz)
CAN-Senden (eine Byte-Variable mit dem Namen: Test)
CAN-Empfangen mit Interrupt-Routine

Die zweite Platine sollte nicht ausgebremst werden mit Waits oder so, 
deshalb dachte ich an eine Interrupt-Routine die den CAN-Bus abfrägt.

Wenn ich eine Variable vom ersten MC zum zweiten MC übertragen kann, 
dann ist mein Problem gelöst, den Rest (mehrere Variablen) bekomme ich 
dann schon selbst hin.

Bin für jede Hilfe dankbar, Gruß Renate.

: Gesperrt durch Moderator
von Hans J. (hjm)


Lesenswert?

Hallo Renate,

muß es Bascom sein. Oder traust Du Dich auch an C oder ASM,
dafür gibt es genug Beispiele.

Grüße
Hans-Josef

von Renate (Gast)


Lesenswert?

Es muß BASCOM sein, leider. Mit ASM habe ich nicht so viel Erfahrung. 
Hatte vor Jahren mal was auf dem PC gemacht mit Macro-Assembler.

Ich habe das Buch: Programmieren der AVR-RISC Mikrocontroller mit 
BASCOM-AVR von Claus Kühnel

Da ist ein Programmbeispiel drin, aber nicht für den AT90CAN128, sondern 
für den AT90S8515 mit SJA1000. Der Code ist ziemlich umfangreich, und 
ich denke das müßte mit dem AT90CAN128 wesentlich einfacher gehen, da 
die Hardware außer dem Treiber schon integriert ist.

Ich habe im Internet schon gegoogelt, aber nichts brauchbares gefunden.

Danke Dir

Gruß Renate

von Hans J. (hjm)


Lesenswert?

Hallo Renate,

das einzige was Dir erspart bleibt, die Kommunikation zum SJA.

Register müßen auch im Mega gesetzt werden.

Ich kenne mich nicht so mit dem aktuellen Bascom aus, werde mir das 
morgen einmal ansehen und sehen wie man das machen könnte.

Prinzipiell kann man die C-Routine in Basic umsetzen.

By the way, gibt es schon eine feste Vorgabe für die ID's auf dem Bus?

Grüße
Hans-Jsoef

von Renate (Gast)


Lesenswert?

Hey. Nein es gibt keine feste Vorgabe für die ID´s, aber später sollen 
noch weitere AT90CAN128 dazu kommen.

Denke auch das man den C-Code in BASCOM umsetzen kann, aber C ist 
absolut fremd für mich.

Schon mal tausend Dank für Deine Mühe.

Renate

von Hans J. (hjm)


Lesenswert?

Hallo Renate,

schau mal hier: http://www.samberglund.se/AVR_page.htm

oder hier: 
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewforum&f=1&sid=60f7096280b4e11f3cebc77a849c452d

Da wurde so was diskutiert.

Im ersten Beispiel gibts auch Bascom-Code
"7. Bascom testprogram for AT90CAN128           Download "

Der sollte das tun was Du möchtest.

Grüße
Hans-Josef

von Renate (Gast)


Lesenswert?

Hallo Hans-Josef.
Das erste Beispiel mit dem Code könnte mir helfen.
Ich dachte es gibt fertige Routinen in BASCOM für:
Initialisierung
Senden
Empfangen

Danke Dir sehr für Deine Hilfe.

Gruß
Renate

von Kasem (Gast)


Lesenswert?

Hallo Leute,
Die erste Link "http://www.samberglund.se/AVR_page.htm"; läuft leider 
nicht. Es gibt kein Code. Bzw. kann man nichts runterladen.

Hat jemand vielleicht das im ersten Beispiel stehenden Code?

Es wäre sehr nett von Euch, wenn jemand das Code noch mal hier 
wiederholt.


Gruß
Kasem

von Sucher (Gast)


Lesenswert?

Wer suchet der findet...

http://web.archive.org/web/*hh_/www.samberglund.se/AVR/sb_can_m128.bas

Das Web vergisst nichts

Beitrag #5578299 wurde von einem Moderator gelöscht.
Beitrag #5578300 wurde von einem Moderator gelöscht.
Beitrag #5580144 wurde von einem Moderator gelöscht.
Beitrag #5580145 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.