Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   631 / 1319
(#) potyo válasza Attila86 hozzászólására (») Dec 29, 2009 /
 
A True RMS szerintem csak annyi, hogy négyzetreemeled az értékeidet, összeadod, elosztod ahány értéked van, majd négyzetgyököt vonsz belőlük. Tehát ha egyben nincs is ilyen szubrutin, részleteiben létezik, csak össze kell állítani. Szorzás az van hardverből, összeadás megy, osztás lehet balrashifteléssel, ha kettő egész számú hatványával egyező számú minta van. Négyzetgyökvonásra meg vannak algoritmusok.
(#) Attila86 válasza potyo hozzászólására (») Dec 29, 2009 /
 
Idézet:
„Négyzetgyökvonásra meg vannak algoritmusok.”

Na, ilyet tudsz nekem mutatni? Vagy honnan lehet vadászni ilyen algoritmusokat?
(#) valaki2 hozzászólása Dec 29, 2009 /
 
Köszönöm a választ.

Háát néztem egy neten talált kódrészletet, és abban volt. De mivel a kód nekem nem volt jó, már félre tettem.
(#) Attila86 hozzászólása Dec 29, 2009 /
 
Ha az A/D konverzióhoz külső referenciaforrást használok, akkor a referenciafeszültség értéke mennyire kritikus? 5V-ról megy (majd) a PIC, ha 4,096V-ot adok a referenciának (12 bites az A/D-je) akkor 4,096V lesz a méréshatárom. De ha kisebb a referencia, akkor a 'végkitéréshez' elegendő kisebb mérendő jel is. Ez nekem ugyebár jó, mert mondjuk árammérés esetén kisebb söntöt is használhatok. De ennyi erővel adhatnék tízszer, vagy százszor kisebb referenciát is...
Szóval az a kérdésem, hogy van-e valami határ? A referenciafeszültség (és egyben a bemenő feszültség) nagysága és az A/D átalakító hibája közt van összefüggés? Gondolom azért 40,96nV referenciával csak nem fog nekem pV-okat mérni...
(#) Attila86 hozzászólása Dec 29, 2009 /
 
Olvasgatom az adatlapot... Az A/D linearitáshibája +-1,5 LSb, offsethibája +-5 LSb...
Akkor miért írják rá azt hogy 12 bites az A/D-je, ha az utolsó 1-2 bit nem ér semmit?!
(#) Hp41C válasza Attila86 hozzászólására (») Dec 29, 2009 /
 
Szia!

A felhasznált pic adatlapján, az elektromos jellemzők között található az A/D minimális referencia feszültség értéke (kb. 2 - 2.5V).

12 bit felbontáshoz átgondolt tervezés, szétválasztott analóg és digitális földrendszer kell, ami csak a tábegységnél van egy pontban összekötve....

Szia
(#) Attila86 válasza Hp41C hozzászólására (») Dec 29, 2009 /
 
Igen, közben meg is találtam. Ez lenne az?
(#) Attila86 válasza Hp41C hozzászólására (») Dec 29, 2009 /
 
Idézet:
„12 bit felbontáshoz átgondolt tervezés, szétválasztott analóg és digitális földrendszer kell, ami csak a tábegységnél van egy pontban összekötve....”

Tudom jól... az elektronikai rész nem fog gondot okozni.

Szia!
(#) icserny válasza Attila86 hozzászólására (») Dec 29, 2009 /
 
Idézet:
„Vagy honnan lehet vadászni ilyen algoritmusokat?”

Ott van az MCC18 telepítési könyvtáradban!!!
(#) icserny válasza Attila86 hozzászólására (») Dec 29, 2009 /
 
A maximális hiba szélsőséges esetekre vonatkozik, amit el lehet kerülni (pl. ha szobahőmérséklet közelében maradsz). A megmaradt hibák egy része pedig gondos kalibrációval, és bonyolult korrekciókkal figyelembe vehető. Már ha megéri a veszkődést...
(#) Magashegyi hozzászólása Dec 30, 2009 /
 
Üdv mindenkinek MCC18-as fordítót használok és nem tudok egynél több timer interruptot használni.
  1. void timer_isr(void);
  2.  
  3. #pragma code low_vector=0x18
  4. void low_interrupt(void)
  5. {
  6.     _asm GOTO timer_isr _endasm //
  7. }
  8.  
  9. #pragma code
  10.  
  11. #pragma interruptlow timer_isr
  12. void timer_isr()
  13. {
  14.     INTCONbits.TMR0IF = 0;
  15.     .......
  16. }
  17.  
  18. void main ()
  19. {      
  20.  
  21.     OpenTimer0 (TIMER_INT_ON & T0_SOURCE_INT & T0_16BIT & T0_PS_1_4);
  22.     INTCONbits.GIE=1;
  23. }


Ezt hogyan kellene átalakítani úgy hogy mondjuk a timer1-et is használni tudjam?
(#) potyo válasza Magashegyi hozzászólására (») Dec 30, 2009 /
 
  1. pragma interruptlow low_isr
  2. void low_isr()
  3. {
  4.         if (INTCONbits.TMR0IF)
  5.         {
  6.                 INTCONbits.TMR0IF=0;
  7.                 .....
  8.         }
  9.         if (PIR1bits.TMR1IF)
  10.         {
  11.                 PIR1bits.TMR1IF=0;
  12.                 .....
  13.         }
  14. }
(#) Magashegyi válasza potyo hozzászólására (») Dec 30, 2009 /
 
Köszönöm a gyors választ!!
(#) trudnai válasza Magashegyi hozzászólására (») Dec 30, 2009 /
 
Egyszeruen le kell kerdezni mi miatt tortent az interrupt:
  1. #pragma interruptlow timer_isr
  2. void timer_isr()
  3. {
  4.     if(INTCONbits.TMR0IF)
  5.     { //TMR0 tulcsordulas megszakitas?
  6.         INTCONbits.TMR0IF=0; //megszakitas jelzo torlese
  7.         ........
  8.     }
  9.  
  10.     if(PIR1bits.TMR1IF)
  11.     { //TMR1 tulcsordulas megszakitas?
  12.         PIR1bits.TMR1IF=0; //megszakitas jelzo torlese
  13.         ........
  14.     }
  15. }


Interruptok engedelyezese valahogy igy:
  1. INTCON=0;                   //globalis megszakitas tiltasa
  2.     INTCON2bits.TMR0IP=0;       //TMR0 LOW megszakitas prioritas
  3.     IPR1bits.TMR1IP=0;          //TMR1 LOW megszakitas prioritas
  4.     RCONbits.IPEN=0;            //prioritasi szintek tiltasa
  5.  
  6.     WriteTimer0(0);
  7.     WriteTimer1(0);
  8.  
  9.     OpenTimer0( TIMER_INT_ON     &     //megszakitas engedelyezes
  10.                 T0_SOURCE_INT    &     //Belso ora hasznalata
  11.                 T0_16BIT         &     //16-bites mod
  12.                 T0_PS_1_8);            //1:8 elooszto
  13.  
  14.     OpenTimer1( TIMER_INT_ON     &     //megszakitas engedelyezes
  15.                 T1_16BIT_RW      &     //16-bites mod
  16.                 T1_SOURCE_INT    &     //Belso ora hasznalata
  17.                 T1_PS_1_1        &     //1:1 elooszto
  18.                 T1_OSC1EN_OFF    &     //Timer1 oszcillator tiltasa
  19.                 T1_SYNC_EXT_OFF);      //Ne szinkronizaljon
  20.  
  21.     INTCONbits.GIEH=1;  //enable HIGH interrupts priority
  22.     INTCONbits.GIEL=1;  //enable LOW interrupts priority
(#) Tüske hozzászólása Dec 30, 2009 /
 
Helló!

Egy SPI függvényt szeretnék irni c-be. A forditom (mcc) könyvtárában vannak gyári függvények. Olyant szeretnénk irni, hogy irjon ki egy adatot egy másik eszköznek és a függvényem visszatérési értékként az eszköz válaszát adja.

Ha jól tudom, akkor SPI buszon kiirom az adatot, akkor a shift regiszteres elv miatt a válasz az írás után az SSPxBUF-ba lesz.
A WriteSPI()-l kitudom irni az adatot, de beolvasni?? Akkor ahhoz ki kell adnom a ReadSPI()-t is?

(#) icserny válasza Tüske hozzászólására (») Dec 30, 2009 /
 
Idézet:
„A WriteSPI()-l kitudom irni az adatot, de beolvasni??”

Alig néhány napja volt szó erről.
(#) Attila86 hozzászólása Dec 30, 2009 /
 
Az MCLR lábat hogyan tudom bemenetnek használni? Oda van kötve az ICSP is. Ha egy nyomógombot teszek rá, hogyan kössem be hogy működjön is és programozni is tudjam a tokot?
(#) icserny válasza Attila86 hozzászólására (») Dec 30, 2009 / 1
 
Ezen az oldalon a 2. ábrát nézd meg. Ha biztos vagy benne, hogy programozás közben nem nyomod meg a nyomógombot, akkor az 1 kOhm elhagyható.
(#) Attila86 válasza icserny hozzászólására (») Dec 30, 2009 /
 
Köszönöm!

Másik kérdés: D/A átalakító nincs is a PIC-ben? (Nem találok erről információt az adatlapban.)
(#) El_Pinyo válasza Attila86 hozzászólására (») Dec 30, 2009 / 4
 
Szia!
A 8 bites architektúrájúakban nincs belső DAC!
Egyébként ezt ismered?
Nagyon meg tudja könnyíteni a uC választást.
Üdv.

Szerk.: Egyszerű DAC- ként lehet használni a belső Vref referencia feszültség modult, de a felbontása kicsi, és nem található meg minden uC-ben.
(#) icserny válasza Attila86 hozzászólására (») Dec 30, 2009 / 1
 
Egyik-másik dspic33-ban van csak (gagyi minőségű = zajos!) audio DAC. Pl. az általam is kultivált dsPIC33FJ128GP802-ben.

A másik lehetőség analóg jel keltésére: PWM + Low pass filter.

A harmadik lehetőség: külső DAC pl. SPI illesztéssel.
(#) Attila86 válasza El_Pinyo hozzászólására (») Dec 30, 2009 /
 
Most már ismerem, köszönöm!
(#) kissi válasza icserny hozzászólására (») Dec 30, 2009 /
 
Szerintem a táphoz kellene a DA, oda jó lenne véleményem szerint egy ellenálláslétra... (simítva egy kondival vagy pl. TI DA mintaként )!
Steve
(#) Attila86 válasza kissi hozzászólására (») Dec 30, 2009 /
 
Egy szorzó PIC-et gondoltam csinálni ami analóg feszültséget és analóg áramot szoroz össze és az eredményt analógban adja a kimenetére.

De végül is lehetne a szorzatot PWM jellé konvertálni és úgy kiadni egyetlen lábon, aztán egy integráló taggal analóg jelet csinálni belőle.
(#) kissi válasza Attila86 hozzászólására (») Dec 30, 2009 /
 
Ez tűnik "digitális megoldásnak" ( de a felbontás érdekes lehet)

Steve
(#) Attila86 válasza Attila86 hozzászólására (») Dec 30, 2009 /
 
Sajnos a PWM modul kezeléséről kevés irodalmat találtam, és az se túl beszédes...
Miért jó a PWM modul? Tud olyasmit hogy egy adott regiszter tartalmával arányos kitöltési tényezőjű jelet adjon ki folyamatosan, attól függetlenül hogy a PIC éppen hol tart a program futtatásában? Tehát mint például az időzítők, amik a 'háttérben' maguktól futnak, aztán ha épp szükségem van rájuk akkor kiolvasom, írom őket. Azt szeretném, hogy ne kelljen a PWM jel előállításával foglalkozni, hanem csak a kitöltési tényezőt kelljen megadnom néha. Szóval tud ilyet a PWM modul?
(#) kissi válasza Attila86 hozzászólására (») Dec 30, 2009 / 1
 
Persze, ez a lényege a hardveres perifériáknak. Beállítod és "magától" működik, adott esetben jelez és ha gondolod megteszed a megfelelő lépéseket! A PWM modul is ilyen: adott kitöltési tényezővel és frekvenciával dolgozik a háttérben a beállítások után!

Steve
(#) Hp41C válasza El_Pinyo hozzászólására (») Dec 30, 2009 /
 
Sziasztok!

A 8 bites pic-ek között van ill. volt olyan típus, ami rendelkezik belső 8 bites D/A -val: 16C781 és 16C782

Sziasztok
(#) El_Pinyo válasza Hp41C hozzászólására (») Dec 30, 2009 /
 
Köszönöm a pontosítást!
Ennyire régi típusokkal nem foglalkoztam, beszerezhetőségi nehézségek illetve ár/érték arányuk miatt.
Üdv.
(#) Attila86 válasza kissi hozzászólására (») Dec 30, 2009 /
 
Szuper!
És hány bites az PWM modulja a 18F2423-nak? Az adatlapját természetesen néztem, de nem vagyok benne biztos. Jól látom hogy 16 bites?
Mint írtam, nem túl sok használható irodalmat találtam a PWM modulról. De valami olyasmit olvastam, hogy ha mondjuk 25%-ra állítom be a kitöltési tényezőt, akkor nem az egész periódusidő negyedéig ((162*órajel)/4) ad ki H szintet aztán háromnegyed periódus-ideig L szintet, hanem kiad egy órajelnyi H szintet és három órajelnyi L szintet azért, hogy könnyebb legyen szűrni. Igaz ez?
Következő: »»   631 / 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