SPI funktioniert mit externem SCK takt

Gast #3451075
Lesenswert?

Hey,
ichversuche grade ein arduino mirco mit nem mega8 reden zu lassen und 
zwar über je ein nRF24L01+ modul. der mega8 hat z.z. keine externe 
beschaltung außer 10k am reset und ist auf 8 MHZ intern getaktet.
Die funkkommunikation funktioniert problemlos, wenn ich einen externen 
sck takt am mega 8 anlege: entweder der vom ISP programmer oder der vom 
arduino.
hab bereits versucht einen pullup oder pulldown wiederstand von 10k oder 
2,2k an die sck leitung zu hängen, außerdem 330 Ohm in reihe und 
kombinationen aus wiederstand in reihe und pull wiederstand. bisher 
alles erfolglos. kann es sein, dass der interne takt zu ungenau ist?
danke,
Marc
Gast #3451562
Lesenswert?

der code benutzt die arduino MIRF lib, ich schätze mal das ist darin 
irgendwie geregelt.. die \CS leitung vom nRF24L01+ ist ja mit einem pin 
des atmega verbunden (dem in der lib als standart definierten pin 
13[PD7] des mega 8) nur am \SS pin des hardware SPI liegt nichts an.. es 
ist ja nicht so als hätte ich mir hier was wirres ausgedacht, sondern 
ich versuche ein funktionsfähiges beispiel zu reproduzieren.
Moderator (Firma: Titel) Persönliche Seite #3451598
Lesenswert?

MSN schrieb:
> wiederstand
Was ist das schon wieder?

> hab bereits versucht einen pullup oder pulldown wiederstand von 10k oder
> 2,2k an die sck leitung zu hängen,
Willst du nicht einfach mal versuchen, zu verstehen, was SPI eigentlich 
ist? Und dann ist klar, dass du einen Master brauchst, der den Takt 
ausgibt und mit einem Slave kommuniziert. Wer ist in deinem System der 
Master? Wer der Slave? Und wer hat ergo für den Takt zu sorgen?

MSN schrieb:
> der code benutzt die arduino MIRF lib, ich schätze mal das ist darin
> irgendwie geregelt..
Das hört sich nach überlegtem und koordiniertem Vorgehen an. Was sagt 
denn die Doku zu dieser Bibliothek?
Gast #3451620
Lesenswert?

Lothar Miller schrieb:
> überlegtem

Lothar Miller schrieb:
> MSN schrieb:
>> wiederstand
> Was ist das schon wieder?

das ist etwas was hier im forum vorgeschlagen wird, und nicht meine 
idee..

>> hab bereits versucht einen pullup oder pulldown wiederstand von 10k oder
>> 2,2k an die sck leitung zu hängen,
> Willst du nicht einfach mal versuchen, zu verstehen, was SPI eigentlich
> ist? Und dann ist klar, dass du einen Master brauchst, der den Takt
> ausgibt und mit einem Slave kommuniziert. Wer ist in deinem System der
> Master? Wer der Slave? Und wer hat ergo für den Takt zu sorgen?

ich habe verstanden was SPI ist, natürlich hat der mega8 für den takt zu 
sorgen, offensichtlich tut er das aber nicht.

> MSN schrieb:
>> der code benutzt die arduino MIRF lib, ich schätze mal das ist darin
>> irgendwie geregelt..
> Das hört sich nach überlegtem und koordiniertem Vorgehen an. Was sagt
> denn die Doku zu dieser Bibliothek?

die lib konfiguriert den mit \CS verbundenen pin als output und zieht 
ihn vor SPI kommandos auf low danach wieder auf high

nach wie vor ist mein problem allerdings die SCK leitung...
#3451915
Lesenswert?

MSN schrieb:
> ích hab \SS als ausgang deklariert, helfen tut das allerdings nicht..

Schön, aber wenn der SS Eingang ist UND auf Low, dann haut es dir sofort 
das SPI Master Bit raus und der µC war die längste Zeit SPI Master.
Also der muss erstmal Ausgang sein.


> Bist du dir sicher, dass der µC als SPI Master konfiguriert ist?

Eben.
Sind die entsprechenden Bits in den SPI Registern gesetzt?

Sind die Ports für MISO,MOSI und SCK auf die korrekte Richtung 
eingestellt?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren