Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   573 / 1319
(#) trudnai válasza icserny hozzászólására (») Szept 15, 2009 /
 
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?

(#) Seclusion hozzászólása Szept 15, 2009 /
 
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á?
(#) watt válasza Seclusion hozzászólására (») Szept 15, 2009 / 1
 
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...
(#) trudnai válasza Seclusion hozzászólására (») Szept 15, 2009 / 1
 
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...
(#) Seclusion válasza watt hozzászólására (») Szept 15, 2009 /
 
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 ˇ-ˇ
(#) trudnai válasza Seclusion hozzászólására (») Szept 15, 2009 / 1
 
Nezd meg a Tips 'n Tricks - Low Power doksit, 7.1 abra... Az elem itt az USB lenne...
(#) watt válasza Seclusion hozzászólására (») Szept 15, 2009 / 1
 
Lásd trudnai válaszát...
(#) icserny válasza trudnai hozzászólására (») Szept 15, 2009 /
 
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.
(#) Seclusion válasza trudnai hozzászólására (») Szept 15, 2009 /
 
Köszönöm szépen neked is, és wattnak is
(#) icserny válasza Seclusion hozzászólására (») Szept 15, 2009 /
 
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.
(#) potyo válasza icserny hozzászólására (») Szept 15, 2009 /
 
PWM modullal ez a következőképpen nézne ki:

  1. unsigned hatralevo=kert_impulzus;
  2. timer2int       // timer2 megszakítási rutin
  3. {
  4.         if (hatralevo>1023)
  5.         {
  6.                 hatralevo-=1023;
  7.                 PWM beállítása 1023-ra, vagyis folyamatosan magas kimenő jelre
  8.         }
  9.         else
  10.         {
  11.                 PWM beállítása a hatralevo-nek megfelelő értékre
  12.                 hatralevo=0;
  13.         }
  14. }


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.
(#) trudnai válasza potyo hozzászólására (») Szept 15, 2009 /
 
(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?
(#) potyo válasza trudnai hozzászólására (») Szept 15, 2009 /
 
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
(#) icserny válasza potyo hozzászólására (») Szept 15, 2009 /
 
Köszönöm, ez érdekes javaslat! Majd kipróbálom.
(#) trudnai válasza potyo hozzászólására (») Szept 15, 2009 /
 
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?
  1. int hatralevo = kert_impulzus;
  2. timer2int ()
  3. {
  4.     if ( hatralevo >= 2048 ) {
  5.         hatralevo -= 1024;
  6.         PWM(100%);
  7.     }
  8.     else if ( hatralevo >= 1023 ) {
  9.         hatralevo -= 1024;
  10.         PWM(hatralevo); // PWM szeletke
  11.     }
  12.     else {
  13.         hatralevo = 0;
  14.         PWM(0%); // kikapcs
  15.     }
  16. }
(#) szilva válasza trudnai hozzászólására (») Szept 15, 2009 /
 
A második ágban a PWM feltöltését és a hátralévő számolását nem kellene felcserélni?
(#) trudnai válasza szilva hozzászólására (») Szept 15, 2009 /
 
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
(#) szilva válasza trudnai hozzászólására (») Szept 15, 2009 /
 
Ja, látom már a szándékot. Kíváncsi lennék, a gyakorlatban hogy muzsikál ez a megoldás.
(#) Beachway hozzászólása Szept 15, 2009 /
 
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.,
(#) p_istvan válasza Beachway hozzászólására (») Szept 15, 2009 /
 
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?
(#) potyo válasza Beachway hozzászólására (») Szept 15, 2009 /
 
A kvarc melletti kondenzátorokat próbáld kicsivel nagyobbra vagy kisebbre cserélni, hátha segít.
(#) Beachway válasza p_istvan hozzászólására (») Szept 15, 2009 /
 
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.
(#) frecsko válasza trudnai hozzászólására (») Szept 15, 2009 /
 
A proteus VSM-et honnan tudom letölteni?
(#) trudnai válasza frecsko hozzászólására (») Szept 15, 2009 /
 
Csak a demojat lehet letolteni -- a teljes verzioert fizetni kell...
(#) frecsko válasza trudnai hozzászólására (») Szept 15, 2009 /
 
Kár;(
(#) icserny válasza frecsko hozzászólására (») Szept 15, 2009 /
 
Károgás helyett a Keresőt javaslom.

kereso.png
    
(#) watt válasza Beachway hozzászólására (») Szept 15, 2009 /
 
Belinkelnéd, melyik szkópról van szó? Köszi!
(#) icserny válasza watt hozzászólására (») Szept 15, 2009 /
 
Erről volt szó, ha jól csalódom.
(#) lipkazs hozzászólása Szept 16, 2009 /
 
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
(#) trudnai válasza lipkazs hozzászólására (») Szept 16, 2009 / 1
 
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.
Következő: »»   573 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem