Forum: Mikrocontroller und Digitale Elektronik RFM12 an LPT


von Else Somwhere (Gast)


Angehängte Dateien:

Lesenswert?

Vor einigen Wochen gelang es mir das Funkmodul RFM12 am ATMega 8 zum 
funktionieren zu bringen. Nun hatte ich vor, das Modul direkt am 
Druckerport anzuschliessen. Hierzu verwende ich dasselbe Kabel mit dem 
ich in der Regel auch den ATMega 8 programmiere sowie diverse andere 
Hardware steuere die mit entsprechender Schnittstelle daherkommt. Ein 
Empfänger ist funktionsfähig aufgebaut. Ein Sender ebenfalls.

Es gelingt mir nicht, den Sender, der am Druckerport angeschlossen ist, 
dazu zu bringen, am Empfänger eine Aktion auszulösen. Ich habe den C++ 
Quellcode, mit dem das Funkmodul am ATMega funktioniert 1:1 in VBScript 
übernommen. Also ... schon klar was ich da jetzt meine ...

Ich möchte wissen:

- Reicht der Pegel am Druckerport oder RFM12 nicht?
- Hab ich einen Fehler im Quellcode den ich übersehe?
- Ist der Druckerport zu schnell?

Ich benutze SCK, SDO, SDI und nSEL. nRES liegt an GND, FSK/DATA/nFFS an 
VDD

Der ATMega 8 inklusive RFM12 werden mit 3,6 Volt Lithium Batterie 
betrieben und funktionieren wie bereits erwähnt. RFM12 am Druckerport 
mit 3,6 Volt funktioniert nicht.

von Jean P. (fubu1000)


Lesenswert?

Hi,
ohne deinen Code zu kennen.
Also nRES auf GND ist schon mal Müll. Lass den einfach offen.
Der LPT liefert 5Volt Signale, das ist bei 3,6Volt Versorgung auch schon 
mal sehr ungünstig, heisst durch Widerstände runterteilen oder 
Spannungswandler nehmen.

Gruß

von Else Somwhere (Gast)


Lesenswert?

umpf

von Else Somwhere (Gast)


Lesenswert?

Ich muss mich korrigieren, ich verschrieb mich. nRES lag nicht an GND 
sondern VDD. Nun ist nRES mit der Luft verbunden.

Ich habe 1K, 10K und 470 Ohm Widerstände benutzt. Ich habe die 
Widerstände zwischen die Anschlüsse gelegt (Zwischen LPT und RFM12) und 
die Anschlüsse mit Widerstand abwechselnd an GND und VDD angeschlossen.

RFM12 ist am ATMega8 OHNE zusätliche Bauteile angeschlossen. Abgesehen 
von der Status-LED.

Ich habe RFM12 auch mit 5 Volt betrieben ohne einen Unterschied 
feststellen zu können.

Starte ich das Script ist SDO während der Initialisierung ständig auf 0. 
Ab dem Zeitpunkt des Schreibens ständig auf 1.

Ich kann "ALLE" Bauteile mit 3,6 Volt am Druckerport betreiben. Nur 
RFM12 nicht.

Nebenbei sei angemerkt, dass dem Druckerport hier bereits 1 Volt reicht 
um sich angesprochen zu fühlen.

von Else Somwhere (Gast)


Lesenswert?

Ach Leute, bitte, was soll denn das? Ist das so abwegig was ich hier 
mache? Bin ich in der falschen Gruppe? Kann mir mal bitte jemand 
erklären was ich hier falsch mache? Habe ich die Frage falsch gestellt? 
Habe ich die falschen Worte benutzt? Ich weiss nicht wo ich den Fehler 
suchen soll und ihr lasst mich hier stehen? Ist das hier so üblich?

von Stephan H. (stephan-)


Lesenswert?

daran gedacht das es eine Adresse gibt, die negiert arbeitet ??
Ist ne berühmte Falle.

Schau mal hier, villeicht hift es Dir.
http://www.activevb.de/tutorials/tut_parallel/parallel.html

Wenn es geht, hätte ich gern ne PN. Danke

von Jens B. (sio2)


Lesenswert?

Nicht jeder Druckerport liefert volle 5V.

von Else Somwhere (Gast)


Lesenswert?

Nun, dass einige Anschlüsse am LPT negativ sind ist mir bekannt, dem 
genannten Tutorial jedoch nicht. Ausserdem scheint dieses Tutorial 
keinen Pin 10 also nACK zu kennen.

Ich wundere mich etwas. Wie bereits erwähnt funktionieren andere 
Bauteile einwandfrei. Beispielsweise MCP4261, DS75, 74HC(T)4021, 
24LC1025, ATMEGA8, 16 und andere ...

Dann mache ich es mir einfach, werde mich selber beschummeln und 
verwende nicht mein 5 poliges Programmierkabel. Stattdessen verwende ich 
einen anderen Anschluss am Druckerport. Mal gucken ob das etwas bringt.

Zieht SDO nicht auf masse? Was mache ich hier eigentlich seit Tagen???

Strippen rausrupf So, ab damit ...

von Else Somwhere (Gast)


Lesenswert?

Was ich weiss ist, dass ich nACK mit GND oder 5 Volt füttern kann und 
nACK entsprechend schaltet. Hängt nACK in der Luft hat nACK denselben 
Wert als würde nACK mit 5 Volt verbunden sein.

Zum ATMega 8 und anderen:

Der Reset-Pin eines ATMega8 ist ein ActiveLow-Pin. Verbinde ich diesen 
mit Masse wird Reset gefahren. Verbinde ich diesen mit 5 Volt wird 
der/die/das FlashROM abgefahren. Lasse ich den Draht in der Luft wird 
ebenfalls der FlashROM abgefahren. Das der Pin bei mir in der Luft hängt 
ist Normalzustand. Ansonsten ist dieser mit D ... verbunden, ich hab's 
jetzt nicht im Kopf und will nicht nachblättern.

Zum RFM12:

Hänge ich eine LED an SDO von RFM12 und an Masse, so blinkt diese bei 
Aktivität. Ich nehme an, annähernd VDD-Stärke.

Mein Problem ist jetzt folgendes:

Ich sehe die LED blinken. Der Pegel sollte also High und Low sein. Warum 
registriert nACK am Druckerport aber keine Veränderung? nACK liefert die 
ganze Zeit einen High Pegel. Also ist es so, dass SDO, wenn es nicht 
aktiv ist, nicht mit Masse gleichwertig ist. High ist 5 Volt aber low 
ist nichts. Das verhält sich so wie der Reset-Pin des Atmega 8. 
Allerdings in die andere Richtung gedacht. Was muss ich denn da 
verdrahten, dass nACK das als GND erkennt?

Wie ziehe ich den Pegel denn nun so, das nACK sich dafür interessiert?

von Stephan H. (stephan-)


Lesenswert?

>> In Visual-Basic ist es leider nicht vorgesehen, direkt wie in Q-Basic mit >> 
den Inp/Out Befehlen auf die Schnittstellen zuzugreifen.

Schau mal da steht was dazu..

http://www.progshop.com/versand/know-how/parallelport-programmierung.html

Hier auch noch was gefunden:

http://techref.massmind.org/techref/io/parallel/signals.htm

von Else Somwhere (Gast)


Lesenswert?

Hat da jetzt jemand eine Nachricht gelöscht auf die du (Stephan) 
geantwortet hast oder gilt das mir? Falls das mir galt, auf was genau 
willst du mich aufmerksam machen?

Ich nehme mir jetzt die Zeit einen anderen Pin, wie gestern erwähnt, zu 
benutzen. Mir will nicht bewusst werden, warum der nACK Pin seinen wert 
nicht ändert.

von Stephan H. (stephan-)


Lesenswert?

@Else,

jo war für Dich. Der 2. Link sagt noc einiges zum nACK.
sieht irgendwie nach ner offenen Leitung aus.
Leiterzüge mal gemssen ??

von Else Somwhere (Gast)


Lesenswert?

Mit ausmessen is hier nix. Ich habe kein Messgerät und kann es mir auch 
nicht leisten.

Ich krich hier gleich Schaum ...

von Stephan H. (stephan-)


Lesenswert?

@Else, bleib ruhig !!

nACK  Register: PtrClk  Richtung: In

Wird low wenn Nibbel gültig ist, wird high als Antwort wenn HostBusy 
high wird

Offene Eingänge werden bis auf wenige Ausnahmen als High interpretiert.
Das heist, wenn Du nAck auf Low legst, einliest und kein Low liest, dann 
ist irgendwo eine Unterbrechung.


Hier nochmal eine Deutsche Abhandlung dazu.

http://www.fbi.h-da.de/fileadmin/personal/j.wietzke/mein_ordner/GINF/Uebungen/Ginf_II/parallelport.pdf

von JojoS (Gast)


Lesenswert?

die ersten Tests sollten doch sein die Ausgänge (langsam) zu setzen und 
zu kontrollieren ob die richtigen Pegel ankommen. Dazu reicht ein 
billiges 5€ Messgerät oder eine LED mit Vorwiderstand. Und die Eingänge 
lassen sich genauso mit statischen Pegeln versorgen und über eine 
Testroutine einlesen. Wenn das ok ist dann bliebe die Frage ob die Pulse 
zu kurz sind, da wäre ein (Speicher) Oszi natürlich eine gute Hilfe, es 
geht aber auch mit der LowCost Lösung die Soundkarte zu nutzen (dazu 
gibts hier im Forum eine Menge Hinweise).

von Else Somwhere (Gast)


Lesenswert?

Wenn ich nACK händisch auf Masse lege ist da ja null.

Dass SDO etwas von sich gibt erkenne ich ja auch mit einer LED, die dann 
jede Sekunde blinkt, in der ich etwas senden will.

SDO zieht nACK scheinbar jedoch nicht genügend herunter. Ich habe da 
schon mit den verschiedensten Widerständen gegen Masse gearbeitet um 
genug zug zu erzeugen. Aber irgenwie will das nicht.

Hat nicht mal jemand lust das nachzubauen um das bestätigt zu sehen? Ich 
verwende das billigste ISP Kabel das es gibt: SUBD25 an 5 polig Strippe. 
Ich habe da sogar schon mit Transistoren gearbeitet.

Ich stellte heute morgen die Funktion RF12_Trans in mein Script etwas 
um. Ich weis nicht was mich da geritten hat die Clock auf high zu setzen 
nachdem ich den Eingang abfrage. Mir ist bekannt, dass ich den Ausgang 
einstellen muss, Clock aktiviere, Eingang lese und Clock wieder 
deaktiviere (Do, CLK 1, DI, CLK 0). CPOL und CPHA kenne ich, sollte 
beides 0 sein wenn ich das richtig sehe.

Somit wäre das was ich ATMega 8 gemacht habe auch nicht in der richtigen 
Reihenfolge, funktionierte aber. (DO, DI, CLK 0/1)

Zwischendurch schien sich da am Pegel auch etwas zu verändern, Aber das 
war dann eher rein zufällig wie sich herausstellt, nichts sich 
wiederholendes.

Ich kann mir nicht vorstellen, dass das Script zu schnell ist. Mich 
überkommt langsam das Gefühl, dass ich ganz bestimmt nen richtig dummen 
Fehler mache den ich nicht sehen kann/will.

von Else Somwhere (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mir die ganze Nacht über auch noch die Mühe gemacht, mit einem 
ATTiny2313 eine Brücke zu bauen (siehe Anhang), in der Hoffnung, das 
Verhalten erzeugen zu können wie beim ATMega8, der mit den Modulen 
funktioniert. Ich hoffte also damit das Problem überwinden zu können. 
Dem war nicht so.

Ich glaub, ich sollte das Programm des ATMega8 auf den ATTIny bringen 
und dem eine SPI Schnittstelle verpassen das erst alles so sammel wie 
ich es dem RFM12 geben will. Also erst volle 16 Bit rein, und dann volle 
16 Bit raus. Also 32 Bit SPI.

Ach ist diese Bastelei manchmal kompliziert.

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.