Infra távirányító

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 9990
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2012. május 31. csütörtök, 21:03

kiadod a stop timer0-t (stop timer2)?
Ez állítja elő a 4szögjelet.

Ha peched van a négyszögjel ki/bekapcsolás stop/start timerrel történik....

Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

HozzászólásSzerző: nobody_hun » 2012. június 1. péntek, 6:10

Köszi, kipróbálom a hétvégén!
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."

Avatar
winnerbt
Chipfüstölő
Hozzászólások: 894
Csatlakozott: 2007. március 25. vasárnap, 6:00
Tartózkodási hely: Kecskemét

HozzászólásSzerző: winnerbt » 2012. június 4. hétfő, 17:12

http://data.hu/get/5195805/taviranyok.jpg
Ilyen kis 6-gombos távirány panelkáim vannak.
Kódolás ismeretlen (lusta voltam, na...)
SPI tüsisor is van rajta, nincs titkosítva az Atmega48 ,
de kit érdekel.
Bontásra vagy használatra, sajnos doboz nélkül: 250Ft/db, 15db van.
Érdeklődés emilben, érkezési sorrendben.
De!
Kiolvastam a programot, megnéztem a fuse-biteket stb.
Gondoltam, nyomok rá egy verify-t.
És az azt mondja, hogy különbség van 01000h címnél.
Ez azért érdekes, mert a M48-ban csak 4k ROM van, tehát
1000h-n érdekes lenne, ha lenne valami (vagy talán van?).
2070-es Bascom USB-ISP Prog1 programozó.
JAni

Avatar
joco10
Újonc
Újonc
Hozzászólások: 12
Csatlakozott: 2009. október 25. vasárnap, 6:00
Tartózkodási hely: vác

Re: Infra távirányító

HozzászólásSzerző: joco10 » 2013. február 11. hétfő, 14:50

Sziasztok.
Attiny13 -as procival egy infra kódot szeretnék küldeni. Ezen az oldalon lévő első programot (mega168)
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=9995&highlight=nec
már sikeresen átirtam mega88-ra. De most csak egy kódot kell küldeni,ezért gondoltam elég lenne egy attiny13-as is.
Mivel ebben nincs timer1 átirtam timer0-ra. A kérdésem, hogyan kell beállítani a regisztereket 38khz kimenő jelhez .

Kód: Egész kijelölése

 $regfile = "attiny13.dat"
 $crystal = 9600000
'*** Start Timer 1 ***
 '38kHz square wave.
 'turn output off.
 Tccr0a = ?
 Tccr0b = ?
 Ocr0a = ?
kikapcsolás:
Tccr0a = ?
bekapcsolás:
Tccr0a = ?


Előre is köszönöm a segítséget.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9990
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: Robert » 2013. február 11. hétfő, 16:28

Bascom alatt nem regisztereket piszkálunk....



Config Timer0=timer, prescale =....
On timer0 ugrik
enable interrupts
enable timer0

do
loop

ugrik:
timer0= startertek
return



És az AVRCalc megmondja a paramétereket...... :)

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: ampervadasz » 2013. november 11. hétfő, 12:23

Szervusztok AVR Istenei!

Problémába ütköztem... Készítettem egy AVR-es áramkört, melyben a változók értékét infra távvezérlővel tudom módosítani. Ez eddig nem volt nehéz feladat. RC5-ös kód fogatására képes. Most jön a neheze - legalábbis számomra! Nem szeretnék TV, vagy univerzális távvezérlővel szaladgálni, ráadásul olyan távvezérlővel nem, ami teli van pakolászva gombokkal. Arra a merész elhatározásra jutottam, hogy saját távvezérlőt tervezek, egy Attiny24 (44) segítségével.
Választásom erre az AVR-re az alábbi megfontolások alapján jutottam:
- Alacsony feszültségen is üzemeljen - igaz csökken a hatótávolság (1,8-5,5V 1MHz-en)
- Legyen benne 16bit-es timer (Timer1)
- Megfelelő lábszám a 6 nyomógomb számára (Teljes PortA csak az enyém! :D )
- Természetesen az ár kérdése sem volt mellékes, habár az utolsó szempontok között szerepelt.

Olvastam az RC5SEND utasítást a BASCOM súgóban, de valahogy nem volt tiszta számomra. Mintha a Timer időzítését kihagyták volna...

Elképzelésem a következő:

Kód: Egész kijelölése

$regfile = "attiny24.dat"
$crystal = 1000000

Config Porta = Input

Config Timer1 = Timer , Prescale = 1 , Compare B = Toggle
On Timer1 Pulse

Dim Startertek As Integer

Startertek = 65508

Enable Interrupts
Enable Timer1

Do
Nop
'...   Ide kerülne a portA vizsgálata
'...     Értékadás a megfelelő gomb lenyomásakor
'...        RC5SEND utasítás
Loop

End

Pulse:
Startertek = 65508
Return


Eddig talán rendbe is lennénk. A BASCOM súgó nem sokat mondott számomra, nézelődök a neten is, de bonyolultabbnál bonyolultabb megoldásokat kínálnak fel számunkra.

Ami nekem kellene, hogy 1 gombot (kezdésnek) hogyan lehet lehezelni RC5SEND utasítással...

Tudtok segíteni?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9990
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: Robert » 2013. november 11. hétfő, 16:43

Vigyázz!
A távirányítók többféle szabványt kezelnek. RC5, RC56, RC6, NEC, SONY... Mostanában a NEC, ami egyre többször visszaköszön (Samsung? LG? eszközökben.).

Itt a távirányítóklónozás alapelve:
- 1, digitalizálni a meglevő jelet
- 2, ezt visszajátszatni gombnyomásra.
Ha nem kell a Bascom, ez készen van (Timer1 alapon) Arduino alá. ATMega8/168/328 chipekre azonnal készen van. Esetleg ezt a függvénykönyvtárat Bascom alá lehet portolni....

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: ampervadasz » 2013. november 11. hétfő, 16:53

Az egyik projektemben RC5-ös vétel van leprogramozva. Ehhez szeretnék saját távvezérlőt készíteni. Az ok, hogy nyilvános (kis tömegsűrűségű :) ) helyen üzemelne a berendezés, de nem szeretném, ha minden "suhanc" a saját TV távvezérlőjével állítgatná a berendezést. Saját "Address" és "Command" változóval lennének ellátva a megfelelő billentyűk. 8) Ravasz!

Szóval a saját távvezérlő programjához keresek valami használható információt.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9990
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: Robert » 2013. november 11. hétfő, 19:49

A feladat felfogva:)
SendRC5, SendRC5EXT utasítások használhatóak....
A Timer1-t használja mind.
OC1A kimenetet (Timer ki/bekapcsolása az adómoduláció...)

Az eszköz küldés után sleep-be megy... INT-re felkel....

Avatar
SirLeslie
Pákabűvész
Hozzászólások: 247
Csatlakozott: 2005. április 14. csütörtök, 6:00
Tartózkodási hely: Zalaegerszeg
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: SirLeslie » 2013. november 17. vasárnap, 7:30

ampervadasz írta:...Szóval a saját távvezérlő programjához keresek valami használható információt.


Még tavaly előtt készítettem egy dcf77-vevős órát (16db 7 szegmenses kijelzővel), aminek a kódját szerettem volna a versenyre is beküldeni (a kommentelés hiányzik)... majd talán jövőre elérek odáig ;-)
Mivel eleve a falra van tervezve, ezért nincsenek rajta gombok - maradt az RC5.
Az alább látható kód van az adóba töltve - igazából még tesztverzió, de már nem kell módosítani rajta 8) .
5 gomb van a kis dobozon - középen, jobbra, balra, fel, le (mindegyik gomb be van diódázva az int bemenetre - felébreszteni powerdow-ból).
Két időzítős uC kellett (RC5 lefoglalja a timer0-t (lásd help (az infraled bekötése is onnan van (infraled meg régi távirányítóból)))), valamint a 'sok' gomb miatt sem lett volna elég a 8 lábú ATtinyXX.Továbbá: a doboz méretét sem ez határozta meg. Adott gombot lenyomva tartva először nagy időzítéssel adja ki az egyes parancsokat, az időzítés lejárta után gyorsan (óra/perc érték állítás miatt, mint a 'nagyok' óráin). Két-két gombot tartva ismét más kódot ad ki - ezzel lépek be a vevő oldalon a beállító menü-rutinokba.
Visszajelzésként került egy led az előlapra, ami gombnyomáskor villog - elemcsere esedékessége az adc portok hiánya miatt nincsen elkészítve - valamint ha nincsen használva az adó akkor elmegy aludni -> powerdown. (két éve van benne ugyanaz az elem - teszteléssel beleértve)
A lényeg, hogy a Command és Address értékekkel egyedi azonosítókat tudsz kiküldeni - de nagyon fontos megemlíteni: neten találsz listát, hogy melyik kódcsoport melyik készülékhez való, tehát lehetőleg ne olyan kódot válassz, ami bezavarhatná az otthoni készülékeket (de gondolom ezt felesleges említeni).


Kód: Egész kijelölése

$regfile = "attiny2313.dat"                               
$crystal = 3686400                                       

$hwstack = 40
$swstack = 40
$framesize = 40

' ATtiny2313 lábkiosztása a feladathoz
'
'                 __ __
'                I  U  I
'      Reset PA2 I     I VCC
'            PD0 I     I PB7
'            PD1 I     I PB6
'            PA1 I     I PB5
'            PA0 I     I PB4
' paraméter- PD2 I     I PB3 infraled meghajtás
' gombok int PD3 I     I PB2 érték-
'            PD4 I     I PB1 paraméter+
'  piros led PD5 I     I PB0 OK gomb
'            GND I     I PD6 érték+
'                I_____I
'

Config Porta.0 = Output
Config Porta.1 = Output
'Config Porta.2 = Output
Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Input
Config Portb.3 = Output
Config Portb.4 = Output
Config Portb.5 = Output
Config Portb.6 = Output
Config Portb.7 = Output
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Input
Config Portd.3 = Input
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Input
Config Portd.7 = Output

Set Portb.0
Set Portb.1
Set Portb.2
Set Portd.2
Set Portd.3
Set Portd.6

Led Alias Portd.5
Parameter_minus Alias Pind.2
Parameter_plus Alias Pinb.1
Value_minus Alias Pinb.2
Value_plus Alias Pind.6
Ok_button Alias Pinb.0

Const Timer0reload = 195                                    ' ~25ms
Config Timer0 = Timer , Prescale = 1024
Load Timer0 , Timer0reload
On Ovf0 Timer0_isr
Enable Ovf0
Start Timer0

Config Int1 = Falling
On Int1 Int1_isr
Enable Int1

Dim Togbit As Byte , Command As Byte , Address As Byte , Pwrdown_time As Byte , 1mp As Byte , I As Byte , 1mpt1 As Byte
Pwrdown_time = 5   ' 5sec

Set Portb.3

Declare Sub Idozites

Enable Interrupts

Config Rc5 = Pinb.3                                       


Togbit = 0

'RC5 üzenetek:
'31-1 (OK)
'31-2 (P-)
'31-3 (P+)
'31-4 (V-)
'31-5 (V+)


Do

  If Ok_button = 0 And Parameter_minus = 1 And Parameter_plus = 1 And Value_minus = 1 And Value_plus = 1 Then
    Set Led
    Command = 1
    Address = 31
    Rc5send Togbit , Address , Command
    Reset Led
    Call Idozites
  End If

  If Ok_button = 1 And Parameter_minus = 0 And Value_minus = 1 And Value_plus = 1 Then
    Set Led
    If Parameter_plus = 1 Then
      Command = 2
        Else
          Command = 7
    End If
    Address = 31
    Rc5send Togbit , Address , Command
    Reset Led
    Call Idozites
  End If

  If Ok_button = 1 And Parameter_minus = 1 And Parameter_plus = 0 And Value_minus = 1 And Value_plus = 1 Then
    Set Led
    Command = 3
    Address = 31
    Rc5send Togbit , Address , Command
    Reset Led
    Call Idozites
  End If

  If Ok_button = 1 And Parameter_minus = 1 And Parameter_plus = 1 And Value_minus = 0 And Value_plus = 1 Then
    Set Led
    Command = 4
    Address = 31
    Rc5send Togbit , Address , Command
    Reset Led
    Call Idozites
  End If

  If Ok_button = 1 And Parameter_minus = 1 And Parameter_plus = 1 And Value_plus = 0 Then
    Set Led
    If Value_minus = 1 Then
      Command = 5
        Else
          Command = 6
    End If
    Address = 31
    Rc5send Togbit , Address , Command
    Reset Led
    Call Idozites
  End If

Loop


Sub Idozites
  If Ok_button = 0 Or Parameter_minus = 0 Or Parameter_plus = 0 Or Value_minus = 0 Or Value_plus = 0 Then
      For I = 1 To 30
        If 1mpt1 > 0 Then
          Waitms 10
        End If
        If 1mpt1 = 0 Then
          Waitus 700
        End If
        If Ok_button = 1 And Parameter_minus = 1 And Parameter_plus = 1 And Value_minus = 1 And Value_plus = 1 Then Exit For
      Next I

  End If
End Sub


Timer0_isr:
  Load Timer0 , Timer0reload

  Incr 1mp

  If 1mp => 40 Then

    1mp = 0

    If 1mpt1 > 0 Then Decr 1mpt1

    If Pwrdown_time > 0 Then
      Decr Pwrdown_time
    End If

    If Pwrdown_time = 0 Then

      Stop Timer0

      Config Int1 = Low Level
      Enable Interrupts
      Power Powerdown

      Pwrdown_time = 5
      jmp $0000
    End If

  End If

Return


Int1_isr:

  Pwrdown_time = 5
  1mpt1 = 2

Return

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: ampervadasz » 2013. november 18. hétfő, 9:05

SirLeslie!

Rátapintottál a lényegre, a leírt kódod rengeteget segített nekem.

Ameddig eljutottam:
Mikrokontroller: Attiny44 (Pcint bemenetek, Adc, 2xtimer). A választásom pont ezért került rá, ráadásul meglepően olcsó (kb.230Ft)
Gombok: 6db. (Még legózom a bekötéseken, hogy melyik hová kerüljön)
Infraled: winnerbt kollégánk küldött nekem 2db távvezérlőt, azokban van 2-2 LED. Meghajtása egy majdnem körömnyi tranzisztorral - egyenként! -, vagy FET-el (atomerőművet is lehet vele kapcsolni szinte).
Távirányító ház: TME-nél lehet szerezni 600Ft-ért EZT
Félig-meddig a programom is készen, PROTEUS-szal a szimuláció tökéletes, igaz a Powerdown utasítás működését sehogy nem látom. :-)

Mire is kell nekem ez a szörnyeteg? Ha már elárultad, énis megmondom. Mátraterenyén a futballpályán van egy régi eredménykijelző kb.10méter magas. Vonalizzókkal van kivilágítva a 7 szegmenses kijelző. 6x7 db. Minden szegmens 60W!!! Van ám áramfelvétel 230V-ról!!! Ezt vezérlem mikrokontrollerrel, ehhez kell majd a távvezérlő! :-) Az egész berendezés egyenlőre az asztalomon áll, tesztelés alatti folyamatban van, folyamatosan agyalok közben, hogy az "emberi hülyeséget" hogyan tudnám a programba kiiktatni.

Avatar
csabeszq
Bitfaragó
Hozzászólások: 676
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Infra távirányító

HozzászólásSzerző: csabeszq » 2013. november 18. hétfő, 9:53

Mesélj az Attiny44-ről. Hol lehet beszerezni? DIP-es?

Nekem nem a tudása miatt lenne érdekes, hanem a lábszáma miatt. Ha a 8 lábú kicsi, a 28 lábú meg sok, akkor valami köztes megoldás jó lenne.

Avatar
ampervadasz
Bitmanipulátor
Hozzászólások: 119
Csatlakozott: 2008. január 19. szombat, 7:00
Tartózkodási hely: Mátraterenye
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: ampervadasz » 2013. november 18. hétfő, 10:04

csabeszq írta:Mesélj az Attiny44-ről. Hol lehet beszerezni? DIP-es?


DIP lábkiosztású Attiny44-est nem találtam énsem, SMD-t szoktam tervezni és venni a TME
-nél.
Adatlapját ITT találod.

sunnysys
Újonc
Újonc
Hozzászólások: 9
Csatlakozott: 2014. március 25. kedd, 14:58

Re: Infra távirányító

HozzászólásSzerző: sunnysys » 2014. március 26. szerda, 20:47

sziasztok!

bocs, ha butaságot kérdezek, kezdő vagyok még arduioban. :)
ezzel vajon meg lehet oldani, hogy egy távirányító IR jeleit megtanulja, majd azokat ki is adja? http://www.tinydeal.com/single-way-of-i ... 14961.html
ilyen megoldást szeretnék ugyanis, csak előbb rendeltem, mint olvastam volna: ha jól látom, leginkább vonalkövető robothoz lehet ez alkalmas.

köszönöm!

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9990
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Infra távirányító

HozzászólásSzerző: Robert » 2014. március 26. szerda, 22:12

Ezzel nem.

Adó: infraLED, vevő: TSOPxxxx vevőkocka....


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég