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   346 / 1216
(#) vicsys válasza Balagemann2031 hozzászólására (») Dec 30, 2012 / 2
 
Jobban járnál, ha cél IC-t használnál. PGA2311 elég jó minőséget ad. Vagy a PIC kimeneteire teszel ellenállás hálózatot és azzal fetet vezérelsz és lehúzód a bemenő jelet...
(#) Balagemann2031 válasza vicsys hozzászólására (») Dec 30, 2012 /
 
Köszönöm a választ! Sajnos a SPI és I2C- vel még nem boldogulok (bár sokat szenvedtem de nem ment) Ezért valami egyszerűbb megoldással próbálkoznék. Az ellenálás hálózatos az kis lábszámú picnél nem túl praktikus .( Gondolkodom még rajta!
(#) Balázs 1.3 JTD hozzászólása Dec 30, 2012 /
 
Sziasztok!

Segítséget szeretnék kérni. Egy intelligens 230V 100W-os izzó fényerő-szabályozót kellene építenem. A fényerő szabályozását úgy szeretném megoldani, hogy a PIC-kel egy triakot kapcsolgatok be. Viszont tudnom kellene, hogy a hálózat a szinusz hullámban éppen hol tart, hogy mikor gyújtsam be a triakot. Arra gondoltam, a 230V-ot egyenirányítom, és egyszerűen egy feszültségosztóval leosztom úgy, hogy a csúcsfeszültség MAX 5V legyen. AD konverterrel nézném, hogy mekkora a feszültség, és az alapján a megfelelő időben gyújtanám a triakot. Ez így helytálló elképzelés? Természetesen az érintés és balesetvédelmi normákra rendkívül ügyelve.
(#) vicsys válasza Balázs 1.3 JTD hozzászólására (») Dec 30, 2012 / 1
 
Szerintem meg használj trafót és úgy vedd le egy diódával a jelet. A nullátmenetet kell érzékelned és ehhez nem kell A/D.
(#) jdani hozzászólása Dec 30, 2012 /
 
Hali. Nézegetek kapcsolásokat, és találtam egy ilyet. Azt írja, hogy közös anódos kijelző használható hozzá. Nade a PIC eleve nem +5V kimenettel dolgozik?
(#) vicsys válasza jdani hozzászólására (») Dec 30, 2012 /
 
Az I/O nem csak +5V-ot tud kiadni, hanem testet is. Inkább úgy fogalmaznék, hogy H és L szintet. Amúgy meg szerepel a cikkben a katódos is.
(#) jdani válasza vicsys hozzászólására (») Dec 30, 2012 /
 
Nem a cikken van a hangsúly, hanem nekem ez még új, hogy tud L és H kimenetet adni. Alapokat tudom csak, azt is csak modulrendszerű grafikus PIC programozásban, de erről eddig még nem hallottam
(#) Balázs 1.3 JTD válasza vicsys hozzászólására (») Dec 30, 2012 /
 
A trafó nem hülyeség, meg a dióda. A nullátmenetet hogyan érzékeljem AD nélkül? Simán egy digit bemenetre rá és amikor alacsony azt nullának veszem? Elég pontosan kellene tudnom mikor kezdődik, azért egy 10bites A/D-vel jobban meghatározható lenne a kezdet.
(#) kissi válasza Balázs 1.3 JTD hozzászólására (») Dec 30, 2012 /
 
Szia!
A trafót egy tranzisztorra kötöd és az 0,6 V-nál nyit --> a szekunder feszültséged alapján ki tudod számolni ez hány foknak felel meg! Ha nem jó, akkor műveleti erősítős komparátor!
Steve
(#) vicsys válasza Balázs 1.3 JTD hozzászólására (») Dec 30, 2012 /
 
Ne hülyéskedj már! Persze, hogy L szintet figyelsz és utána időzítesz. Egy egyszerű megszakításkezeléssel megoldható.
(#) vicsys válasza Balázs 1.3 JTD hozzászólására (») Dec 30, 2012 / 1
 
Csatolok egy mintát, ebből puskázhatsz. T5-T6 körét vizsgád meg.
Egy-egy L impulzus, 10ms-onként ugrik be. Innen már be tudod pöccinteni a kimenetet.
(#) Balázs 1.3 JTD válasza vicsys hozzászólására (») Dec 30, 2012 /
 
Köszi! Azt hiszem megpróbálom én is hasonlóan!
(#) DRoland hozzászólása Dec 30, 2012 /
 
Hello!

Feltennék egy kérdést, MPLAB-al assemblyben írok programot és olyan mintha elértem volna egy határt, akármilyen plusz utasítást írok be (még NOP-ra is!) a fordító ezt a hibát adja vissza: Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000000, length=0x00001002
Errors : 1

Találkozott már valaki ezzel?

(#) bbalazs_ válasza DRoland hozzászólására (») Dec 31, 2012 /
 
Nem lehet, hogy a PIC memoriaja betelt? Mi van a direktivaban, milyen PIC-et adtal meg neki?
Mellekeld a progit.
(#) DRoland válasza bbalazs_ hozzászólására (») Dec 31, 2012 /
 
Ez egy szivattyúvezérlés és védelem lesz.
PIC16F628A volt az eredeti, de most írom át 16F877A-ra, mert elfogytak az I/O lábak, ahogy jöttek az újabb ötletek. Viszont ott is ez a hibaüzenet. Köszi, hogy segítesz!

szivattyu.asm
    
(#) bbalazs_ válasza DRoland hozzászólására (») Dec 31, 2012 /
 
Nalam siman lefordul, tettem mogeje egy csomo NOP-ot. MPASM 5.35

De szerintem betelt a memoriad akkor is. Mert en egy csomo hibauzit szupresszalok.
Rengeteg helyet sporolhatnal egy kis odafigyelessel, pl.
MOVLW 't'
MOVWF DISP
CALL CHAR

Helyett magaban a CHAR rutinban kellene a legelejen betenni a movwf-et es akkor csak a MOVLW es a CALL kellene.

De sokkal elegansabb lenne tablazatbol vagy eeprombol megoldani. Es persze sokkal rovidebb is.



De nem szep, hogy nincs benne helye a megszakitasnak.
(#) DRoland válasza bbalazs_ hozzászólására (») Dec 31, 2012 /
 
Akkor majd próbálkozok én is, hátha egyszer sikerül. Jó ötlet a CHAR rutinhoz írni, így valóban kevesebb sor lesz.

Amúgy én alig értek a PIC-ekhez az is csoda, hogy idáig működőképes a program, de igyekszek tanulni, mert érdekel a dolog.

A táblázathoz vagy az eeprom kezeléshez (egyelőre) nem értek.
Milyen megszakításra gondolsz?
A hozzászólás módosítva: Dec 31, 2012
(#) bbalazs_ válasza DRoland hozzászólására (») Dec 31, 2012 /
 
Ez nem PIC-specifikus, hanem programozas. Ha valami ismetlodik, erdemes subrutinba tenni.
Az jo, ha hajlando vagy tanulni.
A megszakitasok a PIC-ek eseteben nagyon fontosak! Erdemes lesz veluk foglalkoznod.
Ha valamit pontosan kell idoziteni, mikozben a foprogi fut, nem nagyon van mas lehetoseged.

Itt nalad ELVILEG nincs egy megszakitas sem.
A baj az, hogy ha veletlenul megis beutne egy, akkor a progi elejen levo tablazatbol a megszakitasi cimre ugrik, ami kb 0x0008. Es ott neked valami programsor van, szoval fals utasitasra fut.
Altalaban minden PIC ugy kezdi, hogy bekapcsolaskor a 0x0000 cimre ugrik, megszakitaskor meg a 0x0008-ra (de ez PIC-specifikus, meg vannak ketszintu megszakitasok is). Ezert egy normalis PIC progi ugy kezdodik, hogy
ORG 0x0000
jmp Main
ORG 0x0008
jmp IRQ
Main:
es innen jon a progid.

A tablazat meg a te 16F-eden is megoldhato, de ha jot szeretnel magadnak, akkor atallsz a 18F-es sorozatra, ott az egesz belso memoria felhasznalhato es elerheto konnyen. Belso oszcillator, sokkal tobb jo utasitas, sokkal kevesebb szivas a lapozassal. Nem is dragabb.
(#) pajti2 válasza DRoland hozzászólására (») Dec 31, 2012 1 /
 
A 628A prog memóriája 3,5KB (forrás: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en010210 ), a 0x1002 pedig már 4098 byte, nincsen a dolgon semmi csodálni való - tényleg elfogyott a memóriád. A 16F877A-ra való áttérésnél ugye a pic típus változásról a fordítót is tájékoztatod? (Annak egyébként van 14K memóriája, egy ideig még elég lesz.)
A hozzászólás módosítva: Dec 31, 2012
(#) pajti2 válasza Balagemann2031 hozzászólására (») Dec 31, 2012 /
 
Ha elfogyott a láb, esetleg lehet választani egy nagyobb lábszámas pic-et. Már pic32-esek is kaphatóak külön szurkás boardra forrasztva - és egész baráti áron ahhoz képest, hogy ott aztán tényleg nem fogsz memória vagy lábszám korlátba beleütközni, vagy legalábbis nem egykönnyen fogsz tudni annyi mindent összeszedni, hogy korlátokba ütközhess.

Az spi egy rendesen kiforrott cuccos, de ennek a hátránya, hogy nem csak lehet, de kell is egy csomó dolgot beállítani. Master / slave; órajel és bitek szinkronjának beállítása; fragmentelés (újabb pic-ek ismerik); átviteli bit szám (pic típus függő mit ismer 8, 16, 32); a vezérlő órajel beállítása (belső pic periféria órajelet szokás használni, esetleg leosztva); megszakítást hozzá csak akkor, ha tényleg szükséged van rá; a pic lábakhoz hozzá kell rendelni a működését, és leszedni a többi perifériát, amik bezavarhatnak. Tényleg nem kevés macera, de csak egyszer kell átesni rajta. Ha minden megvan, a kimeneti regiszterbe dobod az adatot, akár egyszerre többet is (van egy adatátviteli buffer, pic-enként változó méret). Master üzemben generálni fogja az órajelet pic kimeneten, és kinyomja sorosan a biteket, valamint egyúttal olvassa a visszatérő biteket is, amit aztán visszadob neked regiszterbe. Ha a bitek jelzik, hogy van beérkezett adat, kiolvashatod (a te esetedben dummy fog visszatérni, a dac-nál nem kell foglalkozni a visszaérkező adattal). Üzemelés közben a kimeneti regiszterbe adat beírás, és a válasz regiszterből a beérkezett adat kiolvasásától eltekintve a magot nem terheli, "háttérben" zajlik a folyamat. A felsorolásból melyik lépésnél akadtál el?
(#) DRoland válasza pajti2 hozzászólására (») Dec 31, 2012 /
 
Igen tájékoztattam, sőt, jó pár helyen át is kell írni, mert pl a CMCON register a BANK1-en van, meg ennél csak a PORTA csak 5-ig van, míg a másiknál 7-ig. Így le is fordult. Hát igen, kicsit memória pazarlóan programozok
BÚÉK!
A hozzászólás módosítva: Dec 31, 2012
(#) DRoland válasza bbalazs_ hozzászólására (») Dec 31, 2012 /
 
Köszi a tippeket, utánanézek a megszakításkezelésnek. Így még, hogy nem néztem utána van egy elképzelésem: ha megnyomok egy gombot, a megszakítás címre ugrik, ott végrehajtódnak az utasítások, majd folytatja a programot, ahol abbahagyta vagy esetleg előlről kezdi. Gondolom ez csak progtamozás kérdése.
BÚÉK!
A hozzászólás módosítva: Dec 31, 2012
(#) pjg válasza DRoland hozzászólására (») Dec 31, 2012 1 /
 
Ahol abbahagyta. BUÉK!
(#) Hp41C válasza pajti2 hozzászólására (») Dec 31, 2012 /
 
Szia!
Nem igaz, amit írsz!!!
A 16F 14 bites utasításszavakat címzi, így a 16F628(A) -nek 2048 darab 14 bites utasításhelye van. A megszakítás a 0x004 címre ugrik.
Ha meghaladjuk a 2048 utasítást, több dolgot újra kell gondolni. Olvastátok?
A rutinokat a 2k -s lapokra kell elosztani, a lapok (page) közötti átmeneteknél a PCLATH regisztert állítani kell.
Ha megszakítás is lenne, még több dolgot kellene menteni és visszaállítani. De ez le van írva a cikkben.
BUÉK....
(#) pajti2 válasza Hp41C hozzászólására (») Dec 31, 2012 /
 
Hmm, részemről nem firtattam, mennyire fogyott el, csak azt jeleztem, hogy a fordító kijelzése szerint tényleg elfogyott. Egyébként tény és való, ezekkel a bittöredékes dolgokkal számolni már nagyon elfelejtettem, mea culpa

Egyébként a kezdőknek miért favorizáljátok ezeket a régi pic-eket? Már 32MX-ek is vannak spdipesben is ezres alatt. Jó, nem 3-400 forint, hanem 6-800 forint, de most tényleg azon múlana? Ellátottsággal sincsen már probléma. ChipCAD-nél is valamelyik típus biztos kapható akármikor. Ilyen 2K memória korlátok miatt kínlódni sok-sok évvel ezelőtt még egy dolog volt, de most mindjárt 2013-ban? Hát nem tudom..

BUÉK
(#) Hp41C válasza pajti2 hozzászólására (») Jan 1, 2013 /
 
Szia!
Mottó:
Idézet:
„Több oka is van annak, hogy nem szól a harang... De a legfőbb, hogy nincs harang.”

- Vidéken még a 16F1xxx széria sem kapható, a ChipCad postázása is kb. 3 - 4 kontroller árába kerül.
- Főleg az újabb 16 és 32 bites PIC kontrollereket korgalmazzák DIP tokban is. Ezeket a PICKit2 nem kezeli vélhetően főleg üzletpolitikai szempontból. PICKit3 kell a programozásukhoz is.
- A legtöbb általad említett kontroller 3.3 .. 3.6V -os, sok kapcsolás 5V -ra van tervezve.
- Az a 2K lapozás, adatbank váltás nem jelet túl nagy problémát. Jól bevált sémát követve menni fog. Különben is minden architektúrának meglesznek a korlátai csak el kell érti egy bizonyos programméretet.
- A XC8, XC16, XC32 fordítók fizetősek és elég borsos az áruk. Az ingyenes módjuk minimum 12 -szer akkora kódod készít, mint az assembly program. Egy 16 vagy 32 bites kontrollert assembly -ben programozni nem egyszerű, a 16F, 18F szériát elég könnyű.
- Egy 10F200 már 95 Ft -ért kapható, egy 16F1936 (16k * 14bit) kb. 400 Ft...
- Elég sok funkció befér egy 16F886 -ba (8k * 14bit) is... Bővebben: Link
- Új kontroller - hosszú errata...
Most kínlódok egy dsPIC33EP64GP502 -vel - az utolsó DIP tokos darabot hoztam el a ChipCad -tól... A programming executive -t sikerült beleprogramoznom és visszaellenőriznem, de használatával más memória tartalmat olvasok ki, mint ha nem használom. Miért?? A MicroChip honlapján az áll, hogy a RIPE_10a_000040.hex kell hozzá, de az 64 -k nál nagyobb kapacitásúakhoz való a nevére keresve a programming specification -ok között. A 64k -nál nagyobbak programozási leírásában a RIPE_10_000032.hex szerepel, másutt ez a 64k -nál kisebbekhez írják.
A hozzászólás módosítva: Jan 1, 2013
(#) icserny válasza Hp41C hozzászólására (») Jan 1, 2013 /
 
Idézet:
„- Egy 10F200 már 95 Ft -ért kapható, egy 16F1936 (16k * 14bit) kb. 400 Ft...”
Nem hiszem, hogy komolyan gondolod, hogy ez fő szempont lehet a kiválasztásnál! Utána meg hónapokig szív vele a delikvens...
Ha pedig egy nagyobb teljesítményű típusra kell váltania, akkor kezdheti újra (mert a PIC18 vagy PIC24 már más utasításkészlettel rendelkezik).
Idézet:
„- A legtöbb általad említett kontroller 3.3 .. 3.6V -os, sok kapcsolás 5V -ra van tervezve.”
Ez viszont egy fontos, és méltányolható szempont. A "hagyományos" logikai áramkörökhöz egyszerűbb az 5 V-os mikrovezérlők illesztése. Az is fontos szempont, hogy az 5 V-os PIC általában nagyobb kimeneti áramot is bír, nem gond egy LED vagy egy 7-szegmenses kijelző meghajtása. De ilyet találni bőven a PIC18 szériában is, s ott azért a skálázhatóság valamivel jobb, szélesebbek a továbblépés lehetőségei (vannak USB, CAN, sőt Ethernet képes típusok is), tehát az alapozásnál megszerzett tudással messzebbre lehet jutni. Ez szerintem sokkal fontosabb szempont, mint a 400 Ft vagy 800 Ft kérdése.
(#) Hp41C válasza icserny hozzászólására (») Jan 1, 2013 /
 
Idézet:
„Nem hiszem, hogy komolyan gondolod, hogy ez fő szempont lehet a kiválasztásnál! Utána meg hónapokig szív vele a delikvens...”


Ugye te sem gondolod, hogy egy szivattyú vezérléshez egyből a PIC32MX250F128D (a dip tok miatt csak ekkora, SMD tokban írhatnék még nagyobbat is) kell???
Nem is beszélve arról, hogy a gyorsabb kontrollereknél fokozottan jön elő a RMW műveleteknél fellépő hiba, a tápszűrés kialakításának kérdése.

Ezt a kérdést már jó sokszor megtárgyaltuk... Mindkét megközelítésnek van létjogosultséga... Miért fejleszti a Microchip az Advanced Midrange családot? Mert van rá igény és a C fordítói zabálják a program memóriát... Ha még a Kínában forgalmazott MCV családot is nézném...
Idézet:
„Utána meg hónapokig szív vele a delikvens...”

"Hónapokig szívni" a legújabb, legnagyobb kontrollerrel és errata -jával is lehet, sőt még azt sem tudod, hogy az adatlapnak vagy a mérési eredményednek higyj... Nem is beszélve a fordítők banális ökörségeiről, amikor egy egyszerű többértékű szemafor műveletet A = B and 0x7F; nem primitív műveletre fordít mov B,w; movwf A; movlw 0x7f; andwf A,f pedig a movf B,w; andlw 0x7F; movwf A még rövidebb is lenne. Azzal hogy a free verzió ismételget teljesen fölösleges utasításokat meg nem is foglalkoztam...
A hozzászólás módosítva: Jan 1, 2013
(#) icserny válasza Hp41C hozzászólására (») Jan 1, 2013 /
 
Idézet:
„Ugye te sem gondolod, hogy egy szivattyú vezérléshez egyből a PIC32MX250F128D ... kell???”
Persze, hogy nem gondolom. Ezért javasoltam például PIC18-at. Egyébként sem cél alkalmazásról volt szó, hanem a Hobbielektronika profiljába jobban illeszkedő tanulásról, amikor a delikvens elkezdi tanulni egy technológia lehetőségeit.
Idézet:
„"Hónapokig szívni" a legújabb, legnagyobb kontrollerrel és errata -jával is lehet”
Ezzel maximálisan egyetértek. Kezdőknek kifejezetten ellenjavallt, hogy a legújabb típusokkal kezdjenek foglalkozni.
(#) Balagemann2031 válasza pajti2 hozzászólására (») Jan 1, 2013 /
 
Hello! Egyébként gondolkodtam vicsys fórumtárs ellenálás létrás megoltásán és először nem annyira volt szimpatikus a módszer, de számolgattam kicsit és gyakorlatilag egy porttal 16, két porttal már 64 szintű szabályzást lehetne megoldani ami több mint elég arra amire kerestem a megoldást! Jelenleg a 16F és 18F es szériákra fejlesztgetek egyszerűbb dolgokat, de nem is szeretnék egyenlőre újabb szériákra váltani.
A SPI vel konkrétan nem kezdtem el foglalkozni, viszont I2C vel igen, az elméleti része világos, gyakorlatban viszont nem sikerült még kommunikálnom. Tisztában vagyok egyébként az előnyeivel, de jelenleg ha pl két pic közötti kommunikációra lenne szükségem, akkor saját adatcserélő algoritmust írnék Üdv! Balage
Következő: »»   346 / 1216
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