Forum: Mikrocontroller und Digitale Elektronik Probleme mit SPI und RFM12


von Sebastian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Assemblerprogramm geschrieben um Daten an das RFM12-Modul 
zu senden. Das Senden der Daten über die SPI-Schnittstelle funktioniert 
aber nur wenn kein Funkmodul angeschlossen ist. Ich habe schon mehrere 
Module und Controller ausprobiert, aber Das Problem tritt immer auf. 
Ohne RFM12 läuft das Programm auch nur an wenn ich längere Zeit den 
Resettaster gedrückt halte. Die Module sind folgendermaßen verbunden:

MOSI --> SDI
MISO --> SDO
SCK  --> SCK
SS   --> nSel
PB3 --> nIRQ (zur Erkennung dass das Modul bereit ist zu senden, habe 
ich auch
              schon mal direkt auf Masse gelegt, ohne Erfolg)


Zum Flashen benutze ich das Evaluationboard von Pollin und PonyProg.
Prozessor: ATMega32.

Das Komische daran ist, dass einfache Programme wie die Ausgabe eines 
Rechtecksignals einwandfrei funktionieren ohne dass ich den Resetbutton 
drücken muss.

Kann es vielleicht sein, dass das Eva-Board mir die uC schießt ? Im 
Datenblatt des Controllers steht, die max. negative Eingangsspannung an 
den PortPins dürfe nur -0,5V betragen. Durch den RS232 / TTL 
Pegelwandler liegen jedoch bis zu -0,7V an (Dieser besteht nämlich nur 
aus Widerstand un d einer Diode gegen Masse)

Das Problem klingt vielleicht ein bisschen komisch, aber ich zerbreche 
mir schon Stundenlang den Kopf darüber..

P.S: Das Programm habe ich beigefügt

von Falk B. (falk)


Lesenswert?

@ Sebastian (Gast)

>zu senden. Das Senden der Daten über die SPI-Schnittstelle funktioniert
>aber nur wenn kein Funkmodul angeschlossen ist. Ich habe schon mehrere

Also funktioniert es nicht!

>Module und Controller ausprobiert, aber Das Problem tritt immer auf.
>Ohne RFM12 läuft das Programm auch nur an wenn ich längere Zeit den
>Resettaster gedrückt halte. Die Module sind folgendermaßen verbunden:

???

>Kann es vielleicht sein, dass das Eva-Board mir die uC schießt ? Im

Unwahrscheinlich, wenn du keinen Verdrahtungsfehler drauf hast.

>Datenblatt des Controllers steht, die max. negative Eingangsspannung an
>den PortPins dürfe nur -0,5V betragen. Durch den RS232 / TTL
>Pegelwandler liegen jedoch bis zu -0,7V an (Dieser besteht nämlich nur
>aus Widerstand un d einer Diode gegen Masse)

???
Dadurch entstehen keine negativen Spannungen.
Hast du Masse verbunden?

MfG
Falk

von Simon K. (simon) Benutzerseite


Lesenswert?

Falk Brunner wrote:
>>Datenblatt des Controllers steht, die max. negative Eingangsspannung an
>>den PortPins dürfe nur -0,5V betragen. Durch den RS232 / TTL
>>Pegelwandler liegen jedoch bis zu -0,7V an (Dieser besteht nämlich nur
>>aus Widerstand un d einer Diode gegen Masse)
>
> ???
> Dadurch entstehen keine negativen Spannungen.
> Hast du Masse verbunden?

Doch, wenn die RS232 TxD Leitung vom Computer auf -12V liegt.

Oh mann, wieso macht man denn sowas? Sowas ist natürlich völlig tabu. 
Benutze was anständiges ala MAX232.

von Gerd G. (elektrikser)


Lesenswert?

Für RS232 ist auf dem Funk-Evaluationsboard von Pollin schon ein Max232 
verbaut. Als ISP wird eine Transistorschaltung verbaut, die von RS232 
wandelt.

Was mich an dem Board stört, ist die Versorgung des RFM12. Warum glaubt 
man, dass ein Optokoppler den Strom für den RFM12 liefern kann?

Gruß Gerd

von Sebastian (Gast)


Lesenswert?

Danke für die Antworten,

ich werde mal versuchen die neg. Spannung am Eingang des uC mit einer 
Diode zu blocken. Müsste doch eigentlich funktionieren. Der High-Pegel 
wird halt dann um 0,7V gesenkt..

Aber warum läuft das Programm nur wenn der uC einen Reset bekommt ? Habt 
ihr euch mal das Programm angesehen ? Gibt es vielleicht einen 
Grundlegenden Fehler ?

von Sebastian (Gast)


Lesenswert?

Hallo,

Ich habe die SPI jetzt zum Laufen gebracht. Es gab wohl einen Fehler in 
der Initialisierung des Controlregisters.

Zum Testen versuche ich nun das Statusregister des RFM12-Moduls 
auszulesen. Leider  kann man aus dem Timingdiagramm im Programmers-Guide 
nicht erfahren mit welcher Frequenz der SCK-Eingang getaktet werden 
muss. Derzeit nutze ich den internen RC-Oszillator mit 1MHz und einen 
Taktteiler von 128, also ca 8kHz am SCK-Ausgang. Aber eigentlich dürfte 
es doch nach unten keine Grenzen geben, oder ?

von Sebastian (Gast)


Lesenswert?

Ich habe den Fehler gefunden: Der nSEL-Pin muss nach der Übertragung des 
Datenwortes kurz auf High gelegt werden damit die Informationen 
übernommen werden. Ich hätte mir das Datenblatt wohl genauer ansehen 
müssen. Apropos Datenblatt: Ich habe mich bisher immer mit dem 
Datenblatt fürs RFM12-Modul abgegeben, dabei ist das RF12-Datenblatt 
viel detaillierter, welches ich leider viel zu spät entdeckt habe.

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.