Infra távirányító
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
Sziasztok!
Az http://avrhelp.mcselec.com/index.html oldalon, az GETRC5 parancs leírásánál olvasható példaprogramot szerettem volna kpróbálni. ATmega48 -am van, így átírtam a $regfile = "m48def.dat" és $crystal = 8000000 paramétereket, mást nem módosítottam.
Azt a kapcsolást raktam össze próbapanelen, amit ott le volt rajzolva, csak SFH506 helyett ezt használtam;
http://www.datasheetcatalog.org/datashe ... FH5110.pdf , ami szerintem elvileg ugyanaz, csak OSRAM gyártmány.
A GETRC5 parancs azonban sosem ad vissza semmitt csak 255-ös értékeket. Kipróbáltam, hogy 10 ms -onként egyszerűen elolvastam a PIND.3 értékét, és kiírtam soroso porton. Ebben az esetben adott életjeleket az infra érzékelő, ahogy nyomkodtam a távirányítót, jöttek 0-ák és egyek vegyesen. Ezzel így semmit nem lehet kezdeni, eléggé véletlenszerűen jöttek az adatok, nyilván időzítés, stb. kellene az értelmezéshez, de amit itt a fórumban olvastam erről az nekem még kicsit sok volt, inkább csak azért csináltam, hogy lássam, a hardver működik-e valamilyen szinten?
Mit javasolnátok, hogyan próbáljam megoldani? Szerezzek valahonann egy TSOP1736-ot? Vagy ennek is mennie kellene?
Egy SAMSUNG tv távirányítóval tudtam kipróbálni, ahogy neten láttam a SAMSUNG az RC5 szabványt használja, de nem vagyok benne biztos. Próbálta már valaki SAMSUNG távirányítóval a GETRC5 parancsot?
Köszi előre is!
Az http://avrhelp.mcselec.com/index.html oldalon, az GETRC5 parancs leírásánál olvasható példaprogramot szerettem volna kpróbálni. ATmega48 -am van, így átírtam a $regfile = "m48def.dat" és $crystal = 8000000 paramétereket, mást nem módosítottam.
Azt a kapcsolást raktam össze próbapanelen, amit ott le volt rajzolva, csak SFH506 helyett ezt használtam;
http://www.datasheetcatalog.org/datashe ... FH5110.pdf , ami szerintem elvileg ugyanaz, csak OSRAM gyártmány.
A GETRC5 parancs azonban sosem ad vissza semmitt csak 255-ös értékeket. Kipróbáltam, hogy 10 ms -onként egyszerűen elolvastam a PIND.3 értékét, és kiírtam soroso porton. Ebben az esetben adott életjeleket az infra érzékelő, ahogy nyomkodtam a távirányítót, jöttek 0-ák és egyek vegyesen. Ezzel így semmit nem lehet kezdeni, eléggé véletlenszerűen jöttek az adatok, nyilván időzítés, stb. kellene az értelmezéshez, de amit itt a fórumban olvastam erről az nekem még kicsit sok volt, inkább csak azért csináltam, hogy lássam, a hardver működik-e valamilyen szinten?
Mit javasolnátok, hogyan próbáljam megoldani? Szerezzek valahonann egy TSOP1736-ot? Vagy ennek is mennie kellene?
Egy SAMSUNG tv távirányítóval tudtam kipróbálni, ahogy neten láttam a SAMSUNG az RC5 szabványt használja, de nem vagyok benne biztos. Próbálta már valaki SAMSUNG távirányítóval a GETRC5 parancsot?
Köszi előre is!
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
8 MHz-re van állítva, ez biztos. +/-10% már okozhat zavart? Külső oszcillátorok pontosabbak, érdemes azzal próbálkozni?Robert írta:A vételi hiba oka lehet hogy a 8 MHz belső RC 4...16 MHz közt bárhol lehet (alapban 8 MHz+/- 10%).
Felhúzóellenállás? 100Ohm+10uF kondi a tápszűrésen a TSOP-n?
10 uF kondi megvan, de biztos 100 Ohm ellenállás kell?
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
Mégegyszer átnéztem, szerintem a rajz szerint csináltam.kapu48 írta:A 100ohm soros, Áram korlátozó ellenállás a 10u szűrés elé kel.
Felhúzónak 10Kohm kel.
Ahogy a fent idézett *.pdf Figure 2 is ábrázolja.
Próbáltad az Addres-t is kiíratni?
Mert az is változó lehet
Vagyis az: "If Address = 0 Then" feltételt kihagyni a Print előtt!
Az "If Address = 0 Then" -t már korábban is kihagytam, de csak 255,255 -ök jönnek.
Továbbra is az van, hogy GETRC5 semmit nem csinál, PORTD.2-t olvasgatva látszik, hogy nyomkodom a távirányítót.
Egyébként levettem az órajelet 1,0 MHz-re, rámértem, az pontosan 1,00 MHz volt. De 1 MHz-en sem működött a GETRC5.
Visszatettem 8 MHz-re, megmértem az órajelet a CLKO lábon. 8,2 MHz. 0,2 Mhz eltéréstől már borulhat?
Nincs ötletem, hogyan tovább
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
GETRC5-öt feladtam, Philips távirányító nincs elérhető.Robert írta:A távirányítód nem RC5-t ad ki
Hát.....
RC5 : Phillips lenne az ideális....
Attól tartok kicsit ovis ötlet, de csináltam egy 36 kHz-es timert. Nézegetem az adott portot, ahol az infra érzékelő van, ha 0-ra vált (távirányítót nyomkodom), elindítom a timert, és az első 128 megszakításkor a porton levő értéket eltárolom, majd 128 érték beolvasása után megállítom a timert, és kiírom a 128 db 0/1-es értéket. Azt gondoltam, hogy esetleg ugyanazt a 0/1 sorozatot fogom kapni ha ugyanazt a gombot nyomom. Hát... majdnem így is lett nagyon hasonló 0/1 sorozatokat kapok, de mindíg van 4-5 helyen eltérés a 128-ból.
Ez nagyon suta ötlet, erre nem pazaroljak több időt?
Kisméretű, lapos távirányt akartam életrekelteni (vevője megvolt a készülékből), nagyon sok helyen használják ezeket (HIFI torony, LEDvezérlő stb.), csak a felső fólia változik. Na, persze nem RC5. Kínomban írtam egy kis prg-ot, hátha Neked is segít kideríteni, mivel is állsz szemben:
Ez a sorosra kiküldi binárisban a jött adatsort, persze ez csak teszt!
A tömbbe azt teszi el, hogy a Timer mennyin állt, amikor változott a bejövő jel, utána ebből egy fix érték segítségével számítja ki, hogy 1 v. 0 lehet a bit:
Hanyszor = A(kict) / 62
(itt tudod változtatni, hogy milyen hosszú jelt vegyen 1-0-nak, nálam 64 volt a határ, ezért lett 62 beírva, hogy tuttira benne legyen).
Nagyon vizsgálni nem tudtam, mert nincs tároló szkópom.
JAni
08:14
Kód: Egész kijelölése
'Kis vacak tßvirßny kˇdok, 13byte
'Standby:
'00,55,55,44,51,11,11,45,55,45,11,11,11
'Mute:
'00,55,55,44,51,11,11,55,55,11,11,11,11
'SUB+:
'00,55,55,44,51,11,11,11,55,54,51,11,11
'SUB-:
'00,55,55,44,51,11,11,14,45,55,15,11,11
'VOL+:
'00,55,55,44,51,11,11,54,55,44,45,11,11
'VOL-:
'00,55,55,44,51,11,11,45,15,51,45,11,11
$regfile = "m128def.dat"
$crystal = 8000000
'$baud9600
' 'configure the first UART for RS232
Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Porte = Input
Config Timer1 = Timer , Prescale = 64
Stop Timer1
On Timer1 Tim1ovf
Enable Ovf1
Config Int6 = Change
On Int6 Impulzus
Dim A(200) As Word
Dim Ct As Byte
Dim Kiir As Byte
Dim Elso As Byte
Dim Kict As Byte
Dim Hanyszor As Word
Dim Kiszint As Bit
Dim Mennyi As Byte
Enable Int6
Enable Interrupts
Elso = 1
Print "Start"
Do
If Kiir = 1 Then
Kiir = 0
Kiszint = 0
For Kict = 1 To 100
If A(kict) = 0 Then
Goto Nnkict
End If
Hanyszor = A(kict) / 62
For Mennyi = 1 To Hanyszor
If Kiszint = 1 Then
Print "1";
Else
Print "0";
End If
Next Mennyi
Toggle Kiszint
Nnkict:
Next Kict
Print
For Kict = 1 To 200 'T÷mb t÷rlÚse
A(kict) = 0
Next Kict
End If
Loop
Impulzus:
If Elso = 1 Then
Elso = 0
Timer1 = 0
Start Timer1
Ct = 0
Goto Retike
End If
A(ct) = Timer1
Timer1 = 0
Incr Ct
Retike:
Return
Tim1ovf: 'Timer 1 ßtfordult
Stop Timer1
Timer1 = 0
Kiir = 1
Elso = 1
Return
A tömbbe azt teszi el, hogy a Timer mennyin állt, amikor változott a bejövő jel, utána ebből egy fix érték segítségével számítja ki, hogy 1 v. 0 lehet a bit:
Hanyszor = A(kict) / 62
(itt tudod változtatni, hogy milyen hosszú jelt vegyen 1-0-nak, nálam 64 volt a határ, ezért lett 62 beírva, hogy tuttira benne legyen).
Nagyon vizsgálni nem tudtam, mert nincs tároló szkópom.
JAni
08:14
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
Köszi, de sajna nem jutottam előrébb, ugyanolyan szórt értékek jönnek, mint amikor valami kicsit hasonló programot írtam magam is. Valamit nagyon elszúrok, csak még azt nem tudom mit. Valószínűleg a hardver résszel nézek el folyamatosan valamit, pedig már vettem másik infra érzékelőt is. Most azon ügyködök, hogy szerezzek valahonnan kölcsön egy gyári philips távirányítót, megpróbálok külső órajelet használni, hátha az pontosabb. Ha ezeken kívűl van még valakinek ötlete, szívesen veszem....winnerbt írta:Kisméretű, lapos távirányt akartam életrekelteni (vevője megvolt a készülékből), nagyon sok helyen használják ezeket (HIFI torony, LEDvezérlő stb.), csak a felső fólia változik. Na, persze nem RC5. Kínomban írtam egy kis prg-ot, hátha Neked is segít kideríteni, mivel is állsz szemben:
- nagygabor679
- DrótVégénSzéndarab
- Hozzászólások: 36
- Csatlakozott: 2011. március 29. kedd, 6:00
- Theophrast
- SzínkódFestő
- Hozzászólások: 78
- Csatlakozott: 2011. július 17. vasárnap, 6:00
Sziasztok
Kis segítségre lenne szükségem.
Adott egy atmega32-es az int0 lábán egy TSOP1738 assal.
Egy adott programrészben gyönyörűen beolvassa a távirányítóval kiküldött adatot, de mi történik akkor ha egy időigényes folyamat fut és pl a távirányító jelére szeretnék visszalépni a főmenübe vagy egy változó értékét állitani?
Lehet a távirányító jelét megszakításként kezelni?
Ha valaki felhomályosítana a témával kapcsolatban azt nagyon de nagyon megköszönném.
Kis segítségre lenne szükségem.
Adott egy atmega32-es az int0 lábán egy TSOP1738 assal.
Egy adott programrészben gyönyörűen beolvassa a távirányítóval kiküldött adatot, de mi történik akkor ha egy időigényes folyamat fut és pl a távirányító jelére szeretnék visszalépni a főmenübe vagy egy változó értékét állitani?
Lehet a távirányító jelét megszakításként kezelni?
Ha valaki felhomályosítana a témával kapcsolatban azt nagyon de nagyon megköszönném.
- Theophrast
- SzínkódFestő
- Hozzászólások: 78
- Csatlakozott: 2011. július 17. vasárnap, 6:00
Elvileg INT-ként ha jól értelemezem, bár a megszakitásokkal csak nemrég kezdtem el foglalkozni
A programom iylen felépítésű:
hogyan lehet visszatérni az első bejelentkező menübe?
ugye a getrc5-el nem lehet mert azt do loop ciklusban kellene lekérdezni és akkor nem tud mást csinálni az avr amig vár a távirányitó jelére...
A programom iylen felépítésű:
Kód: Egész kijelölése
$lib "mcsbyte.lbx"
Config Rc5 = Pind.2
Enable Interrupts
Dim Address As Byte , Command As Byte
Menu:
Cls
Lcd "1. menüpont"
Locate 2 , 2
Lcd "2. menüpont"
'itt beolvastataom a távirányító által kiküldött jelet
Do
Getrc5(address , Command)
If Address <> 255 Then
Command = Command And &B01111111
If Command = 1 Then
Goto Elso_menupont
End If
If Command = 2 Then
Goto Masodik_menupont
End If
Loop
Elso_menupont:
'itt csinál valamit végtelen ciklusban
Masodik_menupont:
'itt is csinál valamit végtelen ciklusban
ugye a getrc5-el nem lehet mert azt do loop ciklusban kellene lekérdezni és akkor nem tud mást csinálni az avr amig vár a távirányitó jelére...