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)

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
BITTE HELFT MIR!!!!!!

greetz
Striebel[/code]