Forum: Mikrocontroller und Digitale Elektronik Software SPI zur Chip Konfig


von hilli (Gast)


Lesenswert?

Hallo,

bin ein absoluter Neuling auf dem Gebiet der Mikrocontroller und möchte 
einen ISM Transceiver mittels einem ATmega 48 über SPI konfigurieren.
Leider werde ich die Hardwaremäßige SPI Schnittstelle des Controllers 
nicht benutzen, da dort der ISP angeschlossen ist.
Kann mir jemand weiterhelfen, bei der Programmierung der SPI 
Schnittstellen (Vielleicht mit einem Beispiel Code)?
Woltte PortC nehmen.
PC5 = MOSI
PC4 = MISO
PC3 = SCK
PC4 = CS
Bin über jede Hilfe dankbar.
Der Transceiver wird mit 2 1-byte Befehlen konfiguriet. z.B. A7D0

von Matthias (Gast)


Lesenswert?

Wohl auch ein Neuling hier im Forum ;-)

Wie wäre es mit einem Schaltplan, einem Datenblatt der ISM Transceivers, 
etc.. ?

Das mit dem ISP und der SPI ist normalerweise kein Problem, wenn man 
weiß was man tut. Dafür gibt es z.B. einen Hinweis von Atmel mit 
Widerständen in den Datenleitungen.

von RoK (Gast)


Lesenswert?

Hi,

warum sollte die HW-SPI nicht gehen? Dein ISM Transceiver hat einen Chip 
select. Dieser bleibt ruhig während der AVR Programierung z.B über 
externen Pullup. Also bekommt er davon nichts mit. Während des normalen 
Betriebes ist entweder der ISP Stecker abgezogen oder der Programmer (je 
nach dem welcher das ist) sollte "unsichtbar" (Tristate) sein. Somit 
bekommt der Programmer davon nichts mit. Also kollidieren Program-Mode 
und Run-Mode nicht miteinander.

Gruß
RoK

von hilli (Gast)


Angehängte Dateien:

Lesenswert?

Als Transceiver wird der IA4421 baugleich im HopeRF 12 verwendet.
Datenblatt im Anhang.
Schaltplan sind nur die 4 obengenannten Leitungen die zum Chip gehen.

von hilli (Gast)


Lesenswert?

Das will ich ja vermeiden, das ich immer umstecken muss.

von fast so (Gast)


Lesenswert?

Nimm die Hardware SPI.
Die ISP Schnittstelle und die SPI passen zusammen. Das Einzige, das man 
beachten muss, ist dass das SPI Geraet beim Programmiern keinen Scheiss 
macht. Der Programmiermodus hat uebrigend Reset=low.

von hilli (Gast)


Lesenswert?

geht es wirklich nicht softwaremäßig? wäre echt klasse wenn es gehen 
würde...

von (prx) A. K. (prx)


Lesenswert?

Das einzige was du machen musst: Dem nSEL Anschluss zusätzlich einen 
Pullup-Widerstand (z.B. 47K) spendieren, damit sich dieser Funkchip 
nicht versehentlich angesprochen fühlt. Dann lässt sich die 
SPI/ISP-Schnittstelle sowohl für ISP als auch für SPI verwenden, ohne 
das irgendwas umgesteckt werden muss.

von hilli (Gast)


Lesenswert?

gibt es denn bei hardwaremäßigem SPI irgendetwas zu beachten?
kann man da 1:1 die Quelltexte aus dem Datenblatt übernehmen??

Falls doch noch jemand etwas über den software SPI hat, bitte melden!!

von NN (Gast)


Lesenswert?

Beispiel für Software SPI (auch wenn ich das Warum nicht verstehe...):
http://www.roboternetz.de/wissen/index.php/Portexpander_am_AVR#Ohne_SPI-Hardware

von hilli (Gast)


Angehängte Dateien:

Lesenswert?

so der SPI Bus sofwaremäßig läuft soweit. Ich habe jetzt nur noch ein 
Problem mit der _delay_ms Funktion. Nachdem ich zwei Pakete gesendet 
habe will ich eine Pause machen. und wiederum zwischen den beiden 
Paketen auch eine kleine Pause. Leider funktioniert das mit der obigen 
Funktion nicht.
ich hänge mal ein Bild an, wie es ungefähr aussehen soll.

von hilli (Gast)


Angehängte Dateien:

Lesenswert?

und so wenn ich ein Befehl sende (2 x 2 HEX Zeichen)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.