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   619 / 1210
(#) don_peter válasza Kapagerenda hozzászólására (») Jan 13, 2015 /
 
A do - while() ciklussal ne foglalkozz különösebben, az ebben a formában felesleges mivel nincs megadva feltétel vagy is 1-es végteleníti azt. (amúgy ez egy végén tesztelős ciklus, a do{} a while ciklus eleje és ami a while() zárójelei közt van az a feltétel, tehát itt egyszer mindenképp lefut a ciklus és a végén kiértékel majd, ha igaz akkor ismétlődik..."hátul tesztelős")

A mask.c fájlod pedig a 7 szegmenses kijelződön megjelenő számok bitjeit tárolja.
Tehát, ha kiküldesz egy 1-est akkor valójában a 0x3f parancsot küldöd ki amely aztán a a kijelző megfelelő szegmenseit fogja kigyújtani, hogy a végén te egy 1-est lás rajta.
Így röviden ennyi is lenne a dolog.
(#) don_peter válasza spgabor hozzászólására (») Jan 13, 2015 /
 
Mutass egy adatlapot és lehet tudok segíteni.. De ahogy írod lehet ez is csak egy shift regiszter aminek a kimenetei erősebbek az átlagnál. (bár nem vagyok benne biztos)
Ha igazam van akkor egy egészen egyszerű módon, de lehet még SPI-vel is tudsz kiküldeni adatot és akkor már tényleg csak a shiftelést esetleg a multiplexálást kellene leprogramoznod.
(#) spgabor válasza don_peter hozzászólására (») Jan 13, 2015 /
 
Képek után csatoltam a 2131 adatlapját, de csatolom újra. A 16f628A-hoz szeretném házasítani, amit korábban csináltunk.

sda2131.pdf
    
(#) Kapagerenda válasza don_peter hozzászólására (») Jan 13, 2015 /
 
Kösz a segítséget. Arra lennék még kiváncsi, hogy a 33. sorban levő digit = i % 10u; és a 35 sorban levő digit = (char)(i / 10u) % 10u; részek mit jelentenek pontosan?Ezek függvények akarnak lenni? Valamint a switch utasítás hogyan épül fel?
(#) Justo hozzászólása Jan 13, 2015 /
 
Sziasztok!
Szeretnék elkezdeni foglalkozni PIC programozással.
A segítségeteket szeretném kérni, hogy milyen "bibliát", programozó áramkört, programot, stb.... ajánlotok ahhoz, hogy el tudjam kezdeni az alapoktól.
Előre is köszönöm
(#) don_peter válasza Kapagerenda hozzászólására (») Jan 13, 2015 / 1
 
Húú kezdem azzal ami biztos:
A switch egy elágazás.
Fogd fel úgy mint egy if - else ágat és megérted.
A switch utasítás kap egy változót ami num névre hallgat.
A num-ban van benne egy szám ami jelen állásban 0 és 9 közt lehet, beleértve termesztésen a 0-át és a 9-et is.
A case maga a feltétel kezelő, ha num változóban a nulla van akkor a "case : 0" feltétel elágazás igaz és visszatér 0x3F-el... és így tovább..
Amúgy hiányzik belőle az utolsó hiba kezelés ami a default lenne, de ebbe ne menjünk most bele mert nincs benne és csak összezavarlak.

A másik kérdésedre nem biztos, hogy jó lesz a válaszom, de remélem olvassák többen is és kijavítanak, ha nem jól tudom.

Kiemelted a 35. sort:
  1. digit = (char)(i / 10u) % 10u;

A digit egy globálisan létrehozott előjel nélküli 16bit-es változó.
Ebbe a változóba töltődik bele az egyenlőség jobb oldalán kiértékelődő művelet vagy műveletek eredménye.
A (char) maga egy típus módosító utasítás, ami mögötte van annak a kiértékelődés végén char típusa lesz.
A 10 után lévő u betű ha jól tudom szintén egy típus módosító vagy legalább is olyasmi amivel az aktuális adat típusára utalunk. (ezt egyszer már végig olvastam, de soha nem használtam még így nem tudom)
Azt nem tudom, hogy ez csak a fordítónak szól vagy a kiértékelődésben is szerepet játszik...passz..
A hozzászólás módosítva: Jan 13, 2015
(#) don_peter válasza spgabor hozzászólására (») Jan 13, 2015 /
 
Az adatlapból számomra az derül ki, hogy ez egy 16bit-es shift regiszter.
Nem különösebben nagy terhelésre van szóval nem egy nagy szám.
A Pulse diagramjából pedig az derül ki, hogy szinte ugyan az mint a 74HC595 csak, ha jól látom az enable fórdítva működik mint amihez hosszá szoktunk.
Mivel 16bites egyszerre 2 kijelzőt tudsz vele meghajtani, de hogy a másik kettő hogy van bekötve arról fingom sincs.
Ha lenne egy kapcsolási rajz akkor abból könnyebben ki lehetne találni miképpen kell megírni a programot.
Ha a 2 első kijelzőről ugyan azok a vezetékek mennek a másikra akkor valaminek kell még ott lennie, tranzisztornak vagy valaminek ami tud a 2x2 kijelző közt váltani. Gondolom én..

Amúgy nézd meg a szimulátorban nincs e véletlen meg ez az IC, ha nincs akkor válassz egy 16bit-es stiftregisztert aminek hasonló vagy pont ilyen a lábkiosztása.
De ha nem is egyezik akkor is ki lehet próbálni mert élesben csak a lábakra beállított definíciókat kell megváltoztatnod és kompatibilis lesz...
A hozzászólás módosítva: Jan 13, 2015
(#) spgabor válasza don_peter hozzászólására (») Jan 13, 2015 /
 
Van rajta két tranzisztor, ha jól emlékszem. Holnap este visszacsipogtatom és csinálok róla rajzot.
(#) don_peter válasza spgabor hozzászólására (») Jan 13, 2015 /
 
Tényleg, most látom csak, hogy van ott két tranyó..
Gondolom amikor túlcsordul vagy is shiftel a chip, akkor a második 2-es kijelzőre fog írni mert az egyik tranzisztor nyitni fog a másik zárni..
Gondolom, így elsőre ezt én innen
2oldalas a nyák, így T2-őt nem látom hová van bekötve...
A hozzászólás módosítva: Jan 13, 2015
(#) spgabor válasza don_peter hozzászólására (») Jan 13, 2015 /
 
Igen, így működhet. Akkor ha lesz hozzá rajzom, tudnál segíteni, hogy álljak neki a kódnak?
(#) don_peter válasza spgabor hozzászólására (») Jan 13, 2015 /
 
Persze, még videót is találtam anno róla, hogy miképpen kell értelmezni a shift regiszter működését.
Ha meg megérted, simán meg is írod
De ha nem akkor is itt vagyunk mi és segítünk (a legjobb helyen jársz)
A hozzászólás módosítva: Jan 13, 2015
(#) adamhollos válasza cross51 hozzászólására (») Jan 13, 2015 /
 
Rendesen beállítottam az UART-ot, meg a fleg biteket is ellenőrzöm, csak nem akartam az egész programot berakni.
A bajom az, hogy a vektor-ba/ból olvasás nem működik. Csak akkor tisztulnak ki a fleg bitek/ kerülnek be/ki az értékek a megfelelő UART regiszeterekbe/ből ha sima változóba olvasok be/-ból írok ki.
Ez miért van?
(#) don_peter válasza Kapagerenda hozzászólására (») Jan 13, 2015 / 1
 
Látom még a 33.-as sort is kiemelted, - bocs ezen átsiklottam - gondolom a % jel nem tiszta, hogy mit csinál.
Ez gyakorlatilag egy 10-es osztást csinál.
Addig osztja 10-el i értékét ameddig már a maradék 10-el nem osztható és az a maradék kerül be a digit változóba.

Egy példa rá:
  1. int digit;
  2.     digit = 33 % 10u;
  3.     printf("%i \n", digit);

Eredménye 3 lesz..
A hozzászólás módosítva: Jan 13, 2015
(#) Pali79 válasza Justo hozzászólására (») Jan 13, 2015 /
 
Először azt döntsd el, hogy milyen nyelven szeretnél programozni. Ha teljesen kezdő vagy akkor az assemblyt ajánlom, ahhoz tudok mutatni pár dolgot. Programozó pickit2 vagy 3, mással nem nagyon érdemes foglalkozni ha komolyan gondolod.
(#) benjami válasza adamhollos hozzászólására (») Jan 13, 2015 /
 
Én összehasonlítanám disassambly listáját a két verziónak. Abból ki kell derülnie az igazságnak.
(#) adamhollos válasza benjami hozzászólására (») Jan 13, 2015 /
 
Hogyan tudom behozni a disassambly listát.
Mikor próbálom megnyitni ezt a hibaüzenetet kapom:
Idézet:
„Unable to generate the disassembly listing file. Please make sure that you have built the project with symbol information.”
(#) Justo válasza Pali79 hozzászólására (») Jan 14, 2015 /
 
Hello! Teljesen kezdő vagyok a témában. Honnan tudom beszerezni a programot és a kit-et? Mi kül. a 2 kit között? Köszönöm a segítséged!
(#) adamhollos válasza Justo hozzászólására (») Jan 14, 2015 /
 
PiCkit 3 az újabb kiadás, szóval drágább, de cserébe tud programozni minden microchip kontrollert, míg a PICkit 2 csak a régebbi típusúakkal képes elboldogulni.
A programot a Microchip honlapjáról, ingyenesen, tudod letölteni.
A PICkit 3-ra meg keress rá...
(#) icserny válasza Kapagerenda hozzászólására (») Jan 14, 2015 / 1
 
Idézet:
„Arra lennék még kiváncsi, hogy a 33. sorban levő digit = i % 10u; és a 35 sorban levő digit = (char)(i / 10u) % 10u; részek mit jelentenek pontosan?”


A C nyelvben a százalékjel a modulus operátor, vagyis az osztási maradékot számítja ki. Ennek megfelelően:
digit = i % 10u; <== Ez az i-ben tárolt szám 10-zel történő osztásának maradéka (vagyis az egyesek helyiértékén álló számjegyet állítja elő).

digit = (char)(i / 10u) % 10u; <== Az i=99-ig menő ciklus esetében ez egy kicsit túlbonyolított formula, mivel az i/10u egészosztás eredménye önmagában véve is a tízesek helyiértékén álló számjegyet adja, így a "%10u" osztási maradékképzés fölösleges. Erre csak akkor van szükség, ha i értéke 99-nél nagyobb is lehet... Végeredményben tehát a hátulról számított második számjegyet különítjük el:
1. Az i/10u egészosztás 10-es számrendszerben gondolkodva eggyel jobbra tolja a számjegyeket, így a tízesek az egyesek helyére kerülnek. Ha i csak 99-ig mehet, akkor ezzel készen is vagyunk.
2. Ha i 99-et meghaladó szám, akkor az utolsó helyre került tízesek ugyanúgy választhatjuk le, mint az előbb az egyeseket (a %10u művelettel).

Megjegyzés: a 10u valójában 10-et jelent, de jelezzük a fordítónak, hogy ezt előjel nélküli mennyiségként kezelje.
(#) Pali79 válasza Justo hozzászólására (») Jan 14, 2015 /
 
Pickit 2-ből vannak utánépíthető klónok amik használhatóak, de anyagilag nem jársz jobban vele mintha megvennéd, de az építés öröme megmarad ha az számít. De abban is van egy PIC, tehát azt is fel kell tudni programozni valahogy. Két programra lesz szükséged első körben: Mplab és a Pckit saját szoftvere. Mindkettő letölthető a Microchip honlapjáról, keress rá.
(#) killbill válasza icserny hozzászólására (») Jan 14, 2015 /
 
Idézet:
„Megjegyzés: a 10u valójában 10-et jelent, de jelezzük a fordítónak, hogy ezt előjel nélküli mennyiségként kezelje.”
Ami jelen peldaban szinten felesleges, mivel az i valtozo elojel nelkuli, es a C nyelv szabalyai szerint, ha egy muveletben elojeles es elojel nelkuli adatok szerepelnek, akkor az elojeles szamot a fordito automatikusan elojel nelkulive alakitja.
(#) Hp41C válasza spgabor hozzászólására (») Jan 14, 2015 /
 
Ezt én nem tudom eldönteni. Nincs rajzom a panelről, csak a fényképet néztem. Vissza kellene fejteni a kapcsolást.
(#) usane válasza spgabor hozzászólására (») Jan 14, 2015 /
 
Nos a működése:
Az ENABLE lábnak magasan kell lennie amikor beirod az adatokat a shift regiszterbe.
A BITek az órajel H->L, azaz lefutó élére íródnak be. Ha benn vannak az adatok akkor z ENABLE lábat alacsonyra kell húzni, ekkor kerülnek a shift regiszterből a bufferbe és a kijelzőre. Ennyi.
Ha így sem megy majd valamelyikünk egy rutint is mellékel. Emellett pedig még le kell programozni a multiplexelést is a 4 kijelző miatt.
A hozzászólás módosítva: Jan 14, 2015
(#) don_peter válasza spgabor hozzászólására (») Jan 14, 2015 /
 
Közben megtaláltam a videót.
Ennek köszönhetően értettem meg a működését és írtam meg a függvényt.
Hogyan működik a shift regiszter
Annyi, hogy az ENABLE a te kapcsolásodon lévő IC-nél fordított, de ez most ne mozgasson...
A hozzászólás módosítva: Jan 14, 2015
(#) spgabor válasza don_peter hozzászólására (») Jan 14, 2015 /
 
Köszönöm mindkettőtöknek. A linkelt videó és usane leírása alapján értem. Elsőre megpróbálom megcsinálom két kijelzőre, hogy működjön, a multiplexelést majd utána a másik két kijelző miatt..
(#) Justo válasza Pali79 hozzászólására (») Jan 14, 2015 /
 
Az Mplab programot letöltöttem a 2.30-as verziót. Ez a PICkit3 megfelelő lenne?

adamhollos: Köszönöm neked is
A hozzászólás módosítva: Jan 14, 2015
(#) Hp41C válasza Justo hozzászólására (») Jan 14, 2015 /
 
PICkit3 -nak ez is jó.
(#) Pali79 válasza Justo hozzászólására (») Jan 14, 2015 /
 
Inkább a Hp41C által javasolt. Nem sokkal drágább, de legalább eredeti. Olyan programozó vacakra meg úgy sincs szükség. Kell egy jó minőségű breadboard meg egy vezetékkészlet és kész.
(#) vilmosd válasza Justo hozzászólására (») Jan 14, 2015 /
 
(#) usane válasza don_peter hozzászólására (») Jan 14, 2015 /
 
Ha az ENABLE-t a 74HC595 STCP lábához hasonlítod akkor igen, fordítva, de ha az OE lábához akkor ott is alacsony szinten engedi ki. Az ő vezérlője kicsit egyszerűbb, ugyanaz a láb kezeli buffer-t és az OUTPUT-ot. Ezen kívül az adat beírása is fordított, az órajel lefutó és nem pedig a felfutó élére íródik be nála.
Következő: »»   619 / 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