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.
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ß
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.
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?
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 ...
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?
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.
@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
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).
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.
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.