Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Megnéztem debuggerben a TMR5 és az OC1TMR értéke mindig egyenlő, egyszerre futnak.
A kód amit írtál, az PWM módban működteti az OC modult. Ez nekem sajnos nem jó, mindenképpen kettős komparálású módban kell mennie. Az oka ennek az, hogy a timer5 PR5 regiszterével a frekvenciát, az OC1R és az OC1RS különbségével a kitöltési tényezőt, az OC1R és az OC1RS-nek a nulla és a PR5 értéke közt elfoglalt "helyével" pedig fázistolást állítok.
Köszönöm mindannyitoknak a segítséget, de nem volt semmi hiba a kódban. Csak én voltam a hülye. Rossz lábra akasztottam rá a szkópot.
![]()
Én elsőre biztosan kerülném az OC1R=0 beállítást, mert az adatlapban ez különleges esetként van kezelve (kimaradhat az első impulzus ).
Igen ezt én is olvastam, de nekem ebben az áramkörben nem probléma ha kihagy egy impulzust.
Sziasztok!
Egy impulzus szünet kód modulált jelsorozatból szeretnék információt kinyerni 16F877-el Úgy néz kí 75ms-ként jönnek a bájtok egy sorozat az 5bájtot tartalmaz majd 75ms szünet. Egy magas szint úgy néz ki hogy 36Khz-el van modulálva tehát 500us-ig 36Khz majd 500us szünet ez a "0" 500us-ig 36khz majd 1000us szünet ez az "1". Tehát a szünetek hordozzák az információt. Szerintetek melyik perifériát érdemes használni 16f877-en a capture compare modult? Van javaslatotok hogyan építsem fel a dekódolást? A hozzászólás módosítva: Feb 3, 2016
Egy TSOPxx36 demodulálná a jelet. Egy timer megszakítással lehetne mintavételezni a demodulált jelet.
![]()
Szia!
Kettő timert érdemes használnod. Most nem néztem meg a pic adatlapját, de biztos van timer, aminek belső órajel helyett kívülről adhatsz impulzust. Oda beküldöd azt a jelet, ahogy van. Kelleni fog egy másik timer is, hogy az időt mérni tudd valamivel (pld 250 uSec időszeletenként le tudj futtatni egy állapotgép függvényt). Ha a timer "moccant" az előző állapothoz képest, akkor tudod, hogy az aktuális időszeletben voltak impulzusok, valahol érintőlegesen még az 500 uSec-nyi impulzus csoport idejét "látja" a pic-ed. Ha nem volt változás az előző timer értékhez képest, akkor már a szünetet érzékeled, és annak mérni kell az idejét. Egyszer csak újra változott a számlálód, akkor már véget ért a szünet. Összeraksz egy állapotgépet, hány impulzus ütem után hány szünet ütemet érzékeltél, és dobálod a biteket valami kimeneti streamre szinkronnal, vagy pld uarton, vagy tovább belső feldolgozásra, amire éppen szükséged van. Jó szórakozást ![]()
Szükségem lenne egy usb-ről vezérelhető spi portra, illetve nagy halom vezérelhető logikai jelre - amiből spi-t gyárthatok. Nem kell sebesség, akár 1 bit / sec is bőven elég, de az spi protokollt teljesíteni kell, és jó lenne olyan cucc, ami mechanikailag egyben van, hogy mobil környezetben is használni lehessen. Pld amit dugaszpanelben összepakolok usb csati meg pic és valami tüskesor, működni az is tud, de nem a leghandybb mechanikailag. Azon filozom, hogy valamikor használtam a pickit 2-t logikai teszternek (vagy van pickit 3-am is, ha az ledokumentáltabb), de az az mplab saját felületén keresztül volt, most pedig nem a szokványos célra kell (mint pld flasht programozni), hanem "háziszabványos" eszközzel kellene kommunikálni. Elvileg alkalmas lehet a feladatra, gyakorlatilag pedig semmi doksim nincsen róla, hogyan tudom usb-n keresztül vezérelni a jeleit, illetve lekérdezni a bemeneti bit aktuális értékét. Tud olyan doksiról valaki?
Vagy az MCP2210-es USB to SPI protocol konverter, de itt problémát okozhat a driver.
Vagy MLA, itt van USB HID vagy CDC program de ezt tapasztalatból tudom, hogy "undorítóan" néz ki. Vagy nem SPI-t használsz hanem UART-ot és bármelyik ebay-es USB to UART protocol konverter. Vagy a PIC-ador-ban használt 18f14k50-es mint USB to UART konverter. De ez az utóbbi két lehetőség mind UART-os.
Esetleg érdemes lehet megnézni a PICkit Serial Analyzer-t.
USB -> FTDI 232 modul -> kontroller -> SPI és egyéb kimenetek, ha kellenek. Kb. ez a legegyszerűbb szerintem.
Egy 16F1454, 16F1455, 16F1459 (még quartz sem kell hozzá), 18F14K50, 18F2550 stb. és egy kis program megoldja.
A 16f1455-el tisztában vagyok mivel ezt használtam, nem is az áramköri része az undorító, hanem ha valaki szeretné megérteni azt az USB-s stack-et amit a Microchip volt kedves megírni. Na az szerintem borzasztó, mert még az bit ellenőrzéseket is rutinoknak definiálják(#define), nekem nagyon össze vissza volt, de ennek lehet így kell kinézzen.
Jó pár hónapomba telt, hogy a Microchipes stack-ből megírjam a sajátomat.
Köszönöm a válaszokat. Amennyire leszűrni tudtam belőle, ti sem ismertek előre dobozolt cuccokat a témában, szóval a legjobb lehetőségem a pickit-ről programozói doksit szerezni.
Egyébként a mechanikai kiszerelés a legnagyobb problémám, mert halom rendetlenség közepette is kezelhetőnek kell maradnia (kólatócsa az asztalon, potyog valami fémreszelék, párszor leesik a földre, szerintem ti is láttatok már ilyet ![]()
Igen, én is arra gondoltam, viszont az lenne a fontos, hogy ha nem az mplab-ot használom, hanem előkapom a .net / c#-t, le tudjak programozni egy olyat. Na nem a gui-t, hanem az adatfogalmat. Ahhoz kellene nekem egy doksi a pickitről, hogyan kommunikál az usb-n keresztül.
A 16F1454 -en a CDC nekem néhány nap alatt működőképes lett, azóta is megy rajta a MODBUS (paritás kezeléssel)... Bővebben: Link
Használni nem nehéz, (véleményem szerint) én nehezen megérthetőnek tartom.
Van tapasztalatotok a PIC-ek A/D-jának referenciájának tűrését illetően?
dsPIC33E sorozatú példánnyal szeretnék mérni analóg jeleket és a referenciát gondoltam hogy egy mezei TL431 adná ami ugye 2,5V-os. A PIC adatlapja azt írja, hogy az A/D referenciájának a minimuma 2,5V, a maximuma pedig 3,6V. A TL431 adatlapja szerint pedig egészen pontosan 2,495V+-1% a névleges feszültsége amit ő ad, 50ppm/°C-kal. Szerintetek megelégszik vele az A/D?
-Ha nagyon preciziós elvárások nincsenek, és gondolom, nincsenek, nyuszit nem lőnek azzal a 2.5v-al, jó lesz a 2.495 is.
-Azt a tl431-et is át lehet szabályozni másmilyen feszültségre külső ellenállásokkal, van rá példa is a cucc adatlapján. -Bármi más stabilizátort is használhatsz, ha éppen nincs kedved ellenállásokkal vacakolni, mondjuk egy 3.3v-os stabot. -Én ugyan jó régen nem mélyedtem bele a/d problémákba, de mintha az a referencia fesz csak a kiegyenlítő hálózat táplálására kellene, ergo akár utólag szoftveresen is kompenzálhatsz a mérési kimeneten. Talán lesz egy kicsike torzítás, de nem a világ vége. Válassz kedved szerint. Ui.: vakon van egy tippem, hogy az utolsót fogod választani, mert áramkörrel vacakolni sosincs annyira fun, mint millivoltokat számolgatni napokon keresztül néhány ezrelékes torzítás _talán_ kiküszöbölésére ![]() A hozzászólás módosítva: Feb 14, 2016
Precíziós elvárások éppenséggel lennének mert műszer lenne belőle. Na mindegy, majd kipróbálom aztán kiderül. Legfeljebb tényleg kap még két ellenállást a TL431.
Sziasztok. 5V-os pic-et szeretnék 3,3V-os gsm modemmel összekapcsolni usart kommunikációval szerintetek, ha a pic tápot leveszem 3,3V-ra működhet a dolog vagy mindenképpen szint illesztés kell?
Ha a PIC megy 3,3V.ról akkor nincs gond. PIC-en múlik. Ha nem megy csak 5V-ról akkor kell a szintillesztés. Milyen típusú PIC?
A hozzászólás módosítva: Feb 19, 2016
16F877 adatlap szerint :
Idézet: „Wide operating voltage range: 2.0V to 5.5V” akkor elméletileg megy a dolog igaz debuggolni nem lehet mert mplab megreklamálja...
Azért ellenőrizd le, hogy nem véletlenül csak az LF verzió működése garantált-e 4V alatt
Az nem működik 3.3 V-ról. Az LF változat igen, de az pedig csak 10 MHz-ig.
Nem dolgoztam ezzel a típussal, de ez sehol sincs említve. Adatlap szerint ez is megy.
De potyonak igaza van, le kell ellenőrizni. Szerk: Igazad van. Ez egy alul dokumentált típus. Electrical characteristics alatt van jelölve. A sima csak 4V-ig megy. Vagyis kell neki a szintillesztő. A hozzászólás módosítva: Feb 19, 2016
Köszönöm szépen az infokat mit javasoltok szint illesztéshez? oda vissza?
|
Bejelentkezés
Hirdetés |