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.
sieht schon mal gut aus die lösung.
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
Lesezeichen