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   106 / 1210
(#) kissi válasza potyo hozzászólására (») Ápr 7, 2011 /
 
Köszi !

Steve
(#) zenetom válasza potyo hozzászólására (») Ápr 8, 2011 /
 
Idézet:
„Egyes újabb 18F-ek is tartalmaznak beépített felhúzót az MCLR lábon”

Jól sejtem hogy a 18F1320-nak nincs beépített felhúzó ellenállása?
(#) dudzsi hozzászólása Ápr 8, 2011 /
 
Sziasztok!
Most kezdtem foglalkozni assemblyvel, és elakadtam a timer0-nál. Azt nem értem hogy hogyi s megy ez a megszakitási frekvencia. Van pl egy 4MHz kristály és hogy tudom kiszámolni pl. a 1:32-s osztást. Flowcode-al már csináltam picet, de most rászántam magam a hardver közelibre. Elöre is köszönöm
(#) potyo válasza dudzsi hozzászólására (») Ápr 8, 2011 /
 
4MHz az órajel, ebből következően a Timer0 bemenete 4MHz/4=1MHz-et kap. A TMR0 regisztert alapesetben ez az 1MHz növeli 256 lépésben, majd amikor túlcsordul, akkor beállítja a T0IF jelzőbitet és számol előlről. A jelzőbit tehát 1MHz/256, vagyis 3906,25Hz frekvenciával, tehát 256us időnként billen be. Ez elé tudod még odatenni az előosztót, hogy további 1:2, 1:4, 1:8, ...., 1:256 arányban ossza le az órajelet, ami a Timer0-t lépteti. Tehát ha pl. 32-re állítod az előosztót, akkor 122,07 Hz frekvenciával fog a T0IF bebillenni, vagyis két bebillenés között 8,192ms telik el.
(#) potyo válasza zenetom hozzászólására (») Ápr 8, 2011 /
 
Jól. Nem csak innen lehet látni egyébként, hanem a Table 1-2-ben az MCLR sorában nem említi a felhúzót. 12F683 ugyanilyen táblázatában írja, hogy "Master Clear with internal pull-up", és a láb blokkrajzán is szerepel ott a felhúzó.
(#) dudzsi válasza potyo hozzászólására (») Ápr 8, 2011 /
 
Köszi a segitséget igy már értem.
(#) zenetom válasza potyo hozzászólására (») Ápr 8, 2011 /
 
Akkor jól sejtettem.
Köszi!
(#) watt válasza dudzsi hozzászólására (») Ápr 8, 2011 /
 
1:32-es osztást pedig úgy tudsz csinálni, hogy a megszakításor annyit adsz a TMR0-hoz, hogy a következő megszakítás 32 programórajel után legyen. Fontos, hogy nem beletölteni kell az értéket, hanem hozzáadni ahhoz, ami már benne van, mert ugye a megszakítás sem azonnal történik meg, közben a TMR0 tovább számol.
Annyit még megjegyeznék, hogy 1:32 osztású megszakítás az eléggé elveszi az időt a fő programszáltól, de van olyan alkalmazás, ami ezt kívánja...
(#) Hp41C válasza dudzsi hozzászólására (») Ápr 8, 2011 /
 
Szia!

Ugye nem 16F84... A 16F628 -ban van timer2, azzal sokkal egyszerűbb a 32 -es osztást megcsinálni...
(#) dudzsi válasza Hp41C hozzászólására (») Ápr 8, 2011 /
 
Köszönöm mindenkinek a segitséget. Igazábol egyenlöre proteusba nézegetem, hogy müködik e a dolog. De 16F676-m van itthon. Arra szeretnék irni majd egy progit. Mert flowcodba már irtam bele amivel megy is, de szeretném böviteni csak sajna betelt. Elvileg assemblybe kevesebb helyet foglal mint ilyen grafikus progikba. De ha nem is legalább jobban megértem a pic müködését.
(#) gianni89 hozzászólása Ápr 8, 2011 /
 
Sziasztok!

Újabb problémával fordulok hozzátok. Az lcd-m és a keypad-em már működik szépen, hála nektek. Most viszont szeretném üzembe helyezni az USB kommunikációt de sehogy sem akarja felismerni a gép a PIC-et. Próbálkoztam ez alapján a leírás alapján: Link
illetve a picollo projekt alapján. Mivel nem használok bootloadert ezért a linker fájlt lecseréltem egy bootload nélkülire. Megnéznétek, hogy mi lehet a hiba? Kerestem már itt a fórumon gyakori hibákra ezzel kapcsolatban de nem találtam semmi rosszat se a kapcsolásban se a kódban. Mellékelem a kapcsolást. Köszi előre is.

terv.JPG
    
(#) watt válasza gianni89 hozzászólására (») Ápr 9, 2011 /
 
Az USB-s cikkeket olvastad itt? Van CDC és HID, ez utóbbit én követtem el. A CDC-vel midig bajom volt, nemrég cseréltem le a házvezérlőmet is HID-re, ezért én ezt ajánlanám jobban.
(#) gianni89 válasza watt hozzászólására (») Ápr 9, 2011 /
 
Olvastam igen. De nem igazán segítettek sajnos.
Most próbálgattam állítgatni az ID-ket hátha ütközik a PicKit2-mel de megnéztem linux alatt a pickit-ét és nem ugyanaz mint a projekt usb-descriptorában megadott. Nem tudom mi lehet a baj mert egyszer már működött a linkben megadott leírás alapján de egyszerűen nem jövök rá, hogy mit állítottam el.
(#) watt válasza gianni89 hozzászólására (») Ápr 9, 2011 /
 
Hát állítsd vissza az eredeti állapotot, ha úgy gondolod, elállítottál valamit!
(#) dudzsi hozzászólása Ápr 9, 2011 /
 
Sziasztok!
Mplab-ba miért nem tudok a watch ablakba symbolt hozzáadni? Ot vannak azok a változok amiket felvettem, igaz?
(#) Hp41C válasza dudzsi hozzászólására (») Ápr 9, 2011 /
 
Szia!

Sajnos abban sincs timer2. Használhatsz 4.096 MHz -es quart -ot vagy alkalmazhatod ezt az algoritmust..

A lábkompatibilis 16F684-ben van timer2...
(#) zenetom válasza dudzsi hozzászólására (») Ápr 9, 2011 /
 
Hali!
Én is így jártam anno, szerintem nálad is ez a baj. Bővebben: Link
(#) dudzsi válasza zenetom hozzászólására (») Ápr 9, 2011 /
 
Köszi zenetom. Jó tudni.
Köszi Hp41c.
(#) icserny válasza gianni89 hozzászólására (») Ápr 9, 2011 /
 
Idézet:
„Mivel nem használok bootloadert ezért a linker fájlt lecseréltem egy bootload nélkülire.”
Próbáld ki a PICCOLO projektből a Helló világ programot!

Ha nem akarsz bootloadert használni, akkor sem kell lecserélni a linker állományt (nem szegényház ez, mindenre fel van készítve! :smoke: ), hanem az alábbi változtatásokat tedd meg:
1. Tedd kommentbe a piccolo-config.h állomány
  1. #define HID_BOOTLOADER

sorát, hogy a memória elejére tegye a programodat.
2. A projekt linker opciói közül vedd ki a /uHID_BOOTLOADER-t! (én az .mcp állományt szoktam szerkesztgetni, de az MPLAB Project/Build options/Project menüben is megtalálod az MPLINK fülre kattintva)
(#) dudzsi hozzászólása Ápr 9, 2011 /
 
Ismét nem értek valamit. Ha itt a TRISC nullázom akkor a PORTC 0,1 bite miért vált magasra? De nem csinálja mindig és proteusba a portc 0. magasan leszz, de pl mplabba meg alacsony.
LIST P=16F676
#INCLUDE "P16F676.INC"
__CONFIG _INTRC_OSC_NOCLKOUT&_CP_OFF&_WDT_OFF&_BODEN_OFF


ORG 0
MAIN

BSF STATUS,RP0
CLRF ANSEL
MOVLW 0X00
MOVWF TRISC
BCF STATUS,RP0


LOOP


GOTO LOOP

END
(#) kissi válasza dudzsi hozzászólására (») Ápr 9, 2011 /
 
Szia!

A PORT-ot induláskor fel kell tölteni valamilyen értékkel, különben "bármi" lehet benne --> ezért hol nullával, hol eggyel is indulhat ( a szimuláció ki tudja mivel "helyettesíti" !). A TRIS-t mikor átállítod kimenetre, akkor megjelenik az előre nem meghatározott érték !

Steve
(#) dudzsi válasza kissi hozzászólására (») Ápr 9, 2011 /
 
Oké köszönöm igy már ez is világos.
(#) nagy_david1 hozzászólása Ápr 9, 2011 /
 
Üdv!

Azt szeretném megtudni, hogy ha C nyelvben szeretnék "szaggatást" előállítani akkor az nekem csak "delay" parancsszóval lehetséges vagy mással is? Milyen parancssorral lehetne olyan PWM jelet előállítani amivel pl. egy adott frekvencián a kitöltés módosítható csak, vagy adott kitöltés mellett csak a frekvencia. A delay-el csak késleltetni tudok és így tolódik a jel egyik paraméterével a másik is. Vagy csak a delay megoldás létezik és ehez kell a függvényeket kigondolni? Gondolom csak delay-ekkel és megfelelő fügvényekkel is meg lehet oldani, de azért kíváncsi lennék van-e más lehetőség is. Előre is köszöszöm.
(#) gianni89 válasza icserny hozzászólására (») Ápr 9, 2011 /
 
Na kipróbáltam de ez sem müködik

@watt: már én is gondoltam erre és már mindenfélével próbálkoztam ami eszembe jutott de egyszerűen nem akar működni. Próbáltam forrasztgatni a kapcsolást hátha ott romlott el valami, újra raktam az mplabot, akkor a linkert cseréltem, illetve leszedtem régebbi verziójú Michrochip demo gyűjteményt de semmi. Szinte biztos vagyok benne, hogy valami banális hiba van benne de egyszerűen nem találom
(#) vicsys válasza nagy_david1 hozzászólására (») Ápr 9, 2011 /
 
Több megoldás is szóba jöhet:
1. Használd a PIC pwm perifériáját.
2. Külön-külön állítsd a jel/szünet arány hosszát, így állandó lesz a freki.
Célszerű lenne elmélyedni a timer részben, hogy kikerülhesd a delay-t.
(#) nagy_david1 válasza vicsys hozzászólására (») Ápr 9, 2011 /
 
Igen, ebben igazad lehet, mivel kezdő vagyok e téren és időm se sok van mostanság de azért csipp-csupp ahol lehet szeretnék informálódni.
Idézet:
„1. Használd a PIC pwm perifériáját.”

Ez is számomra új fogalom, mivel nem tudom a "nyelvben" miként nyilvánúl meg ez.
Idézet:
„2. Külön-külön állítsd a jel/szünet arány hosszát, így állandó lesz a freki”

Ez érthető és menne mivel a két delay-re írnék egy fordítottan arányos függvényt így tényleng a frekvencia stabil maradna.
Idézet:
„Célszerű lenne elmélyedni a timer részben, hogy kikerülhesd a delay-t”

Erre meg megint azt tudom mondani mint az elsőre.
Mindig meg kell jegyezzem, hogy remélem majd egyszer befejezed az oldaladon a C fejezeted mivel nagyon érthetően közelíted meg a dolgokat
(#) icserny válasza gianni89 hozzászólására (») Ápr 9, 2011 /
 
Idézet:
„Na kipróbáltam de ez sem müködik”
Ez nem túl informatív megfogalmazása a problémának. Mi az, hogy "nem működik"?

Körbe kell nézni a kapcsolást: a PICCOLO projektben 20 MHz-es kristály az alapértelmezett. Azt használsz?

Az USB csatlakozó bekötését könnyen el lehet téveszteni. Ha a +5V és a GND megvan, akkor már egyszerűbb a dolog... A +5V "szomszédja" a D-,a GND-jé pedig a D+.

Ha a számítógép észleli, de felismerni nem tudja, és jó a bekötés meg az órajel frekvenciája, akkor előfordulhat, hogy az eszközmeghajtót el kell távolítani és újra össze kell ismertetni a rendszerrel (a kibontott code_examples.zip bootloader/USB CDC Serial Demo/inf könytárában van az, ami ehhez szükséges. Mennie kell! Nekem már VUSB kondenzátor nélkül is működött egyszer!
(#) icserny válasza nagy_david1 hozzászólására (») Ápr 9, 2011 /
 
Idézet:
„nem tudom a "nyelvben" miként nyilvánul meg ez.”
Sehogy nem nyilvánul meg. Minden perifériát úgy kezelhetsz C-ben, hogy a megfelelő regiszterekbe megfelelő értékeket írsz. Ez sima értékadás. A regiszterek neveit a mikrovezérlőhöz tartozó leíró állomány (pl. p18f1220.h) állomány definiálja.
Idézet:
„Ez érthető és menne mivel a két delay-re írnék egy fordítottan arányos függvényt”
Nem fordított arányosság kell, hanem a periódusidőből ki kell vonni az első késleltetési idő értékét, s az legyen a második késleltetési idő.

t2 = T - t1
(#) gianni89 válasza icserny hozzászólására (») Ápr 9, 2011 /
 
Köszi a gyors választ.
Csatolom ismét a kapcsolási rajzomat. Szerintem a kapcsolással nincs gond mert amint említettem már egyszer működött. A kristály 20Mhz-es illetve a lábak jól vannak bekötve. Szerintem nem észleli a számítógép mivel nem pittyeg amikor bedugom illetve próbáltam linux alatt is és az lsusb nem jelzi ki. Ezért vagyok már teljesen letörve mivel semmi élet jelet nem akar adni magáról

terv.JPG
    
(#) nagy_david1 válasza icserny hozzászólására (») Ápr 9, 2011 /
 
Igen a másodikat én is így gondoltam, csak nem jól fogalmaztam.
Az első része meg még mindig nem igazán érthető. Esetleg egy példát tudnál küldeni amikor nem delay-el oldódik meg a pwm előállítása hanem perifériákkal, vagy ahogy te írtad? Egy akármilyen kód jó ahol szerepel ez a megoldás. Arra vagyok kíváncsi, hogy kapcsolódik a C nyelv ehez a pwm perifériához a kódban.
Következő: »»   106 / 1210
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