Ja,der Uart hat ja nix mit dem SPI zu tun.
Könnte auch sein das die Komunikation zum mcp2515 hängt (Protokollfehler wenn man überhaupt von Protokoll sprechen kann)
Wie gesagt,aus der Ferne gibt es zig Möglichkeiten.
Druckbare Version
Ja,der Uart hat ja nix mit dem SPI zu tun.
Könnte auch sein das die Komunikation zum mcp2515 hängt (Protokollfehler wenn man überhaupt von Protokoll sprechen kann)
Wie gesagt,aus der Ferne gibt es zig Möglichkeiten.
ich weiss jetzt nicht ob ich einen denkfehler hab, aber wenn ich mit meinen mega8 daten auf den bus sende, da bekommt der avr doch gar nichts mit ob was dran hängt oder nicht. und auch beim empfangen ist es doch rein hardwaretechnisch den avr egal ob was dran hängt oder nicht, da das clock signal ja nicht der mcp2515 macht und er empfängt hald dann auch als wert FF (da der avr den eingang auf pullup setzt)Zitat:
Zitat von Ratber
ich habe eher die vermutung, das es an irgendeinen stack oder so liegen kann, hab leider in dieser richtung noch gar keine erfahrung, da ich bis jetzt eigendlich nur immer mit den at90s2313 was gemacht habe und da hab ich bascom auf den standard einstellungen lassen
Ja,wenn du reines SPI ohne jegliches Protokoll verwendest dann ist das natürlich egal.Zitat:
ch weiss jetzt nicht ob ich einen denkfehler hab, aber ..........usw.
>ich habe eher die vermutung, ...........usw.
Ja,der Stack ist auch möglich.
Leider kann man das an deinem Codefetzen nicht sehen.
Ich kann immer nur empfehlen "alle" Einstellungen im Quelltext zu machen und die Defaultwerte des Compilers nicht zu nutzen.
Viele machen das Anfangs und solange sie ihren Lieblingscontroller (Momentan oft M8,M16 oder M32) nutzen passiert da auch nicht viel.
Spätestens wenn dann der Controller gewechselt wird rächt sich diese Bequemlichkeit denn die Einstellungen sind längst vergessen.
Schon liegt man auf der Nase und weiß nicht warum.
Der Nächste (Kleine) Stolperstein ist dann die wilde Suche nach den Settings die man dafür im Quellcode setzen muß.
Falls es wirklich der Stack ist gibt es ja nur zwei primäre Möglichkeiten.
Zum einen die vom Compiler nicht erkannte Belegung und zum anderen die allseits beliebten Sprünge aus Unterprogramen heraus.
Der Rücksprung bleibt dabei im Stack womit dann das nächste Return an die falsche Adresse geht oder der Stack recht flott überläuft.
Aber das ist alles nur geraten denn für Aussagkräftige Hilfe muß man schon den Quelltext kennen.
Such einfach mal in Ruhe,vieleicht findest du ja die Stelle.
Hardware oder Software-SPI?
laut Codefetzen Hardware s. O.
also n Programm ohne Mainloop möcht mir irgendwie nicht recht gefallen.
Mit der Sub ohne Übergabewert hatt ich shconmal Ärger, weiß der Geier warum,
wenn eh keine Parameter übergeben werden tuts dann auch n gosub.
Probiers mal so:
Code:
'Grundeinstellungen und Variablendefinitionen
$baud = 9600 'Baudrate der UART: 9600
$regfile = "m8def.DAT" 'ATmega8-Deklarationen
$crystal = 8000000 'Quarz: 8 MHz
'Aliasse für die Ports
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Clockrate = 4 , Noss = 1 'Test mir Atmega wegen HardwareSPI
Cs_line Alias Portd.3
Config Cs_line = Output 'ss cs
Print "Hallo SPI TEST(CAN) RX Stauts 250kbits für atmega8 register auslesetest"
Spiinit
Set Cs_line
Waitms 20
gosub Mcp2515_init
do
' ###### Mainloop ######
loop
Mcp2515_init:
Dim Mcp2515_reset As Byte
Mcp2515_reset = &HC0
Print "init"
Cs_line=0
Spiout Mcp2515_reset , 1
Cs_line=1
print "init fertig"
....usw aber soweit kommt das programm ja leider nicht
return
end