-
-
Erfahrener Benutzer
Fleißiges Mitglied
SPI "visualisiert"
Tachjen,
hab mal spasseshalber etwas mit dem SPI-Bus rumhantiert. Wollte demnaechst damit mal den MCP2515 (CAN-Controller) etwas naeher untersuchen.
Auf einem ATMega16 habe ich einfach frei Schnauze einige Pins von Port D als SPI deklariert und mal nen Zweikanal-Oszi drangehangen:
http://www.speckmann.de/images/spi.jpg
Auf Kanal 1 (Pind.0) haengt Clock. Hier sieht man sehr gut die 8 Takte. Auf Kanal 2 (Pind.1) sind die Signale von MOSI (DOut) sichtbar. Hier wird unterdessen ein Byte rausgeschoben. Und zwar dezimal die 151. Auch das kann man sehr gut erkennen. Von Rechts nach Links zaehlend ist Bit 1, 2, 4, 16 und 128 auf High, zusammen 151. Passt also wunderbar.
SPI arbeitet ja wie ein Schieberegister. Das DatenByte wird dabei bitweise auf MOSI "herausgeschoben".
Hier noch mal der Codeschnipsel dazu:
--------------------------------
$regfile = "m16def.dat"
$crystal = 16000000
Config Spi = Soft , Din = Pind.2 , Dout = Pind.1 , Ss = None , Clock = Pind.0
Dim X As Byte
Dim Y As Byte
X = 151
Spiinit
Do
Waitms 1
Y = Spimove(x)
Loop
End
--------------------------------
Ich hatte gerade Langeweile und vielleicht dient es ja dem einen oder anderen etwas zum Verstaendnis :)
-
Erfahrener Benutzer
Roboter Experte
Warum stellst du es nicht ins Download-Verzeichnis? So wird man es mit Sicherheit irgendwann nicht mehr finden...nur so ein Tip.
-
Hallo,
ich beschäftige mich von der Schule aus mit dem SPI-Bus und versuche gerade zwei Atmegas miteinander komunizieren zu lassen. Klappt auch ganz gut (Master-Slave).
Nun mein Problem, welches eher ein Verständnisproblem ist.
Ich will nun ein bereitgestelltes Funkmodul über SPI ansteuern. Das Funkmodul schickt gewisse Anfragebytes, welche der Prozessor beantworten muss(Initzialisieren). Das Funkmodul generiert den Clock beim Senden, mein Atmega 32 ist auf Hard eigestellt. Normalerweise generiert ja der Master den Clock (in meinem Fall ja der Atmega), kann ich trotzdem Daten empfangen? Obwohl der Atmega für die zeit eigentlich Slave ist und den Clock nicht generieren darf?
Also auf den Punkt: Wenn ich den Befehl Spiin benutze, generiert der Atmega dann ein Clock?
Ich hoffe ich habe mein Problem deutlich erklärt, wäre klasse, wenn jemand kurz was dazu sagen könnte, da es sehr wichtig ist
schon mal danke im vorraus
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen