Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: „A felbontás nem túl érdekes, 0.1 s-os vagy 0.05s lépésekben bőven elég. A "reprodukálhatóság" a fontos, hogy mondjuk egy 0.2 s mindig ugyanannyi legyen az egymás után végzett adatgyűjtéseknél.” Ha ket orad van azok szinkronizalasat eleg nehez megoldani -- legfeljebb turesnyi pontossaggal tudod akkor meghatarozni az idozitest. Velemenyem szerint vagy belulrol kell megoldanod a 16 bites szamlalo kiterjeszteset (pl. a tulcsordulas jelzovel az mar eleve 17 bit, vagy interruptosan akarmennyire csinalod meg). Vagy kivezeted az orat es egy 74xx-el a masik szamlalo bemenetere kotod. Avagy eleve csak egy szamlalot hasznalsz es egyaltalan nincs a 12 FOSC-rol mukodo szamlalod, hanem eleve 32kHz-rol jaratod amivel ugye 32kHz / 2^16 felbontassal tudsz idoszeleteket nyerni. Idézet: „Ezt szeretném kihagyni, mert közben lesz más feladata is a vezérlőnek, ami szintén generálhat interruptokat.” Nyilvan azt tudod, hogy akarhogy is oldod meg a meres idejere az osszes (egyeb) interruptnak tiltva kell lennie. Nehez dolgot szeretnel amugy, mivel a tight looppal is min 3 ciklusnyi (FOSC) pontossagot lehet csak elerni. Szerintem meg az interrupt / latency-vel torteni szamolassal lehetne a legpontosabb eredmenyt elerni -- pl high priority interuptra teszed ezt a funkciot, minden mas low priority-n van, ha ezt igy meg lehet oldani?
Sziasztok!
Azt szeretném megoldani, hogy a PIC, ha áram alatt van, és csatlakoztatják USBre, akkor ne posszanjon el. (18F2550 és 18F4550). Én a következőre gondoltam: Lenne egy NAND kapum, ami alapból az USBről kapja az 5 voltot. A NAND kapu logikája pedig így lenne: A !& A = !A 0 - 1 1 - 0 !A !& B = C 0 0 - 1 0 1 - 0 1 0 - 1 1 1 - 1 C !& C 1 - 0 0 - 1 1 - 0 1 - 0 Ahol az A - PIC árama, B - USB árama. Így ha a PIC áram alatt van, akkor nem kapcsolom rá az áramkörre az USB 5 voltját, viszont ha nincs, akkor az USBről kapná a PIC is az áramot. (a föld mindenképp rá lenne csatolva a PICre) Mit szóltok hozzá? Idézet: „Mit szóltok hozzá?” Azt, hogy ez nem PIC kérdés. Egyébként meg NAND kapuval nem kapcsolhatod a PIC tápfeszültségét, ott kell még valami. Amúgy meg nem kell ide semmi trükk... Idézet: „ne posszanjon el” Ize, tudom lenni sokat kulfold, felejteni sokat magyar de ez mit jelent? Idézet: „Így ha a PIC áram alatt van, akkor nem kapcsolom rá az áramkörre az USB 5 voltját, viszont ha nincs, akkor az USBről kapná a PIC is az áramot. (a föld mindenképp rá lenne csatolva a PICre)” Tegyel inkabb be egy diodat...
Természetesen ott lenne egy tranzisztor, és az kapcsolná.
A nem kell ide semmi trükk alatt mire gondolsz? Hogy gond nélkül rádughatom egy feszültség alatt lévő PICre az USB-t, és nem lesz tőle semmi baja? (mert mi annó azt tanultuk, hogy nem szabad ilyet csinálni) "Ize, tudom lenni sokat kulfold, felejteni sokat magyar de ez mit jelent?" Ez jelenteni nem füstölni ˇ-ˇ
Nezd meg a Tips 'n Tricks - Low Power doksit, 7.1 abra... Az elem itt az USB lenne...
Idézet: „high priority interuptra teszed ezt a funkciot, minden mas low priority-n van, ha ezt igy meg lehet oldani?” Valószínűleg ez lesz belőle! Köszönöm az észrevételeket.
Köszönöm szépen neked is, és wattnak is
Ha két tápegységet szembekötsz, akkor nem a PIC fog "elposszanni"!
Az Arduino Duemilanove esetében FET-es kapcsolóval és analóg komparátorral oldották meg a védelmet. Elég bonyolult megoldás, én inkább egy Schottky-diódával csinálnám.
PWM modullal ez a következőképpen nézne ki:
A PWM modulnál mindig (mondjuk ECCP-nél ez állítható) a periódus elején van a beállított magas szint, és utána alacsonyra vált. Tehát ha beállítasz, hatszor egymás után maximális kitöltési tényezőt, majd utána a hetedik ciklusra egy valamekkorát, akkor a kimeneten egyetlen hosszúidejű magas szintet fogsz majd látni, ami a hat teljes és a hetedik valamekkora szélesség összege lesz.
(mondjuk ha unsigned akkor lehet tulcsordul a kivonast kovetoen, es akkor az if eleg ritkan lesz igaz -- de nyilvan nem ez a lenyeg most)
Az en problemam inkabb az, hogy mi van pontosan 1024 ill 1025 eseteben? Merthogy az interrupt latency miatt mar eleve a PWM-et nem lehet idoben beallitani. Vagy ezt hogyan lehetne kikuszobolni?
Amit adott pillanatban beállítasz a PWM-re kitöltési tényezőnek, az csak a timer2 következő túlcsordulásakor lép majd életbe, és onnan kezdődik az 1023 szélességű impulzus. Tehát mindig van közel egy periódusnyi időd macerálni a kitöltési tényezőt, ami majd a következő periódusban lesz csak érvényes.
Persze ki kell próbálni szimulátorban néhány konkrét értékre, de elvileg működnie kell
Köszönöm, ez érdekes javaslat! Majd kipróbálom.
Idézet: „Amit adott pillanatban beállítasz a PWM-re kitöltési tényezőnek, az csak a timer2 következő túlcsordulásakor lép majd életbe, és onnan kezdődik az 1023 szélességű impulzus. Tehát mindig van közel egy periódusnyi időd macerálni a kitöltési tényezőt, ami majd a következő periódusban lesz csak érvényes.” Aha, hmm, szoval akkor valami ilyesmire gondolsz?
A második ágban a PWM feltöltését és a hátralévő számolását nem kellene felcserélni?
Nem tudom Ugy gondoltam, hogy epp az a lenyeg, hogy meg mielott 1024 ala csokkenne a szam be kell allitani a PWM (hatar regiszter) erteket, es az majd a kovetkezo PWM ciklusban, a timer ujboli tulcsordulasanal "lep eletbe". Tehat ha mar 1024 alatt van akkor mar keso lenne beallitani. Tehat 2048 es 1024 kozott meg egy utolso teljes 100%-os periodust megcsinal, majd jon egy ujboli interrupt es kozben elkezdi a beallitott duty cycle-t. Az interruptnal meg megint csak a PWM kikapcsolasat kell megoldani mivel akkor mar a "hatralevo" 1024 alatt van.
Egyre bonyolultabban magyarazom, de mindegy, remelem ertheto mire gondolok
Ja, látom már a szándékot. Kíváncsi lennék, a gyakorlatban hogy muzsikál ez a megoldás.
Lenne még egy észrevételem az LCD-s oszcilloszkóppal kapcsolatban, amit nem értek! Ha nem indítom be egy pár napig akkor nagyon nehezen indul el.Viszont ha elindult ,és utána kikapcsolom már könnyen indul.Ezt már több alkalommal is megfigyeltem.Ha alacsonyabb frekvenciájú kvarcal próbálnám használni, gondolom nem lennének jók az időalapok.Viszont a gyártó tényleg csak 20MHz-ig javasolja az óra frekit.Esetleg lenne valakinek javaslata, mit lenne legcélszerűbb tenni?Előre is köszönöm a segítséget.,
Szervusz!
- Bekapcsolás után már meleg a PIC és kicsivel gyorsabb lesz, ami már elég az újrainduláshoz... - Esetleg egy másik PIC-kel is ki kellene próbálni, hátha az egy kicsit gyorsabb lesz és könnyebben fog indulni. - Vagy talán egy másik sorozatbéli 24 MHz-es kvarccal is meg lehet próbálni, ki tudja? Üdv. P István Ui. Amúgy menyire használható ez a szkóp?
A kvarc melletti kondenzátorokat próbáld kicsivel nagyobbra vagy kisebbre cserélni, hátha segít.
Köszi, majd megpróbálom ezeket a dolgokat.Nem tudom mennyire lesz használható.Nekem az tetszik benne, hogy elemről is működik.És nagyon kicsi méretben elkészíthető.Pár változtatást eszközöltem a tápegységen.A +5voltból csinálom a -5voltot egy MAX660-al.A lehető legnagyobb LCD-t vettem meg hozzá ami megfelel felbontásban.Remélhetőleg fogom is tudni használni.Gondolkodom rajta, hogy a TL082 kicserélem valami precízebb OPA sorozatúra.Egyenlőre még az indítási problémával görcsölök.
A proteus VSM-et honnan tudom letölteni?
Csak a demojat lehet letolteni -- a teljes verzioert fizetni kell...
Károgás helyett a Keresőt javaslom.
Belinkelnéd, melyik szkópról van szó? Köszi!
Sziasztok!
Adott az alábbi feladatom: - PPM jel előállítása egy tömb értékeinek megfelelően - menüvezérlés - A/D átalakítás tehát egy RC távirányító. A gondom a PPM jel előállításánál van. A timer1-t használom a belső oszciról és sajnos nem pontos a dolog, szukóppal mérve. A keretidő csúszkál annak megfelelően, hogy épp hány csatorna van bekapcsolva. Mit rontok el? Mi lehet a probléma? Lehet hogy túl sok feladatot kell végrehajtania a megszakítás során és beéri magát? El fogja bírni mindezt egy 18-as PIC 20MHzes oszcival azok ismeretében, hogy az A/D átalakításra kb 100us-ként kerül sor és a menükezelés(gombok állapotainak lekérdezése) meg 10ms-onként? és ezek alatt végig kiküldöm a PPM jelet? Mellékelve küldöm a PPM előállításáért felelős kódot. Előre is köszönöm a segítséget! Zsolti Idézet: „El fogja bírni mindezt egy 18-as PIC 20MHzes oszcival azok ismeretében, hogy az A/D átalakításra kb 100us-ként kerül sor és a menükezelés(gombok állapotainak lekérdezése) meg 10ms-onként? és ezek alatt végig kiküldöm a PPM jelet?” Ne viccelj mar! Ezt egy 10F200-assal megcsinalom (na jo, AD atalakitas miatt 10F220 ) Anno 10F202-vel csinaltam egy ket csatornas szervo szignal szurot... De komolyra forditva a szot, most nincs idom tuzetesebben elemezni a kodoat mit csinal -- jobb lenne ha leirnad vagy lerajzolnad mi a lenyege, mit szeretnel, vagy majd este kibogaraszom. A lenyeg az lenne, hogy 20ms-enkent kell egy megszakitas (ha mar megszakitasokkal oldjuk meg) es az inditja a folyamot az elso csatornatol. Kiadod az impulzust es kozben beallitod a timert, hogy a megfelelo idoben ismet megszakitast generaljon majd kilepsz az ISR-bol. Mikor bejon a megszakitas, akkor ismet ugyanez a kovetkezo csatornaval es igy tovabb... Kenyelmesen ezt ket timer felhasznalasaval lehet megoldani, az egyik adja a 20ms megszakitasokat, a masik a csatorna megszakitasokat. Alternativakent egy timert hasznalsz es statusz gepet es a 20ms keretidobol levonogatod a csatorna idoket -- valamennyit lehet igy is maszkal de ezeknel az RC szervos berendezeseknel nem kell halal pontosnak lenni, nem erzekenyek a periodus idore. |
Bejelentkezés
Hirdetés |