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   222 / 1211
(#) pucuka válasza kormika hozzászólására (») Márc 14, 2012 / 1
 
Differenciáló taggal tudsz a le-, és felfutó élekből keskeny impulzust alakítani. A felfutóból pozítívot, a lefutóból negatívot. Diódás szintillessztővel a negatívot át tudod tenni a pozitív tartományba. Ha szükséges némi inverteres jelformálás után használhatod az impulzust.
(#) kormika válasza pucuka hozzászólására (») Márc 14, 2012 1 /
 
Ez eszembe sem jutott :pirul: Annyiran profin akarom megoldani azt a jelfeldolgozósdit, hogy túlkomplikálom... :pirul: Köszi
(#) n_yálastrubadúr válasza pjg hozzászólására (») Márc 14, 2012 /
 
Az, hogy a C-s az azthiszem egyszer írható. Még az F az a Flash-rövidítése, az többször írható.
(#) n_yálastrubadúr hozzászólása Márc 14, 2012 /
 
Aztamindenségit!
Volt egy general a teljes gépen. Eltűnt a jelenlegi projektem, asm file-jai a projekt file-ok megvannak. A picecből visszaolvasva visszafordítva meglehet még a programom azzal az arccal ahogyan megvolt a balfsz lépésem előtt?
(#) potyo válasza n_yálastrubadúr hozzászólására (») Márc 14, 2012 /
 
Úgy nem, mert a változónevek, címkék, stb. nem lesznek meg, hanem csak memóriacímek lesznek a helyükön. Kivéve az SFR zónát, annak a nevei meglesznek, illetve, az utasításokat tudja visszafordítani.
(#) n_yálastrubadúr válasza potyo hozzászólására (») Márc 14, 2012 /
 
Igen , megnéztem ez így szinte követhetetlen. ááá. Najó végülis nyugvóponton van, azaz minden rendben csináltam is most azonnal másolatot ha valamelyikbe villám csapna, de a komolyabb beavatkozás, módosítás szerintem bajosabb mint újraírni az egészet.
(#) potyo válasza n_yálastrubadúr hozzászólására (») Márc 14, 2012 /
 
Nekem így áll a PS2-USB átalakító kódom. Maga a kód tökéletesen működik, viszont csak egy kontrollerben van meg, mert a forráskódot elvesztettem, amikor egyszer újratelepítettem a windows-t...
(#) vilmosd válasza pjg hozzászólására (») Márc 14, 2012 /
 
A 16C84 a 16F84 ose volt, es szinten tobbszor irhato. Le lehet tolteni a doksijat mind a kettonek. A 16C84 kisebb RAM memoriaval rendelkezik, de amugy elvileg egyezik a ketto.
(#) Balagemann2031 válasza potyo hozzászólására (») Márc 15, 2012 /
 
Szia, annyi volt a problémám, hogy az adatlapban valahogy nem találtam a 16F627A belső oszcillátor módot, de a dolog érdekessége, hogy a __config _INTRC_IO val lefordul, viszont a pickit2-m meggajdul tőle..Tehát, éetés után a konfiguráció miatt reklamál, utána pedig nem ismeri fel a picet, csak 3-4 újra csatlakozás és vakon törlés után. (már új pickitet akartam építni) De kipróbáltam más piccel és azt égeti rendesen... Lehet hogy nincs is belső rc oszcija a 627A-nak? Üdv!
(#) ferkoo válasza Balagemann2031 hozzászólására (») Márc 15, 2012 / 1
 
16F627A Internal oscillator 4MHZ [/quote];----- CONFIG Options --------------------------------------------------
_LP_OSC EQU H'3FEC' ; LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
_XT_OSC EQU H'3FED' ; XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
_HS_OSC EQU H'3FEE' ; HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
_EXTCLK_OSC EQU H'3FEF' ; EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT EQU H'3FFC' ; INTRC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
_INTRC_OSC_CLKOUT EQU H'3FFD' ; INTRC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
_ER_OSC_NOCLKOUT EQU H'3FFE' ; ER oscillator: I/O function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN
_ER_OSC_CLKOUT EQU H'3FFF' ; ER oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, Resistor on RA7/OSC1/CLKIN
(#) Balagemann2031 válasza ferkoo hozzászólására (») Márc 15, 2012 /
 
Köszi!
(#) matheattila hozzászólása Márc 15, 2012 /
 
Sziasztok,
az lenne a kérdésem, hogy hogyan lehetne azt megoldani aszinkron soros kommunikációval, hogy a PIC-ben egy beérkező adat által okozott megszakításkor a megszakítás rutinban kiolvasni azt az adatot majd vissza is küldeni és ezt a műveletet még 5-ször egymás után gyorsan megismételni ugyanabban a rutinban.
A számítógépen CVI-ban fut egy program ami folyamatosan szabályzojelet számol és küldi ki soros porton a PIC-nek (18F4620 + FT232), a küldés úgy megy, hogy kiküld egy bájtot, majd ha az vissza is jött akkor küldi a következőt ugyanígy (összesen 6 bájt).
Csak ezzel a módszerrel érkezik meg jól minden adat, ha csak úgy csináltam, hogy kiküldi egymás után a 6 bájtot és nem kér visszajelzést akkor gyakran elszállt a kommunikáció.
Azért szeretném, ha a megszakításban egymás után el tudnám végezni 6 beolvasást és visszaküldést, mert ha minden beérkező bájtra generálódik megszakítás akkor nagyon lelassul a kommunikácíó, mert a PIC-ben még sok megszakítás van és azokra is nagy szükség van (4 szervójel szoftveres PWM jel generálása 2 időzítővel, 2 AD konverzió 2ms-onként, szervójel "ramp"-elés egy harmadik időzítővel és a kommunikációs megszakítás).
Ebben szeretném a segítségeteket kérni.
A PIC programjának ezzel kapcsolatos megszakítása:
  1. else if (PIR1.RCIF)  //soros komm. megszakitas
  2.         {
  3.            PIE1.RCIE = 0;
  4.    
  5.            temp = RCREG;
  6.            if(temp == 's') i = 0;   //kezdo karakter
  7.            if(temp == 'i') t_x = 1; //ha a PC keri az ADC eredmenyt
  8.            else{
  9.              csomag[i] = temp;  //kezo karakter, majd 4 bajt
  10.              TXREG = temp;
  11.              i = i + 1;
  12.            }
  13.            if(temp == 'f') uart_rd = 1; //vegzo karakter
  14.    
  15.    PIE1.RCIE = 1;
  16. }

Ha az 'i' karakter jött akkor a PC kéri az AD konverziók eredményét, ha a t_x 1-es akkor a main-ben kiküldi azt.
A CVI ezzel kapcsolatos része:
  1. void adat_kuld()
  2. {
  3. GetCtrlVal (ftx, FTX_SZERVO1,&sz1);
  4. GetCtrlVal (ftx, FTX_SZERVO2,&sz2);
  5. GetCtrlVal (ftx, FTX_SZERVO3,&sz3);
  6. GetCtrlVal (ftx, FTX_SZERVO4,&sz4);
  7.  
  8. FlushInQ (com);
  9. FlushOutQ (com);
  10.  
  11. ComWrtByte (com, 's'); j = ComRdByte(com);
  12. if (j == 's') {ComWrtByte (com, sz1); j = ComRdByte(com);}
  13. if (j == sz1) {ComWrtByte (com, sz2); j = ComRdByte(com);}
  14. if (j == sz2) {ComWrtByte (com, sz3); j = ComRdByte(com);}
  15. if (j == sz3) {ComWrtByte (com, sz4); j = ComRdByte(com);}
  16. if (j == sz4) {ComWrtByte (com, 'f'); j = ComRdByte(com);}
  17. }

Előre is köszönöm.
(#) icserny válasza matheattila hozzászólására (») Márc 15, 2012 /
 
Idézet:
„szeretném, ha a megszakításban egymás után el tudnám végezni 6 beolvasást és visszaküldést”
Utánaszámoltál már, hogy ez mennyi idő? Gondolom, hogy nem, mert akkor már tudnád, hogy ez értelmetlenség.
(#) matheattila válasza icserny hozzászólására (») Márc 15, 2012 /
 
Értem, de így is nagyon lassú, mert a 6 egymás utáni csomag beolvasása és kiírása között is sok idő telik el (kb 100ms mire mind a 6 bájtot kiolvassa majd visszaküldi), és így nem tudom számítógépről vezérelni a szervók pozícióját.
Arról lenne szó, hogy egy távírányítós autóra tettem egy gyorsulásmérő szenzort és ezzel mérem az autó dőlésszögét a PC-n majd kiszámítja a vezérlőjelet a szervóknak és kiküldi azokat, ezáltal a 4 szervó mindig vízszintesen kellene tartsa az autót.
A kérdésem az, hogy akkor milyen módon tudnám megvalósítani a gyors kommunikációt?

IMG_3388.JPG
    
(#) trudnai válasza matheattila hozzászólására (») Márc 15, 2012 /
 
Ezt a programot ami a szenzorok allapotabol vezerli a szervot, azt kellene a PIC-be egetned, igy nincs is ehhez szukseged a PC oldalra... A PC-t hasznalhatnad iranyitasra inkabb, illetve ha kell parameterek feltoltesere, loggolasra -- pl a PIC felol a PC fele torteno kuldest (is) megoldhatod megszakitasosan, igy az nem blokkolja az alap funkciokat.
(#) matheattila válasza trudnai hozzászólására (») Márc 15, 2012 /
 
Megpróbálom esetleg úgy is, hogy a pic-ben legyen a szabályzás, de mivel ez lenne majd az államvizsga dolgozatom egyelőre PC-n kellett volna megvalósítani, a szenzorból érkező lejeket grafikusan ábrázolni, állományba menteni, többféle szabályzót implementálni és bizonyítani, hogy melyik a jobb.
Akkor arra nincs megoldás, hogy egy megszakításban tudjam lekezelni a 6 bájt beolvasását és visszaküldést?
(#) trudnai válasza matheattila hozzászólására (») Márc 15, 2012 / 1
 
Idézet:
„Akkor arra nincs megoldás, hogy egy megszakításban tudjam lekezelni a 6 bájt beolvasását és visszaküldést?”


Dehogynem! Byte-ot mikor elkuldod, akkor a kuldes ideje alatt csinalhatsz barmit is. Mikor az kiment kapsz egy megszakitast es elindithatod a kovetkezo byte-ot, es rogton vissza tersz meintcsak. Nem kotelezo ott varakozni.

A masik gondolat pedig, hogy a szervok 20ms-es keretei kozott mindig lesz annyi idod, hogy kiolvasd a szenzort, elkuldd a PC fele, es onnan vissza olvasd. Ha maskepp nem akkor minden keretben csak 1-et, igy 6 keret kell egy teljes korbefordulashoz. Ugy is elegendo lesz a sebesseg, hogy szabalyozhato maradjon a modelled... Megoldas mindig van mindenre...
(#) icserny válasza trudnai hozzászólására (») Márc 15, 2012 / 1
 
  1. Dehogynem!
Csak szólok, hogy te is a karakterenkénti megszakítást javasoltad. Tehát a helyes válasz: nincs.
(#) matheattila válasza icserny hozzászólására (») Márc 15, 2012 /
 
Hát akkor majd valahogy megoldom, s ha nem akkor így marad.
Köszönöm szépen a segítségeteket!
(#) matheattila válasza matheattila hozzászólására (») Márc 15, 2012 /
 
Azt hiszem megoldódótt a probléma, úgy néz ki, hogy nem teljesen a kommunikáció a hibás, hanem a CVI-ban a függvény hívás, ha az adat küldést egy függvényben (amit beillesztettem kicsivel fentebb) intézem el akkor van szó a belassulásról, ha visszont ugyanott küldöm ki az adatokat ahol a szabályzójelet számolom ki akkor szinte semmit nem lassul a szabályzás.
(#) logan8816 hozzászólása Márc 15, 2012 /
 
sziasztok dolgom akadt egy18f2550 es pic el
A PDFSUSB progi a PIC-et felismeri PICDEM FS USB 0 (Boot) eszközként.
olvasni tudom ,viszont mikor irni akarom bele a hex. fájlt a következö hibákat dobja:
usb write failed error -997:átlapolt I/O művelet van folyamatban
-Failed with error 6: a leiró érvénytelen.
olvasgattam az oldalon egykét választ rá de eddig még nem sikerült egyikkel se működésre birni
a segitségeteket elöre is köszönöm!
(#) adamhollos hozzászólása Márc 15, 2012 /
 
Sziasztok!

Két pic16f690 között szeretnék soros kommunikációt megvalósítani. Még soha sem csináltam ilyet. Tudnátok segíteni, hogy hogyan kezdjem el? Még azt sem tudom biztosan, hogy elég-e ha csak szimplán összekötöm az egyik rx-jét a másik tx-jével. Hi-tech C-ben szeretnék programozni.
(#) vilmosd válasza adamhollos hozzászólására (») Márc 15, 2012 /
 
Rovid tavon elegseges a sima osszekotes. Felkonfiguralod az UART-ot es gyi. Lehet irni a programot.
(#) adamhollos válasza vilmosd hozzászólására (») Márc 15, 2012 /
 
Hogy érted, hogy felkonfigurálom az uartot. Azt, hogyan kell csinálni? Nézem az adatlapot, de nem egészen értem, hogy akkor most meik registert kell piszkálnom.
(#) potyo válasza adamhollos hozzászólására (») Márc 15, 2012 /
 
Keresd a "To set up an Asynchronous Transmission" és a "To set up an Asynchronous Reception" kifejezéseket az adatlapban. Alattuk pontokba van szedve a szükséges beállítás.
(#) icserny válasza logan8816 hozzászólására (») Márc 16, 2012 / 1
 
A letölteni kívánt programot a Microchip USB stack MHCPUSB mintaprogramja mellett található rm18f4550 - MCHPUSB Bootload.lkr linker állománnyal kell fordítani - természetesen minden 4550 előfordulást 2550-re cserélve! A lényeg az alábbi sorokban van: eltolja a kódterületet 0x800 bájttal.
  1. CODEPAGE   NAME=boot       START=0x0            END=0x7FF          PROTECTED
  2. CODEPAGE   NAME=vectors    START=0x800          END=0x0x829        PROTECTED
  3. CODEPAGE   NAME=page       START=0x82A          END=0x7FFF


A RESET és interrupt vektorok áthelyezését az USB mintaprogramokból vagy a PICCOLO projektemből is ki lehet lesni.
(#) Pepebá hozzászólása Márc 16, 2012 /
 
Hali!
18F4550 PIC-el próbálkozom a PICCOLO project alapjain, I2C-n több LM75 hőszenzor és MCP23017 portbővítő (I=60/O=10). Online kommunikáció a PC-vel, CDC USB-vel, küldött adat feldolgozás és visszaküldés VB programmal.
Gyors impulzus számlálás miatt a B-port felső 4 bitjének figyelését megszakításba kellett tennem. Ekkor jelentkezett a problémám, amihez a segítséget kérem.
Ugyanis esetenként impulzus érkezéskor zavar támad a küldött adatokban és ez természetesen lehetetlené teszi a PC program működését.
Milyen megoldással oldható meg a probléma?
Üdv.
(#) icserny válasza Pepebá hozzászólására (») Márc 16, 2012 / 1
 
Idézet:
„Ugyanis esetenként impulzus érkezéskor zavar támad a küldött adatokban”
Nagy valószínűséggel az interrupt lekezelésénél valami bibi van, azt a programrészt kell tüzetesen átnézni.
(#) adamhollos válasza potyo hozzászólására (») Márc 16, 2012 /
 
Akor az egyik 16f690-es RB7-es lábát kel összekötnöm a másik RB5-ös lábával, ugye? Vagy, az RB7-et kell összekötni az RB6-tal? Mert az első a logikus da az adatlp mintha a második lehetőséget mondaná. (EUSART-ot szeretnék csinálni)
(#) icserny válasza adamhollos hozzászólására (») Márc 16, 2012 /
 
Az RB6-tól mit akarsz? RB5 az RX (vevő), RB7 a TX (adó) vonal.
Következő: »»   222 / 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