RC5 mit OCR1B senden

AVRuser

Neues Mitglied
20. Apr. 2011
217
0
0
Niedersachsen
Sprachen
  1. BascomAVR
  2. ANSI C
Hallo Leute,

Ich will mit einem Atmega 48 und einer sfh484 welche über einen BC547
und einen 20Ohm Widerstand geschaltet wird ein rc5 Signal senden.
Das ganze soll mit Bascom laufen.
Der SENDRC5-befehl funktioniert jedoch nur mit ocr1a, der bei
mir nicht mehr frei ist.
Nun wüsste ich gerne ob und wie man den (Timer)pin umstellen kann:confused:

Auch code beispiele welchen nicht diesen Befehl verwenden weren sehr hilfreich.

Danke im Vorraus:

AVRuser
 
Hallo AVRuser!

Willkommen im AVR-PRaxis Forum! :ciao:

Wenn du die fertigen Routinen von BASCOM verwenden möchtest, dann kannst du den Timer (und damit den Pin) nicht umstellen.
Um das 36kHz Signal zu erzeugen benötigst du einen 16bit Timer..... und damit den Timer1.

Wie du ja selber geschrieben hast, verwendest du einen Mega48......
Timer0 und Timer2 sind beim Mega48 "leider" nur 8bit breit!

Der Mega48 hat also nur einen 16bit-Timer und das ist Timer1. Daher musst du auch den Pin OC1A verwenden, wenn du RC5 senden möchtest.


Gruß,
Cassio
 
Erstmal danke für die schnelle Antwort!

Leider habe ich bereits eine Platine für die Oben genannte Schaltung
geätzt und bestückt, auf der die die IR-LED an ocr1b angeschlossen ist.
ocr1a wird berreits für PWM verwendet (Hintergrundbeleuchtung LCD).
So wie es aussieht kann ich den SENDRC5-befehl also nicht verwenden,
ich wäre daher sehr dankbar wenn mir jemand eine selbstgeschriebende
Senderoutine posten könnte.

Gruß,
AVRuser
 
Hallo AVRuser,
wenn du dich noch nicht wirklich gut mit Programmierung und µCs auskennst würde ich dir empfehlen, lieber die Pins extern zu wechseln. Die Senderoutine selber zu schreiben ist sicherlich wesentlich aufwändiger, als mal eben eine kleine Brücke auf die Platine zu machen. Sieht nachher auch kein Mensch und ist in 5 Minuten fertig.

HBA
 
Hallo AVRuser!

Wie das im Leben immer so ist....
Wenn man sich verrannt hat, dann muss man eben zum Anfang zurück und noch mal neu anfangen! :cool:

Mein Rat wäre daher....
Jetzige Platine an die Seite legen und noch mal eine Neue erstellen, bei der du dir vorher über das Programm ein paar Gedanken und ggf. auch ein paar Hardwaretests machst.
Wenn dann alles funktioniert, kannst du deine Platine erstellen.

Denn, nach dem Motto arbeiten....
Ich habe ziemlichen Mist gebaut! Kann mir das jetzt mal Jemand gerade biegen?
...ist niemals eine Lösung! :dirol:


Wenn dir das allerdings alles wiederstrebt, dann solltest du den guten und freundlichen Rat von HBA befolgen und per Litze einen anderen Pin für PWM verwenden.


Gruß,
Cassio
 
Hallo Cassio/HinterBlauenAugen

Ich werd dann wohl ne neue Platine ätzen.

Eigentlich wollt ich das Senden aber selber hinkriegen,
habe es auch schon Versucht, aber irgentwie bekomm ich das mit den
Timing nicht genau genug hin. Deswegen hatte ich auf eine Anregung
wie man die Senderoutine gestallten könnte gehofft.

Gruß,
AVRuser
 
Eigentlich wollt ich das Senden aber selber hinkriegen,
habe es auch schon Versucht, aber irgentwie bekomm ich das mit den
Timing nicht genau genug hin.
Finde ich gut, ist aber nicht trivial.
Was soll dein µC denn sonst noch tun, oder arbeitet der nur als Sender?
Wie sieht dein bisheriger Code aus?

HBA
 
Der µC muss eigentlich nur einen Taster auslesen und dann
wenn Taster=1 (0) ein entsprechendes Signal senden.
wenn du dich noch nicht wirklich gut mit Programmierung und µCs auskennst

Ich habe eigentlich nur noch mit GLCDs und RC5 probs.

...das 36kHz Signal zu erzeugen benötigst du einen 16bit Timer.....

heisst das ich kann z.B. den Timer mit 36kHz laufen lassen und
muss dann bei jedem Durchlauf ein Bit senden, bis alle 14bit gesendet sind?

Gruß,
AVRuser
 
Die Erzeugung der 36KHz Trägerfrequenz lässt du am besten durch die HW machen. Dass ist sonst zu schnell.
Dafür nutzt du einen Timer im CTC Mode mit ca. 36KHz.
Meiner Meinung nach geht dafür auch ein 8-bit Timer. Kommt auch noch etwas auf deine Taktfrequenz an.
Bei 16MHz geht z.B. Prescale = 8 und OCR = 27 macht dies 71,4KHz zum Toggeln des Ausgangs, also 35,7KHz Frequenz. Die Frequenz muss nur ungefähr im Bereich liegen.
Für die Bits schaltest du dann das Toggeln um in konstantes Set. Am Ausgang siehst du dann kein Signal mehr, sondern nur High Pegel.
Beachten musst du noch, dass RC5 ein Manchester Code ist, also in jedem der 14 Bits noch mal der Pegel umgeschaltet wird. Siehe auch hier http://www.sbprojects.com/knowledge/ir/ir.htm für eine gute Erklärung.
Wenn der µC sonst nichts machen muss, kannst du Bits einfach mit Waitms ... realisieren.

HBA
 
@ Hinter Blauen... Danke für die Beschreibung und den Link...:)

Dann hätte ich noch 3 Fragen:
1. Wie lange muss ein Bit dauern?
2. Wie groß darf die Zeitliche abweichung maximal sein?
3. und ist es normal das die SFH484 beim senden sichtbar
rötlich glimmt?:confused:

Gruß,
AVRuser
 
1. Wie lange muss ein Bit dauern? 2x889µs, an - aus für 0, aus - an für eine 1
2. Wie groß darf die Zeitliche abweichung maximal sein? Keine Ahnung, kannst du aber ziemlich genau hinkriegen
3. und ist es normal das die SFH484 beim senden sichtbar
rötlich glimmt?:confused: Eher nicht. ich kenne jedenfalls keine, die glimmt. Steht auch nichts davon im Datenblatt.
Vielleicht kannst du ja im IR Bereich sehen :adore:

Wie sieht denn deine Schaltung aus?

HBA
 
Dann muss ich ja sozusagen mit einer null (1.bit=0_1) anfangen zu senden,
kommt der empfänger da nicht durcheinander?

Gruß,
AVRuser
 
Hallo,

Danke für die Hilfe, werde es sobald ich Zeit habe ausprobieren...

Gruß,
AVRuser
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)