ein kerko mit 4,7µF wäre dann schon eher ein kleiner Böller...
Jetzt weiß ich auch was da die ganze Zeit an meinem ferngesteuerten Hubschrauber hängt: Ein IR-Empfänger.
Was bedeutet denn das?:
"the epoxy package is designed as IR filter."
ein kerko mit 4,7µF wäre dann schon eher ein kleiner Böller...
Jetzt weiß ich auch was da die ganze Zeit an meinem ferngesteuerten Hubschrauber hängt: Ein IR-Empfänger.
Was bedeutet denn das?:
"the epoxy package is designed as IR filter."
hab aus einem definitiv funktionierenden Code alles rausgelöscht, was verwirren könnte.
Übrig geblieben ist das hier: NEC.txt
Irgenwie bekomme ich das nicht zum Laufen. Habe ein myAVR-Board mit LCD. Da liegen die D-Ports am LCD an. Kann ich denn einfach so den Eingang des TSOP auf einen anderen Port (z.B. B0) legen? Habe noch nicht so viel Erfahrung mit der Programmierung in Bascom.
Nino
Hallo
Ich glaube zum Empfang kannst Du irgendeinen Port als Eingang definieren. Ich hab bei meinem Mega8 z.B. den TSOP am Pinb.0 dranhängen.
(Bascom fordert nur die Sendediode am OC1A anzuhängen.)
Viele Grüße
Ja, versucht hatte ich es. Ich weiß nur nicht, wo ich noch einen Fehler suchen soll. Es gibt ja im Forum verschiedene Beispiele. Keines liefert so richtig verlässliche Ergebnisse. Das letzte hier bring gar keinen Code zurück... Ich werd mal weiter suchen.
Hallo
Vielleicht beschreibst Du mal, welchen Prozessor Du verwendest, was für einen TSOP Du ( auch wie) angeschlossen hast usw.
Poste doch bitte auch mal Deinen Bascom-Code.
Viele Grüße
Im myAVR-Board steckt ein ATmega8. Das LC-Display ist über Port D angeschlossen. Ich nutze den TSOP1736 über einen B-Port.
Ich habe zumindest Teilerfolge zu verbuchen. Mit einer Universal-FB und RC5-Programm funktioniert es jetzt perfekt. Damit ist klar, dass es mit B-Port prinzipiell funktioniert. Jetzt muss ich mich nochmal um die NEC-FB aus dem Shop kümmern. Müsste dann ja auch funktionieren, wenn der Quellcode stimmt. Ich melde mich, sobald ich was Neues habe.
Nino
mein Code kann natürlich nur funktionieren, wenn man den IR-Empfänger an einen Interrupteingang hängt und dementsprechend das Programm ändert. Die Abfrageroutine wird nämlich erst bei fallender Flanke (Config Int0 = Falling) aufgerufen. "Verlässliche Ergebnisse" kannst du erzielen, wenn du den Empfänger an PD2 hängst und das oben verlinkte Programm verwendest.
Scheinbar lassen sich auch andere Eingange als seriell Interrupt- gesteuert konfigurieren...?
Wie siehts denn mit deiner Fusebitkonfiguration aus?? Bei angeschlossenem 16 MHz- Takt läuft bei mir diese Konfig. Oder das Programm anpassen..
mfG
Hab hier mal einen C-Code für diese FB geklopft...
Das ding funktioniert mit einem TSOP1838 an einem Interrupt Pin eines Atmega...
Welcher Interrupt Pin genutzt wird, kann in der Zeile:
EIMSK |= (1<<INT7); //Enable External Interrupt 7
im rc.c modifiziert werden...
Funktionieren tut diese library nur mit einem 16Mhz Quarz, wer eine andere Frequenz benötigt muss es sich anpassen...
Moin!
Nach langer Zeit habe ich mein Bascom mal wieder rausgeholt, um für nen Kumpel n kleines "projekt" zu realisieren. Er würde gern 'nen Haufen LEDs mit ner FB steuern können. Es handelt sich um 16 LEDs, die er gern individuell in der Helligkeit regeln möchte.
Hab mir gedacht, dass ich den TLC5940 nehmen kann, für den ich schon mal Code erstellt habe. Zusätzlich dann die FB aus'm Shop, die ich auch schonmal benutzt habe.
Das Problem ist, dass ich zu blöde bin, den Timer korrekt zu konfigurieren. Der TLC nutzt den Timer1, der mit annähernd 245Hz tickt und die FB nutzt den Timer0, der mit 10kHz tickert. Leider funzt aber immer nur einer der beiden, da der AVR644 das nicht wuppt. Daher die Idee, den Kram der FB mit im TLC-Timer abhandeln zu lassen.
Nur genau dafür benötige ich die korrekten Werte, damit die FB-Signale weiterhin sauber decodiert werden. Ggf. müssen auch die Werte in der IR-Abfrage angepasst werden (für X).
Anbei mal der Code, vielleicht kann ja einer der Bascom-Götter das mal eben schick machen und den FB-Code in den TLC-Kram integrieren
Danke und Gruß
Jan
Code für FB (gekürzt auf's Wesentliche):
Config Pind.2 = Input
Irpin Alias Pind.2
Dim Signal As Byte 'IR-Signal
Dim Signal1 As Word
Dim Signalspeicher As Byte 'IR-Signal letzte Abfrage
Dim X As Byte
Enable Interrupts
Enable Int0
Config Int0 = Falling
On Int0 Irabfrage
Enable Timer0
Config Timer0 = Timer , Prescale = 8
On Timer0 Timer_irq
Const Timervorgabe = 56
...
'##IRabfrage###########################################################################################
Timer_irq:
Timer0 = Timervorgabe
Incr X
Return
Irabfrage:
If X > 30 Then
Signal1 = 0
Elseif X > 16 Then
Shift Signal1 , Right
Signal1.15 = 1
Elseif X < 16 Then
Shift Signal1 , Right
End If
X = High(signal1)
X = Not X
If X = Low(signal1) Then
Signal = Low(signal1)
End If
X = 0
'Gifr = Gifr Or &H40
Return
Alles anzeigen
Code für TLC5940:
On Timer1 Pwm
Config Timer1 = Timer , Prescale = 1
Enable Timer1
Enable Interrupts
...
'###############################
'##### #######
'##### PWM-Timer #######
'##### Interrupt #######
'##### #######
'###############################
Pwm:
For Led = Channels To 1 Step -1
Gsout = Channel(led)
Rotate Gsout , Right , 12
Shiftout Si , Sclk , Gsout , 0 , 12
Next
Set Xlat
Reset Xlat
'Intcurrentstar = Rnd(14) + 1
$asm
Ldi R17,16
Outer_loop:
LDI R16,0
Inner_loop:
SBI portA,6
NOP
CBI PortA,6
DEC R16
BRNE INNER_LOOP
DEC R17
BRNE OUTER_LOOP
$end Asm
Set Blank
Reset Blank
Return
Alles anzeigen
Dein Code funktioniert super, habs an einem Atmega162 mit einem TSOP1738 zum laufen gebracht. Unter welcher Lizenz steht denn dein Code? Ich will ihn nicht kommerziell nutzen, aber vielleicht ja mit meinen Quellen veröffentlichen.
Alles anzeigenHab hier mal einen C-Code für diese FB geklopft...
Das ding funktioniert mit einem TSOP1838 an einem Interrupt Pin eines Atmega...
Welcher Interrupt Pin genutzt wird, kann in der Zeile:
EIMSK |= (1<<INT7); //Enable External Interrupt 7
im rc.c modifiziert werden...
Funktionieren tut diese library nur mit einem 16Mhz Quarz, wer eine andere Frequenz benötigt muss es sich anpassen...