Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   470 / 1211
(#) progee válasza usane hozzászólására (») Dec 21, 2013 /
 
Az nem volt világos, hogy a tápfesz elvesztésekor, milyen elemre kapcsol át.
Az elemre egy óra miatt van szükség, ami alvó módban is működne a T1OSO-T1OSI lábakra kötött külső óra kvarccal. Erre pedig kondenzátoros megoldás nem jó. Akár egy egész hétvégén keresztül működnie kellene róla az órának.
(#) Pali79 válasza progee hozzászólására (») Dec 21, 2013 /
 
Nézd meg a cikkek közt az Overkill nixie csöves órát. Van benne gombelem, amiről megy áramkimaradás esetén.
(#) vicsys válasza Pali79 hozzászólására (») Dec 21, 2013 /
 
Gombelem nincs benne. Az akksi.
progee!
Erre találták ki az RTC-t. Na az tényleg gombelemről megy, akár 3 évig!
(#) Vacok válasza Vacok hozzászólására (») Dec 21, 2013 /
 
Sikerült életre keltenem az égetőt. Az előző hozzászólásba elírtam, nem a 2-es 3-as lábat kötöttem össze, hanem a 2-es 10-es lábat. Mindegy, végül is már a program felismeri az égetőt, a probléma ott van, hogy programozni nem akar. Egy hibaüzenetet ír ki. Hogyan lehet orvosolni a problémát?

WinPic800.JPG
    
(#) Balagemann2031 hozzászólása Dec 21, 2013 /
 
Sziasztok! Szeretnék kikérni pár véleményt arról, hogy egy Quadro copter-hez, milyen teljesítményű PIC-et válasszak? A feladat amit meg kellene oldani az 3+1 szenzor (giro, accelero,compass +pressure) adatainak feldolgozása I2C kapcsolattal, egy wireless adó vevő SPI-kapcsolattal, és az ESC-k vezérlése. Neten találtam egy szerkezetet, aminek a leírásában ARM 32 bites proci volt (100MIPS)... Én örülnék ha meg tudnám oldani valamelyik 18F es család tagjával, mert nem szeretnék még 24F esekkel foglalkozni (túl sok újdoság van benne) Szerintem kell lennie 18as családban is erre megfelelőnek. Assemblyben progizok, és a 24F eshez már C illene, ez a fő gond.
Tehát a kérdés, hogy van-e olyan 18F es PIC (ha tud valaki konkrét típust ajánlani ne kíméljen) ami 12MIPS-nél erősebb és megfelelő lehet?
(#) icserny válasza Balagemann2031 hozzászólására (») Dec 21, 2013 /
 
Idézet:
„Tehát a kérdés, hogy van-e olyan 18F es PIC (ha tud valaki konkrét típust ajánlani ne kíméljen) ami 12MIPS-nél erősebb és megfelelő lehet?”
Van, hiszen a 64 MHz-es PIC18-ak (pl. PIC18F25K22) 16 MIPS-esek. Hogy megfelelő-e azt nem tudom, hiszen nincs specifikálva a hardver követelmény (pl. a szenzorok kiolvasása milyen gyakorisággal esedékes, s milyen követelmények vannak a feldolgozást illetően).

Mindenesetre inkább a PIC32 kategóriától várható el, hogy összemérhető teljesítményt nyújtson egy 32 bites ARM mikrovezérlővel összehasonlítva.
(#) Balagemann2031 válasza icserny hozzászólására (») Dec 21, 2013 /
 
Köszönöm, a 2MSSP modul az pont jó, viszont a 64MHz nem biztos hogy elég lesz, ha real time akarom vezérelni a ESC-ket a szenzorok adatai alapján. Bár úgy látom hogy 16MIPS a 18F esek felső határa
A hozzászólás módosítva: Dec 21, 2013
(#) Zsora válasza Balagemann2031 hozzászólására (») Dec 22, 2013 /
 
A PIC24F kitűnően programozható assemblyben, sokkal jobban mint egy PIC18. Csak épp az a baj hogy azok is csupán 16MIPS teljesítményűek. Ajánlott ennél nagyobbat nézni.
Egy kis összehasonlítás:
PIC24F: 16MIPS
PIC24H: 40MIPS
PIC24E: 70MIPS
dsPIC30F: 30MIPS
dsPIC33F: 40MIPS
dsPIC33E: 70MIPS
Ennél többre - Microchip vonalon - csak a PIC32 képes. Na... azt már nem biztos hogy szeretnéd assemblyben programozni.
(#) Balagemann2031 válasza Zsora hozzászólására (») Dec 22, 2013 /
 
Szia! A 24E széria 70MIPS-e elég impozáns Olvasgatom Icserny PIC-kwik oldalát, amíg megérkeznek a Quadrohoz az alkatrészek (1-2 hónap), addig csak megtanulom használni... Bár fura hogy ennyi WREG-gel kell dolgozni.
(#) icserny válasza Balagemann2031 hozzászólására (») Dec 22, 2013 /
 
Idézet:
„Bár fura hogy ennyi WREG-gel kell dolgozni.”
Nem lesz ennyire fura, ha rájössz, hogy a PIC18 mutatóinak (FRS0, FRS1, FSR2) és a veremtár mutatónak (STKPTR) a szerepét is ezek látják el.
(#) Balagemann2031 hozzászólása Dec 22, 2013 /
 
Egyébként találkozott már valaki olyan hibával, hogy a CDC-terminál bejövő adat ablaka fekete alapú, amin a poén kedvéért feketén jelennek meg a karakterek, és csak úgy látom, ha egérrel kijelölöm? Eddig így használtam, de gondoltam megkérdezem hátha van rá gyógymód...

cdc.jpg
    
(#) icserny válasza Balagemann2031 hozzászólására (») Dec 22, 2013 /
 
Windows 7 alatt láttam ilyet. Újra kell fordítani...
(#) c27 hozzászólása Dec 22, 2013 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni. Hogy lehet megcsinálni asm-ben, hogy mondjuk egy 8 bites változó értékét szét akarom bontani 2 másik változóba, úgy hogy az egyik változó elején legyen 4db 0 és utána az adott változó felső 4 bitje, a másik változóba ugyan így 0000 és utána a változó alsó 4 bitje.
PL. adott 10111001 ezt kéne így szétbontani 00001011 és 00001001. A forgatással nem jó, mert ugyan így beforgatja az elejébe a számokat és fontos lenne hogy az első 4 bit nulla legyen, de lehetőleg ne úgy hogy egyesével nullázzam ki a felső 4 bitet. Valami egyszerű megoldás érdekelne, nem tudom van e erre valamilyen parancs mert én nem találtam sima shiftelést.
(#) nedudgi válasza c27 hozzászólására (») Dec 22, 2013 /
 
A swapf utasítás felcseréli a változó két félbájtját. Utána andwf utasítással ki lehet maszkolni a felső biteket
  1. ;
  2.  swapf var1,w
  3.  movwf var2
  4.  movlw 0x0F
  5.  andwf var1,f
  6.  andwf var2,f
(#) c27 válasza nedudgi hozzászólására (») Dec 22, 2013 /
 
Aha ez jó lesz, kösz.
(#) kissi válasza c27 hozzászólására (») Dec 22, 2013 /
 
Idézet:
„A forgatással nem jó, mert ugyan így beforgatja az elejébe a számokat és fontos lenne hogy az első 4 bit nulla legyen”
A forgatásnál lehet carry-vel forgatni ( 18 alatt tudtommal csak azzal ! ), így ha megfelelő időben nullázod a CY-t, akkor azt kapod, amit akarsz !Persze a swapf is nagyon jó utasítás ... !
(#) gaspar_zsolt hozzászólása Dec 22, 2013 /
 
Megint egy kis segítséget kérek a PWM szervo vezérléssel kapcsolatban.
A motor két szélső pozíciója 9 és 35 közötti értékek esetén áll be, emiatt a 26 pozícióérték miatt a motor lépked mint egy óra másodperc mutatója, amikor átállítom lassú menetben.
Én meg azt szeretném, hogy ez a mozgás ennél folyamatosabb legyen.
Mit tehetek?
Segíthet a PWM frekvencia emelése? A motoroknak elméletileg 50-60Hz kell...emiatt jön ki a viszonylag kis felbontás.

Meg lehet növelni ezt a felbontást valahogy? Jó lenne ha 100 környékére fel lehetne tornászni.

Köszi.

nem leszek már annyira szkeptikus!
A hozzászólás módosítva: Dec 22, 2013
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 22, 2013 /
 
Szia!

Ha jól láttam, 8 bites felbontást használsz a PWM-nél is, meg az A/D-nél is. Emeld fel 10-re. Egész egyszerű. Az ADRESL felső két bitjét írd be a CCP1CON<5:4> bitjére.
Lehet, hogy jobb poti kell, de ezzel egészen finoman lehet állítani a duty-t. Négyszeresre nő a beállítás finomsága.
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 22, 2013 /
 
Szia,

igen, csak 8 bitet használtam fel mindkettőből és azt írtam be.
Ezzel a 10bitre emeléssel megnövekszik négyszeresre? Akkor az eddigi 26-ból lesz 100??
Akkor meg is van a szükséges lépésköz!

Az A/D-nél jól teszem, ha hagyom left justified-on, ugye? És azokat a biteket írom a PWM-be?

Na ezt el is kezdem megírni.
Köszi

Eredményről referálok!
A hozzászólás módosítva: Dec 22, 2013
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 22, 2013 /
 
Még azzal javíthatsz a kezelés finomságán, hogy a poti teteje és a táp közé beraksz egy kb. kétszeres ellenállást. Ezzel azt éred el, hogy a poti teljes végkitérése úgy 0-85 érték között lesz.

A négyszeres növekedést úgy számold, hogy 9-9,25-9,50-9,75...35 lesz az érték és a kitöltési tényező is. Vagyis sokkal finomabb állítási fokozatokat kapsz.
Ha az ellenállást is beteszed, kényelmesebb lesz használni a potmétert.

Ja, persze hagyd left-en. Arra írtam én is a javaslatot.
A hozzászólás módosítva: Dec 22, 2013
(#) janimester hozzászólása Dec 22, 2013 /
 
Ha már itt tartunk hogyan tudom azt megoldani hogy ne másszon el az adc értékem amivel feszültséget mérek pár perc után? Potmétererrel beállítom pontosan a műszerem , majd pár perc mulva látom elmászott pár tizedet. És aminek meg mérné a feszültségét az adott adc láb ha ráteszem a terhelést pont hogy fölfele kezd el mászni a feszültség mikor esnie kéne.. ezt nem értem miért csinálja.
(#) Prendick válasza janimester hozzászólására (») Dec 22, 2013 /
 
Használj valamilyen feszültség-referenciát az A/D-hez. Valószínűleg nem elég stabil a tápod és mivel az A/D ahhoz viszonyít, elmászik.
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 23, 2013 /
 
Jól értem, hogy a CCP1CON<5:4> bitje adja majd a beállítások után a 0.25-ös növekményt az eddigiekhez képest?

Az ellenállást a középláb és a Vdd közé kell kötni vagy a földre?
Hogy lesz kényelmesebb használni? Ezzel módosítom a kimenő ellenállását, azt értem.
Most egy 10k-s forgó potméter adja az A/D-hez a fesz.t! Eszerint még kell egy 20k-s.
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 23, 2013 /
 
Úgy lesz 10 bites a PWM felbontása, hogy a szokásos nyolc bit kiegészül azzal a kettővel. Az ellenállást meg a potival kell sorbakötni. Ezzel azt éred el, hogy a potméter szélesebb skáláját használhatod. Most a 9-35 között épp csak pár fokot fordul. Tehát táp, poti felső pontja, középső láb a pic-re, a poti alsó pontja a földre. Persze ha kell a 100% kitöltés (255), akkor ne tegyél ellenállást.
De próbáld ki, mert egyszerűbb megnézni, mint körbeírni.
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 23, 2013 /
 
Jaj, akkor értem mire gondoltál! Most is a teljes tartományt használom egy 16-os osztással, 4xRRF rotációval, így a finombeállítás a potméter pontatlanságát is kiküszöbölte.
Ráadásul ugye a középálláshoz képest adtam hozzá és vettem el a két szélső állást.

Arra gondoltam, hogy próbaképpen először a PWM CCP1CON<5:4> biteket berakom a programba lépésenként 00-01-10-11 egy segédszámlálóba. Ha ez lefutott, léptetem a CCPR1L regisztert.
Valahogy így:

  1. ;----------------------------------------------------------------------
  2. ;ez lesz a CCP1CON regiszterben az LSB számlálója
  3.  COUNTER_UP
  4.         MOVLW        B'11001111'
  5.         BCF             STATUS,RP0                      ;Bank0
  6.         ANDWF         CCP1CON,F                
  7.         CALL         SWITCH_SPEED
  8.         BSF             CCP1CON,4
  9.         CALL         SWITCH_SPEED
  10.         BCF             CCP1CON,4
  11.         BSF             CCP1CON,5
  12.         CALL         SWITCH_SPEED
  13.         BSF             CCP1CON,4
  14.         RETURN
  15.  
  16. COUNTER_DOWN
  17.         BCF             STATUS,RP0                      ;Bank0
  18.         BSF             CCP1CON,4
  19.         BSF             CCP1CON,5
  20.         CALL         SWITCH_SPEED
  21.         BCF             CCP1CON,4
  22.         CALL         SWITCH_SPEED
  23.         BSF             CCP1CON,4
  24.         BCF             CCP1CON,5
  25.         CALL         SWITCH_SPEED
  26.         BCF             CCP1CON,4
  27.         RETURN
  28. ;----------------------------------------------------------------------
(#) janimester válasza Prendick hozzászólására (») Dec 23, 2013 /
 
Értem, vannak ezek a to92-es TL feszültség referencia tranyók, azt lehet használni külső referencia forrásként 18f4550-nél szerinted?
(#) gaspar_zsolt válasza Prendick hozzászólására (») Dec 23, 2013 /
 
Feltöltöttem a PIC-be és működik a finom mozgás, úgyhogy a program részlet is beváltotta a hozzáfűzött reményeket!
Köszi a tippet!
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 23, 2013 /
 
A tényleges megvalósítás már a programod komplexitásának függvénye. Innen nem látom az extrákat
A topic címének megfelelően a klasszikus alapfelállásra (egy poti 0-5V között, egy PWM 0-100% között, aztán az A/D értékének sima átírása a PWM-be) írtam a javaslatot. Természetesen,ha ezen már túl vagy, nem kell foglalkozni a potis résszel.

A PWM-nél valami hasonlóra gondoltam. Sajnos a jóságát ennyiből nem tudom megítélni, nem látom, hogy kapcsolódik a duty beállítása az A/D olvasásához. Ha nincs szinkronban a kettő, túl gyors lesz a finombeállítás és ott maradsz ahol voltál. (Nem tudom mit csinál a SWITCH_SPEED rutin.)
(#) Prendick válasza gaspar_zsolt hozzászólására (») Dec 23, 2013 /
 
Akkor feleslegesen aggódtam.
(#) Prendick válasza janimester hozzászólására (») Dec 23, 2013 /
 
Jó a TL, de számolgatni kell a beállítását és ellenállásokal beállítani az értékét. Jobban jársz egy ilyennel: MCP 1541. Ez minden macera nélkül betehető és összesen egy darab kondenzátor kell neki. Lényeges, hogy ne legyen 1-2cm-nél messzebb a PIC Vref lábától (RA3/AN3/VREF+).

Az a másik előnye, hogy 4,096V a feszültsége, vagyis A/D konverziónál nem kell sokat számolgatni, amit kiolvasol egy konverziónál, annak a sima szorzata lesz a feszültségérték, nem kell sokat számolgatni és kerekíteni, mint 5V-os referenciánál. Ha sima 8 bites konverziót használsz, egyszerűen meg kell az értéket szorozni 8-al és megvan a Volt. Példa: ADRESH=169, 169*8= 1352, U=1,352V. 10 bitesnél meg 4-el kell szorozni.
Könnyebb programozni assembly-ben, de C-ben is.

Úgy 1% a pontossága. Ha meg nagyon pontosat akarsz, használj REF198-at. Igaz, annak már szép ára is van. Ezek már akkor se másznak el, ha fél voltokat leng a tápod.
A hozzászólás módosítva: Dec 23, 2013
Következő: »»   470 / 1211
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