Probleme mit SPI und RFM12

Gast #764096
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
Angehängte Dateien:
#764117
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
Persönliche Seite #764156
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.
#764226
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
Gast #764352
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 ?
Gast #766091
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 ?
Gast #766266
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.

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