PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SJA1000 - CAN - Bascomcode



Striebel
05.10.2004, 17:46
Moin...

Ich habe einen Atmega16 und den CAN-Controller SJA1000 von Philips folgendermaßen verbunden:

ATMEGA SJA1000
PORTA -------------------> Daten/Steuerbus AD1...7
PORTD.7 -----------------> ALE
PORTD.5 -----------------> RD
PORTD.4 -----------------> WR
CS -------> GND

Die Resetpins der beiden chips sind via 10kohm auf +5V gelegt. Sonst ist nichts angeschlossen.

Mit dem folgenden CODE kann ich nix zum SJA1000 schicken/lesen. Er nimmt nichts an. D.h. ich schreibe etwas in ein Register des SJA1000, jedoch kommt der Wert dort nie an. Woran kann es liegen? Ich verzweifel hier langsam... ](*,)

WUNDERT EUCH NICHT ÜBER DIE ART UNF WEISE DER PROGRAMMIERUNG, ICH HAB NUR ALLES MAL AUSPROBIERT.
(meine vor allem so sachen, wie die parameterübergabe in canschreiben, ist so schwachsinn, ich weiß, aber wollte da fehler ausschließen)



Ale Alias Portd.7
Rde Alias Portd.5
Wr Alias Portd.4





Dim Daten As Byte
Dim Adresse As Byte
Dim A As String * 3
Dim Aus As Byte


Declare Sub Can_schreiben
Declare Sub Can_lesen
Declare Sub Can_init
Declare Sub Init
Declare Sub Pause



Do

Input "(V0.09)Prompt> " , A


Select Case A
Case "L00"
Adresse = 0
Can_lesen
Aus = Daten
Print ">>" ; Aus
Case "L01"
Adresse = 1
Can_lesen
Aus = Daten
Print ">>" ; Aus
Case "L02"
Adresse = 2
Can_lesen
Aus = Daten
Print ">>" ; Aus
Case "L03"
Adresse = 3
Can_lesen
Aus = Daten
Print ">>" ; Aus
Case "L04"
Adresse = 4
Can_lesen
Aus = Daten
Print ">>" ; Aus
Case "LST"
Aus = Pina
Print "PortA: " ; Aus
Aus = Pinb
Print "PortB: " ; Aus
Aus = Pinc
Print "PortC: " ; Aus
Aus = Pind
Print "PortD: " ; Aus
Case "HGH"
Init
Portc = &HFF
Porta = &HFF
Print "ok"
Case "LOW"
Init
Portc = &H00
Porta = &H00
Print "ok"
Case "ini"
Can_init
Print "ok"
Case "sta"
Porta = &H00
Portb = &H00
Portc = &H00
Portd = &H00
Print "ok"
Case "stc"
Ale = 0
Rde = 1
Wr = 1
Print "ok"
Case Else
Print "???"
End Select


Loop









Sub Init
'Statusports
Config Portd = Output
Config Porta = Output
Config Portc = Output
Porta = &H00
Ale = 0
Rde = 1
Wr = 1
End Sub Init()

Sub Pause
$asm
nop
$end Asm
End Sub Pause()


Sub Can_init()

Daten = 1
Adresse = 0
Can_schreiben
Pause

Daten = 255
Adresse = 4
Can_schreiben

Daten = 255
Adresse = 5
Can_schreiben

Daten = 159
Adresse = 6
Can_schreiben

Daten = 255
Adresse = 7
Can_schreiben

Daten = 234
Adresse = 8
Can_schreiben

Daten = 72
Adresse = 3
Can_schreiben

'Daten = 0
'Adresse = 0
'Can_schreiben

Pause
End Sub

Sub Can_schreiben
Init
Ale = 1
Pause
Porta = Adresse
Pause
Ale = 0
Pause
Porta = Daten
Pause
Wr = 0
Wr = 1
Porta = 0

End Sub


Sub Can_lesen
Daten = 0
Ale = 1
Pause
Porta = Adresse
Pause
Ale = 0
Pause
Config Porta = Input
Pause
Rde = 0
Pause
Daten = Pina
Rde = 1
Config Porta = Output
End Sub

BITTE HELFT MIR!!!!!!

greetz
Striebel[/code]

06.10.2004, 08:57
hi striebel
hab mal durch die community geklickt.
suche eigentlich nen fotosensor der objekt chsn unterstützt.
weisst du ob es sowas schon gibt ?

dein problem ist warscheinlich das veränderte parameter??

06.10.2004, 11:56
Hmm, sorry, aber irgendwie weiß ich net so recht was du meinst. Könntest du das nochmal anders formulieren?

greetz
Striebel

05.12.2004, 22:44
du musst nur noch die ddr register manuell setzen
also vor ale ddrx = &HFF
dann adresse schreiben und ale wieder low
dann ddrx auf eingang schalten ddrx=&H0
dann rd/e auf low
dann wert einlesen und an variable übergeben
dann portx=&H0
schon hast du deine daten

gruß
Norbert

Woeba
21.12.2004, 16:57
Stribel..Erfolg gehabt? Ich kämpfe hier auch mit einem ATMEGA16 und einem SJA1000. Bisher ebenfalls erfolglos. :-(

tobiasrie
11.01.2006, 10:22
Hallo,

hat euer Projekt funktioniert?
Ich habe auch ein paar Versuche auch auf Basis SJA1000 unternommen und hatte bisher kin Erfolg.

Tobias

tobiasrie
11.01.2006, 11:13
Hallo,

hat euer Projekt funktioniert?
Ich habe auch ein paar Versuche auch auf Basis SJA1000 unternommen und hatte bisher kin Erfolg.

Tobias

elkokiller
22.01.2006, 18:52
Hallo Striebel,

bin eu im Forum und auf deine(n) Beitäge aufmerksam geworden.
Hast du schon eine CAN Vernetzung in Betrieb genommen?

Ich bin schon durchs halbe Web gesurft. In Bascom habe ich allerdings noch nichts gefunden.

Vielleicht hat ja jemand anders mehr Erfolg gehabt.
Meine Kenntnisse in Bascom und AVR sind noch am Anfang aber ich habe mir da was vorgenommen was ich auch unbedingt umsetzen möchte.

Kann mir hier jemand helfen?

Elkokiller

feitzi
06.06.2006, 11:15
Hallo
Gottseidank ich bin nicht alleine. Ich kämpfe gerade mit dem Can-Bus. Ich wäre sehr dankbar für eine Programmroutine wie man den SJA1000 in Bascom anspricht.
Grüße Manfred

elkokiller
06.06.2006, 15:27
Hallo Manfred,

gib die Hoffnung nicht auf! Ich suche jetzt schon fast ein Jahr nach einem Programm.
Entweder ist keiner in der Lage so etwas zu schreiben oder es ist einfach nicht möglich.
Ich befürchte den zweiten Fall da sonst recht schnell Hilfe kommt!

Tobias

feitzi
12.06.2006, 12:14
\:D/
Hallo an alle
Ich habs endlich geschafft mit dem SJA1000 einen CAN-Knoten in BASCOM zu programiern.
Ich weis nocht nicht, ob das Programm 100%ig das beste ist, aber es läuft.
Bei den Pins für die Datenübertragung hab ich 10k Pullups gegen Masse geschaltet. Funktioniert auch ohne

gruß Manfred

elkokiller
13.06.2006, 07:17
Hallo Manfred,

lässt du uns an deinem Glück teilhaben?
Kannst du dein Programm mal posten?

Tobias

elkokiller
13.06.2006, 07:22
Sorry Manfred,

der untere Teil der Nachricht war in meinem Explorer nicht zu sehen.
Mal sehen wie weit ich komme.

Grüße
Tobias

Stromi
13.06.2006, 12:20
Hallo Manfred,
hast du 2 Board's mit einander verschaltet und dann Daten rübergeschickt, wenn ja, hast du die Verschaltung bzw. das Schaltbild mal da?
Ich wollte immermal 'ne Can-Bus gestützte Haussteuerung bauen, deshalb bettel ich um die Schaltung O:) .
MfG