sieht schon mal gut aus die lösung.ch nehme mal an, dass Du mit "Ausgang" das Output-Compare-Register meinst und PWM im "CTC"-Modus laufen lassen möchtest.
Für 36 KHz muss der Output-Compare-Pin alle 1/(2*36000) Sekunden getoggelt werden. Um zu wissen wie weit der Zähler in dieser Zeit zählt, musst Du nur schauen, wie oft eine Takt-Periode in diesen Zeitraum passt:
(1/72000) / (1/8000000) oder 80000000 / 72000 = 111,111... mal.
Die Formel für "andersrum" heißt: PWM-Frequenz = Quarzfrequenz / (2 * OCR). In diesem Fall also 8000000 / 222 = 36036,036 Hz. Für exakte 36 KHz bräuchtest Du ein Quarz, dessen Frequenz ein ganzzahliges Vielfaches von 36kHz ist.
nun möchte ich das signal als ausgang nehmen für eine ir-diode bzw für das modluierte signal für den tsop mit 36khz.
beim rc5 signal ist eine 1 889µs den port auf 0 und 889µs den port mit 36khz toggeln. bei einer 0 889µs mit 36khz toggeln und 889 µs port auf 0.
vorher noch 2 startbits auf 1.
wie läuft das ganze jetzt in Bascom ab, dieses rc5-signal von hand?
bei mir sendet die ir-diode nicht, bzw der tsop1736 emfängt kein signal.
wenn ich die demo von Bascom nehme, läuft es, also die verbindung stimmt.
Code:$regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 64 Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Capture Edge = Rising , Clear Timer = 1 Declare Sub Rc5out(adre As Byte , Command As Byte) Declare Sub Bitlow() Declare Sub Bithigh() Dim Adre As Byte Dim Command As Byte Dim Togglebit As Byte Dim I As Byte Config Pind.5 = Output Enable Interrupts start timer1 Compare1a = 110 Adre = 0 Command = 19 Togglebit = 0 Waitms 255 Do Call Rc5out(adre , Command) Waitms 255 Loop End Sub Rc5out(adre As Byte , Command As Byte) Call Bithigh() Call Bithigh() If Togglebit = 1 Then Call Bithigh() Else Call Bitlow() End If For I = 0 To 4 If Adre.4 = 1 Then Call Bithigh() Else Call Bitlow() End If Shift Adre , Left , 1 Next For I = 0 To 5 If Command.5 = 1 Then Call Bithigh() Else Call Bitlow() End If Shift Command , Left , 1 Next End Sub Sub Bitlow() Ddrd.5 = 1 Waitus 889 Ddrd.5 = 0 Waitus 889 End Sub Sub Bithigh() Ddrd.5 = 0 Waitus 889 Ddrd.5 = 1 Waitus 889 End Sub







Zitieren

Lesezeichen