Archiv verlassen und diese Seite im Standarddesign anzeigen : rc5 mit 4Mhz
Hallo,
ich versuche mit folgendem Code ein RC5 Signal herzustellen, was ja die Frequenz von 36khz hat. Dazu verwende ich einen ATMega8, der von einem Quarzoszillator mit 4Mhz getaktet wird. Der Takt soll an Pb.3 abgegriffen werden, da Timer1 verwendet wird.
$regfile = "M8def.dat"
$crystal = 4000000
Do
Waitms 1000 * 60 * 5
Rc5send 12 , 0 , 0
Loop
End
Leider kommen dabei irgendwelche Frequenzen raus, aber nicht 36khz. In der Bascom Hilfe wird ein Controller verwendet, der ebenfalls mit 4Mhz getaktet ist, es muss also irgendwie gehen.
Gruß
Spurius
Hallo Spurius,
heißt es nicht:
Rc5send Togbit , Address , Command?
das Togbit kann normal nicht 12 sein. Höchstens 1 oder eben 0. Ein "Bit" halt.
Gruß, Michael
Edit: sehe gerade:
make it 0 or 32 to set the toggle bit
also nicht 12 ;)
hi,
im hilfefile von bascom steht auch, 'make togglebit 0 or 32' du nimmst 12.
und dann: adresse 0, command 0, macht das sinn?
was macht der gruselbefehl ' waitms 1000 * 60 * 5?
soll das teil wirklich 1000 * 60 * 5 millisek. warten, das wären doch immerhin satte 5 minuten.
probier mal:
do
waitms 500 : rc5send 0, 0, 12
loop
gruss, harry
Also, jetzt verwende ich das:
$regfile = "M8def.dat"
$crystal = 4000000
Do
Waitms 500
Rc5send 0 , 0 , 12
Loop
End
Aber 36khz kommen imer noch nicht raus. Wird so ein Dauersignal erzeugt? Und wie muss ich die Frequenz messen? Ein kabel an den Pin und das andere?
Hallo Spurius,
Aber 36khz kommen imer noch nicht raus.
doch, aber moduliert mit den typischen RC5-Code.
Wird so ein Dauersignal erzeugt?
nein, du hast ja eine Pause eingebaut.
Ein kabel an den Pin und das andere?
hmmm, Stromkreis schließen?
Womit mißt du denn?
Gruß, Michael
pebisoft
07.11.2004, 21:34
hallo, zum senden wir die ir-diode bei bascom an pin oc1a angeschlossen.
kann bei verschiedenen avrs an verschiedenen pins liegen (siehe datenblatt). den versorgungspin schliesst du an einen port.
"config portd=output" und "pind.0=1" an diesen port schliesst du zb den anderen pol der ir diode. für dei stromversorgung ( der pinstrom reicht aus zum senden). dann nimmst du das beispiel programm von bascom.
der takt für die sendediode wird vom bascom automatisch erzeugt.
brauchst dich nicht drum kümmern und nimm die lange warteschleife aus dein program, die hat nicht mit der takterzeugung zu tun.
mfg pebisoft
Hallo,
also die Frequenz messe ich mit einem Voltcraft M-3850. Wenn ich ein Kabel an den Pin und das andere an
+ : ~ 170khz
- : ~ >300khz
Ich habe die Verzögerung weggelassen.
Eigentlich müsste das doch so funktionieren oder?
Das oben stimmt nicht ganz, da bei der Messung das ISP angeschlossen war. Sonst liegt die Frequenz bei 0,0xx khz.
Hallo Spurius,
hmmm, wie soll ich dir das erklären? Weißt du überhaupt, wie das funktioniert, mit der IR-Übertragung? Ein 36kHz-Träger wird mit dem RC5-Code moduliert. Da kannst du nicht so einfach mit dem Multimeter die Frequenz messen. Ein Oszilloskop wäre hier ganz hilfreich.
Gruß, Michael
Hallo,
ne so ganz genau weiss ich das nicht. Mir geht es ja auch erstmal nicht um die RC5-Übertragung sondern um die Erzeugung von 36khz. Ist das überhaupt mit meinen Hardwarevorraussetzungen möglich?
Das Messgerät müsste denk ich schon im Stande sein die Frequenzen zu messen, da es eine Einstellung dafür hat. Halbwegs realistische Werte bekomme ich, wenn ich Plus UND Minus Kabel an den Pin halte, das liegt dann so bei 27khz?-31khz?.
Also wär primär erstmal die Frage zu klären, ob ich mit einem ATMega8 mit 4Mhz überhaupt 36khz erzeugen kann.
Trotzdem Danke für die Hilfe bisher!
Gruß
Spurius
Dino Dieter
08.11.2004, 18:47
Hallo
Wie Michael schon sagte, wird dein Messgerät nur "Müll" anzeigen.
Schau dir hier mal das RC5 Protokoll an. Es liegen ja nur max 1,778 ms die
36 KHz an. Ohne Ozi wird das leider nichts werden, mit dem messen.
Die 36 KHz zu erzeugen stellt kein Problem dar, fur den AVR. Aber Bascom kriegt das schon gut hin, mit der 36 KHz Frequenz.
Wieso willst du die eigentlich messen ?
MFG
Dieter
Hallo,
es geht mir nicht sosehr um das RC5 sondern um ein konstantes Dauersignal von 36khz. Damit will ich eine Infrarotdiode betreiben und diese für eine Lichtschranke einsetzten.
Das Messgerät kann Frequenzen bis 40 Mhz messen, zumindest ein vergleichbares Modell bei Conrad, das das ich hier hab ist ein ziemlich ähnliches Modell, was ich aber bei COnrad nicht mehr finde.
Ich hab jetzt folgenden Code:
$regfile = "m8def.dat"
$crystal = 4000000
Ddrb.0 = 1
On Timer0 Introutine
Config Timer0 = Timer , Prescale = 1
Enable Timer0
Enable Interrupts
Timer0 = 156
Do
Loop
Introutine:
Toggle Portb.0
Return
Eigentlich müsste da als Frequenz doch 20khz sein oder?
4000khz / (256-156) / 2 = 20khz
Bei meiner Messung kommen aber knappe 14khz raus. Es muss doch irgendwie möglich sein, gezielt Frequenzen zu erzeugen die nicht nur bei ein paar Hz liegen.
Ich hoffe ich könnt mir da weiterhelfen.
Gruß
Spurius
Hallo
Dein fehler liegt darin, das du den Timer0 in der INT. Routine nicht wieder neu
lädst mit 156. Damit ist der Timer0 = 0 und der nächste Int kommt erst nach 256 Takten.
Also
Introutine:
Timer0 = 156
Toggle Portb.0
Return
MFG
Dieter
Also irgendwie misst das Messgerät unterschiedlich jenachdem ob man es bewegt, ob es in Ruhe ist etc. ...
Was gibts denn noch so für Möglichkeiten eine Frequenz genau zu messen? Oszilloskope? Und welche sind da für einen Schüler erschwinglich?
Hallo,
ich werde demnächst bei Reichelt bestellen und würde davor gern wissen, ob es mit einer höheren Taktfrequenz einfacher ist Frequenzen zu erzeugen. Im Moment läuft der µC mit 4MHz, kann man mit dieser Kombination überhaupt 36khz erzeugen? Oder braucht man da nen anderen Quarz oder COntroller?
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.