Infra DO s PIC - pomoc s PWM

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
tmz

Infra DO s PIC - pomoc s PWM

#1 Příspěvek od tmz »

Zdravím, chtěl bych si postavit infrared dálkové ovl. k HIFI SONY. Potřebuju vygenerovat asi takový signál (viz obr.) Mám k tomu PIC16F877A. Jak mám napsat program? Napadlo mě jedině dát střídu 100%, pak časová smyčka a změna střídy na 0% + zase časová smyčka.
Přílohy
S3.jpg
(28.12 KiB) Staženo 209 x
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#2 Příspěvek od Modemo »

ja by som to riesil asi takto:
1.pustit si casovac aby po 45ms vzniklo prerusenie a nastavilo priznak ramca
2. nastavit 1 a pockat 2.4ms jednoduchou sluckou cakacou
3. dat do 0 a pockat 6ms
4. dat tam 1 a podla toho ci chces odoslat 0 alebo 1 pockat dany cas (je to tam 1.2 alebo 12ms??? Lebo vyzera to vacsie ako pre 6ms a je tam napisane 1.2ms)
5. kroky 3 a 4 opakovat dany pocet bitov
6. nastavit 0 a pockat na nastavenie priznaku ramca (cize ten od posled.bitu po koniec ramca)
Tod vsio, asi tak nejak :wink:
tmz

#3 Příspěvek od tmz »

Je to 0,6 ms a 1,2 ms. Jak by to bylo s tím přerušením v assembleru (kód)?
Potřebuju to ale pomocí PWM, protože když jsem zkoušel normálně generovat obdélníky, tak na osciloskopu to sice vypadalo pěkně, ale nefungovalo to
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#4 Příspěvek od Modemo »

hmm, ja by som to PWM neriesil urcite, PWM je k niecomu inemu, nie na toto. No ako to ma v asm vyzerat je silne zavisle od pouziteho procesoru, asm viem iba pre 51ky a teraz uz pouzivam C pre AVR, takze s PIC v asm ti nehelfnem.
ALE! Ak ti to na osciloskope vyzeralo dobre, ale neslo to, tak chyba je inde! :roll: A si si isty protokolom? Skus si kuknut orginal DO.
Naco to vlasne chces? Ak ti ide len o tom mat nieco take, tak si kup uciace DO a nauc ho rovno z orginal DO a mas. Ak to robis kvoli programovaniu tak vela zdaru :)
tmz

#5 Příspěvek od tmz »

Na osciloskopu to vypadalo takhle divně (obr.) Vim, že univerzál. DO stojí pár stovek, ale chci si naprogramovat vlastní :)
Přílohy
remote.jpg
(26.85 KiB) Staženo 126 x
remote.jpg
(26.85 KiB) Staženo 126 x
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#6 Příspěvek od Modemo »

Vsetko pasovalo, az na to, ze to hore bolo rozmazane? A ako si snimal signal z origo DO a z tvojho?
tmz

#7 Příspěvek od tmz »

K osciloskopu jsem připojil IR LEDku a posvítil na ní ovladačem a mojí ledkou připojenou na PIC. V horní části byly slaběji svítící pruhy
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#8 Příspěvek od Modemo »

Hmm tak tomu nechapem preco to nejde :upset: , uvidime co ini poradia.
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#9 Příspěvek od jankop »

Jaksi se tady zapomíná na nosnou.
Kolik to dělá..... 36, 38, 40, 56 KHz? Jak to máš ošetřený?
Uživatelský avatar
Crifodo
Příspěvky: 14779
Registrován: 11 říj 2005, 00:00

#10 Příspěvek od Crifodo »

podle toho oscilogramu to vypadá, že originál má nějakých 30% modulaci a tvoje signály jen modulační rámec bez nosné...
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#11 Příspěvek od jankop »

Modulace je stoprocentně 100%.
tmz píše:K osciloskopu jsem připojil IR LEDku a posvítil na ní ovladačem a mojí ledkou připojenou na PIC. V horní části byly slaběji svítící pruhy

Jen metodika měření a naprosté nepochopení základních principů výsledek poněkud zastírá.
tmz

#12 Příspěvek od tmz »

Jede to snad okolo 39 kHz. Takže mám v pic udělat PWM s f=39kHz a měnit střídu? Nevim ale jestli mám generovat srřídu, pak časová smyčka, změna střídy a zase čas smyčka, nebo počítat počet PWM period...
Uživatelský avatar
Crifodo
Příspěvky: 14779
Registrován: 11 říj 2005, 00:00

#13 Příspěvek od Crifodo »

co máš pořád s tou střídou? podle toho protokolu na obrázku jde o sériový přenos 12 bitů, kde start bit trvá 2,4 milisekund a pak jde přenos bitů u kterých log 0 je 0,6 ms mezera/0,6 ms "tečka" a log 1 je 0,66 ms mezera/1,2 ms "čárka". Střída nosné zůstává konstantní a je asi 50% (1:1). Tedy potřebuješ programový převod 12 bit slova na sériovou posloupnost a jen řídit příslušné časové smyčky. (protokol toho DO neznám, sorry).
tmz

#14 Příspěvek od tmz »

Já už v tom mám guláš.... Takže šlo by nastavit PWM a dát zapnout na 2,4 ms pak vypnout na 0,6 ms atd.?
Uživatelský avatar
Modemo
Příspěvky: 90
Registrován: 13 kvě 2007, 00:00
Bydliště: Brno, Pov. Bystrica

#15 Příspěvek od Modemo »

Comu nerozumies??? Jednoducho urob to co sme sa bavili, s tym, ze ked mas mat na vystupe log 1 tak musis s vystupom kmitat medzi 0 a 1 o frekvencii nosnej vlny. :wink: V podstate to urobis tak, ze si navrhnes oneskorovaciu slucku tak, aby pocas cakania negovala vystup podla toho aku f nosnej mas.
Dufam, ze som netreskol kravinu :D
A ad ta tvoja PWMka, daj jej uz pokoj, teoreticky by to aj slo, ale tak to nerob. PWM sa nauc na RGB ledke racej :roll:
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“