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)
BITTE HELFT MIR!!!!!!Code: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
greetz
Striebel[/code]








Zitieren

Lesezeichen