[ zivadin_despot @ 28.06.2010. 22:44 ] @
Pozdrav svima,
pokusavam da dekodiram protokol daljinca ali nesto mi ne ide u simulaciji..... Evo samo logike kako bi trebalo da radi....
Evo za simulaciju kako sam napravio:
Code:

unsigned int i=0;
void interrupt(){
     if(T0IF_bit){
                  switch(i){
                            case 0: PORTB=1; i=1; break;
                            case 1: PORTB=0; i=2; break;
                            case 2: PORTB=0; i=3; break;
                            case 3: PORTB=1; i=4; break;
                            case 4: PORTB=0; i=5; break;
                            case 5: PORTB=1; i=6; break;
                            case 6: PORTB=1; i=0; break;
                  }
                  TMR0=100;
                  T0IF_bit=0;
     }
}
void main() {
     OPTION_REG=0;
     INTCON=0b10100000;
     TRISB=0;
     PORTB=0;
     TMR0=100;
     while(1){
     }
}


ovim sam predstavio daljinski koji na svakih x vremena menja stanje porta B.B0

Code:

unsigned int prijem=0,i=0;

void interrupt(){
     if(T0IF_bit){
    i++;
                   prijem=prijem*2;   //siftujem
                   prijem=prijem+PORTB.B0;
                   TMR0=100;
                   T0IF_bit=0;
    if(i==7) INTCON=0;  // kada primi 7 bitova zavrsio je
     }
INTF_bit=0;
}
void main() {
     OPTION_REG=0;
     INTCON=0b10110000;
     TRISB=1;
     PORTB=0;
     TMR0=100;
     while(1){
     }
}


ovako bi izgledao prijem, gde ce u promenljivu "prijem" biti smesten protokol
vreme slanja i vreme prijema su isti... Ovo naravno ne predstavlja stvarni daljinski nego mi je bitno da ovo proradi, pa cu posle lako prilagoditi frekvenciji daljinskog....
u simulaciji kada to povezem nikako ne mogu da iscitam sta mi prvi posalje....
Unapred hvala


[ Sepa011 @ 28.06.2010. 22:51 ] @
Pazi, koliko sam cuo, vecina daljinaca koja je u stanju da "nauci" kodove od originalnog daljinca, radi na principu brzog semplovanja signala sa prijemnika i posle to sto je usemplovano jednostavno istom brzinom reprodukuje. Znaci, glupa sprava, bas je briga za protokol,..., k'o papagaj, jelte.
[ bogdan.kecman @ 28.06.2010. 23:24 ] @
ima par popularnih protokola koji koristi 99% daljinaca i od 20tak "univerzalnih sa mogucnoscu ucenja" 19 su radili tako sto su citali kodove koristeci doticne protokole (rc-#, recs-#, sirc). Znam posebno sto sam imao neko g*o od tv-a koji je imao neki cudan manchester nekompatibilan sa bilo kojim od ova tri i nisam uspeo da nadjem "univerzalca" koji ga je umeo nauciti i bukvalno sam 20 razlicitih probao dok nisam nasao na jedan koji ga je naucio kako treba (bice da taj radi u papagaj modu)... cak je i neki sw koji sam imao za pc citao kod "delimicno", tj citao je samo prvi bajt umesto 3 bajta ili tako nesto - ne secam se ima tome 10+ godina ..

da se vratim na temu, ako hoces da dekodiras signal sa daljinca, vidi prvo koji protokol daljinac prica, to ti je najjednostavnije. rc-5, rc-6 i sirc su najpopularniji (filips i sony) i imas za njih implementacije za "sta oces" - imas u asm-u za 12F*, 16F*, u C-u za 16F*, 18F*, atmel ...

evo ti npr super jednostavan primer za sirc za pic u asm-u sa super objasnjenjem: http://www.winpicprog.co.uk/pic_tutorial5.htm

evo ga rc5 super objasnjen: http://www.atmel.com/dyn/resources/prod_documents/doc2534.pdf

imas ovde odlican tred: http://www.edaboard.com/ftopic197570.html

[ rsinisa @ 28.06.2010. 23:48 ] @
Živadine, nisam razumeo da li hoćeš da napraviš uredjaj koji prima kod sa bilo kog daljinca ili sa nekog odredjenog? Ako je ovo prvo, mislim da je ovo što kaže Šćepa, papagaj mod, bolji jer može da pokupi signal sa bilo kog daljinca, ali ti treba dobar algoritam kako bi trošio što manje RAM-a/EEPROM-a za smeštaj komandi. Ako se odlučiš za ovo što kaže Bogdan, za analizu, tu ti treba malo više programske memorije kako bi mogao da obradiš što više protokola. A to da su neki najpopularniji ne bih se baš složio; možda danas, ali pre ne znam ni ja više koliko godina nije bilo tako. Pisao sam o tome jednom davno kada samo ddanijel i ja uzeli 11 daljinaca i analizirali - od svih njih samo su 2 bila RC5, dva su bila neki drugi protokol, a ostali su imali svaki za sebe protokol. Moguće da se danas situacija promenila.
Ako hoćeš da praviš uredjaj koji prima sa odredjenog daljinca lepo uzmi poveži prijemnik na zvučnu kartu i sa nekim programom tipa "CoolEdit" pogledaj signale i biće ti sve jasno.

Pozdrav.
Sinisha
[ zivadin_despot @ 29.06.2010. 00:01 ] @
Imam jedan daljinski ciji kod hocu da vidim, probacu sa muzickom pa cu javiti,... ali me interesuje da li bih mogao to isto uraditi sa gode navedenim kodom, gde imam prijemnik i citam ulaz?
Hvala na brzim odgovorima....
[ rsinisa @ 29.06.2010. 00:25 ] @
Stvari i nisu baš takve kakvim ih ti očekuješ. Veruj mi, pogledaj prvo kako izgleda signal pa će ti biti jasno gde grešiš.

Pozdrav.
Sinisha
[ shpiki @ 25.08.2010. 12:58 ] @
Tema je malo "zarđala" ali ako nije problem, imam nekoliko pitanja. Za početak, za Sepa011:
možeš li malo bliže da mi objasniš to "brzo semplovanje"?
Kako "uhvatiti" signal sa nekog daljica, tj. ono što stigne na uC kako najbolje smestiti u memoriju?
Predlog, sugestija, sve je dobrodošlo...

Unapred hvala. Pozdrav!
[ bogdan.kecman @ 25.08.2010. 13:55 ] @
sto ne pogledas kako to radi usb ir toy ? Oni imaju open source firmware, rade to sto ti hoces (skeniraju ir, i salju kompu to skenirano preko usb-a, takodje mozes preko usb-a da pustis taj isti (ili neki drugi) signal kroz njega + imas aplikaciju za pc koja dekodira signal). source je dostupan ovde

bitni delovi su ti
- dekoder za RC5/RC5x protokol
- IR sampler

dodatno imas python gui ovde

ir toy takodje prepoznaje SUMP protokol tako da ako se na njega konektujes nekim sump klijentom mozes da snekiras data koristeci neki sump klijent. ceo uredjaj je 18f2550 + usb steker + ir receiver + ir dioda .. dakle nabodes na breadboard za 10min, imas firmware koji radi koji onda mozes da kasapis da od njega pravis sta god te zanima :)



[ shpiki @ 26.08.2010. 11:23 ] @
Hvala na odgovoru. Procitao sam ovo, znam za IrToy od ranije.. Meni nije problem da ja na racunaru procitam IR signal i da ga prosledim na uC a da ga ovaj reprodukuje, problem mi je da sve to uradi sam uC, bez racunara. Znaci, na koji nacin da radim samplovanje?

Ideja je da se napravi uredjaj koji ce moci da memorise recimo 4 komande i te iste komande kasnije da uporedjuje sa signalom sa daljinskog. Ako nisam bio jasan, molim recite, objasnicu opsirnije.

Hvala. Pozdrav.
[ bogdan.kecman @ 26.08.2010. 14:52 ] @
bice da nisi gledao sors :( ... radi dekodiranje ir signala na mcu-u .. irtoy to posle posalje preko seriske veze na pc .. ali ti vec imas kod u lokalu (ProcessIR funkcija procesira semplovan kod - dakle ovde umesto da saljes dekodirane bajtove na pc, mozes da ih cuvas u nekom baferu, snimas u eprom ili radis sa njima sta vec zelis) - sto se samplovanja tice to se radi iz interapta u IRdecoderInterruptHandlerHigh)