PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rc5 mit 4Mhz



Spurius
07.11.2004, 17:37
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

Michael
07.11.2004, 18:11
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 ;)

harryup
07.11.2004, 18:14
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

Spurius
07.11.2004, 18:24
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?

Michael
07.11.2004, 18:27
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, 20: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

Spurius
08.11.2004, 17:07
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?

Spurius
08.11.2004, 17:11
Das oben stimmt nicht ganz, da bei der Messung das ISP angeschlossen war. Sonst liegt die Frequenz bei 0,0xx khz.

Michael
08.11.2004, 17:25
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

Spurius
08.11.2004, 17:36
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, 17: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

Spurius
08.11.2004, 18:37
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.

Spurius
09.11.2004, 14:08
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

09.11.2004, 14:25
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

Spurius
09.11.2004, 15:33
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?

Spurius
16.11.2004, 12:01
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?