Bascom --SPI-- (Master-Mega8) - (Slave Tiny13)

Pimp.my.PC

Neues Mitglied
13. Aug. 2011
3
0
0
32
Sprachen
Hallo

Ich möchte gerne Daten von einem SPI-Master (ATmega8) an einen SPI-Slave (ATtiny13) senden, funktioniert aber nicht. :confused:
Programmieren tu ich in BASCOM...

Hier mein Code:

Master:
Code:
$regfile = "m8def.dat"
$crystal = 8000000

Config Portc = Output

Led Alias Portc.0

Config Spi = Hard , Interrupt = Off , Data Order = Lsb , Master = Yes , Polarity = Low , Clockrate = 4 , Noss = 1
Dim Spicode As Byte
Spicode = 20
Spiinit
Waitms 1500

Spiout Spicode , 1"
Led = 1
End

Slave:
Code:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 5
$framesize = 16

Config Portb.4 = Output
Led Alias Portb.4
Dim Spicode As Byte
Spicode = 0

Spiinit

Do
Spiin Spicode , 1

If Spicode = 20 Then
Led = 1
Else
Led = 0
End If
Loop
End

Später will ich durch Tastendrücke verschiedene "SPI-Codes" erzeugen und diese zum slave senden, welcher die dann weiterverarbeitet...
Da aber noch nichteinmal der Code oben funktioniert, habe ich offensichtlich irgendwas net richtig verstanden^^
In der BASCOM-Hilfe steht, dass der slave erst etwas über SPI schicken muss, bevor er empfangen kann, liegt da mein Fehler?

Bitte Helft mir! :fie:

Pimp.my.PC
 
Hallo,

Da aber noch nichteinmal der Code oben funktioniert, habe ich offensichtlich irgendwas net richtig verstanden^^
In der BASCOM-Hilfe steht, dass der slave erst etwas über SPI schicken muss, bevor er empfangen kann, liegt da mein Fehler?
naja ... sagen wir mal ... das Schieberegister zum senden ist genau das identische mit dem du auch empfängst. Also wenn du ein Byte in das Schieberegister packst, dann tacktet der Master über die SCK-Leitung sein eigenes und das Schieberegister des Slaves. Dabei werden dann die Daten vom Master über die MOSI-Leitung des Masters in das Schieberegister des Slaves geschoben und das Schieberegister des Slaves sendet gleichzeitig die Daten über die MISO-Leitung des Masters in sein Schieberegister. Es sind also die beiden Schieberegister des Masters und des Slaves über zwei Datenleitungen (MISO/MOSI) zu einem Ring verbunden. Wenn du beim Master nichts sendest, dann empföngst du auch nichts vom Slave. Du mußt zum Empfangen also wenigstens ein Dummy-Byte zum Slave senden.

Gruß
Dino
 
Ja, klingt logisch...

Is das denn richtig, das ich beim Slave nur mit "spiinit" die Pins für spi aktiviere und kein "config spi" vornehmen muss?
 
So, ich habe mittlerweile herausgefunden, dass wenn ich "Config SPI" ausführe, der ganze Controller nicht mehr arbeitet...

Und wenn ich versuche, das Slave-Programm zu compilieren, meint BASCOM immer, dass der Chip das net könnte...

Ich verzweifel hier noch!

Ich bin kurz davor, die ganze sch... mit I2C und nem EEPROM als zwischenspeicher zu lösen...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)