Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   203 / 1320
(#) potyo válasza Clip hozzászólására (») Máj 9, 2008 /
 
Úgy nézem, eléggé rágyúrtak a fiúk a komparátorra ennél a chipnél. Elvileg úgy kell beállítani, ahogy belállítottad. Bankválasztó bitek rendben vannak? Megtudod mutatni a teljes kódot?
(#) watt válasza Clip hozzászólására (») Máj 9, 2008 /
 
Próbáltad már egy LED-el indikálni a bitet?
(#) trudnai válasza Clip hozzászólására (») Máj 9, 2008 /
 
Mikor a komparator nincs bekapcsolva csak az analog, akkor tudod a helyes ertekeket olvasni mindket bemenetrol? Gondolom elektromosan minden jol van bekotve, muszerekkel kimerted stb?
(#) Csaplar hozzászólása Máj 9, 2008 /
 
Sziasztok!

Tudom, hogy nem teljesen a fórum témája, amit most írok, de azért kapcsolódik a pic-hez, úgyhogy bocs előre is mindenkitől!

Szóval júniusban befejeződik az a projekt, amin dolgozom, és nyár közepétől szeretnék valamilyen programozó jellegű munkát találni Pesten. Szívesen foglalkoznék mikrovezérlőkkel, elsősorban persze PIC-el! Egyébként még hallgatói jogviszonyban állok az egyetemmel, mert jövőre államvizsgázok, de ennek ellenére tudnám vállalni a főmunkaidőt!

Ha valakinek lenne valami információja számomra, azt nagyon megköszönném!

Köszi szépen és boc, hogy ezt ideírtam!

Üdv.:
Zoli
(#) Clip válasza potyo hozzászólására (») Máj 9, 2008 /
 
Kész nyákra dolgozom, nincs rajta led.
A kód:
Inicializáció:
Idézet:

;komparator
BANKSEL CM1CON0
MOVLW B'10000000'
MOVWF CM1CON0

BANKSEL ANSEL
MOVLW B'00001011'
MOVWF ANSEL

; AD conv init
;BANKSEL ADCON1 ;
;MOVLW B'00000000' ;left justify
;MOVWF ADCON1 ;Vdd and Vss as Vref
;BANKSEL ADCON0
;MOVLW B'10001101' ;Fosc/32
;MOVWF ADCON0 ;AN0, On
;CALL DELAY50 ;Acquisiton delay
[/code]]

LCD-n jelenítem meg az eredményt folyamatosan frissítve, az interrupt releváns része:
[quote]
; BANKSEL ADCON0
; BSF ADCON0,GO ;Start conversion
; BTFSC ADCON0,GO ;Is conversion done?
; GOTO $-1 ;No, test again
; BANKSEL ADRESH ;
; MOVF ADRESH,W ;Read upper 2 bits
; CALL LCD_WRITE_NUM

BANKSEL CM1CON0
MOVLW '1'
BTFSS CM1CON0,C1OUT
MOVLW '0'
CALL LCD_WRITE_NUM

A kommentes részt használva szépen megcsinálja az A/D átalakítást és kiírja az értéket. A komparátoros viszont folyamatosan 1-et ír ki.
(#) Clip válasza Clip hozzászólására (») Máj 9, 2008 /
 
+ a TRIS-eket is beállítom (FOTOT_TRIS = TRISA):
Idézet:

;fototranzisztorok
BANKSEL FOTOT_TRIS
MOVLW B'00001011'
MOVWF FOTOT_TRIS


Amúgy az A/D átalakítás a lassúsága miatt nem jó nekem.
(#) trudnai válasza Clip hozzászólására (») Máj 9, 2008 /
 
Pusszantalak, az ad atalakitas lassu, de interruptbol raersz LCD-t firkalni

Az ad-t amugy azert kerdeztem, hogy elektromosan mukodik-e minden? A masik, hogy interrupt nelkul, csak ugy potikkal letesztelve egy teszt aramkoron mukodik-e maga a komparalas? Mekkora az a freki amit a komparatorra raengedsz amugy?
(#) watt válasza Clip hozzászólására (») Máj 9, 2008 /
 
Idézet:
„Kész nyákra dolgozom, nincs rajta led.”

Érdekes, hogy mik nem okoznak gondot egyes embereknek. Hát lógass rá egyet, mert így csak egyhelyben toporogsz.
(#) Clip válasza trudnai hozzászólására (») Máj 9, 2008 /
 
Az LCD-re firkálás csak debug célokra van
2 fototranzisztor előtt halad el egy tárgy gyorsan (~200 m/s, légpuskalövedék). Ezeket az elhaladásokat kellene érzékelni.
A tápfesz 90%-ára komparálnék (feszosztó), mert kicsi a tárgy, nem takar eleget.
Elektromosan a dolog rendben van, az AD működik jól.
A következő tényleg az lesz, hogy csak a komparálásra írok egy tesztprogit.
(#) Clip válasza watt hozzászólására (») Máj 9, 2008 /
 
Igazad van, holnap összedobom próbapadon, aztán meglátjuk.
(#) Thowra hozzászólása Máj 10, 2008 /
 
Üdv mindenkinek!
Ma sikerült megírni az első pic progimat
Nem nagy szám, csak egy 8 ledes futófény, a B0 tól a B7 ig.
A bemenetekkel viszont még gondba vagyok. Szeretnék illeszteni egy gombot ami majd valamit csinál, egyenlőre elég lenne ha egy led (B0) világítana amíg a gombot nyomom. Hogy lehet egy bemenetet létrehozni (a hardver egy láb ami 10K val + ra van téve vagy a gomb 0 ra teszi.
A hardvert valamelyik A lábra szeretném tenni. Mivel még nem csináltam ilyet, így azt se tudom hogy kezdjem
Azt hogy adom meg, hogy egy láb ki vagy bemenet?
Az majdnem lemaradt, hogy 16f627A m van és ccsc t használ(gat)ok.
előre is köszönöm!
(#) Norberto válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Idézet:
„Azt hogy adom meg, hogy egy láb ki vagy bemenet?”


TRIS regiszterek erre valóak.
(#) potyo válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Jobb lenne, ha asm-ben tanulnál (ismerős a neved, lehet hogy mondtuk is ezt már neked). Egyszerűen azért, mert úgy tudod megtanulni, hogy melyik regiszter melyik bitje mire való.

------------------------

Ezt is a CCS egyik baromságának tartom, hogy ha írsz valamit a beépített függvénnyel a port valamelyik bitjére, akkor kimenetnek konfigurálja a lábat... Majd én eldöntöm, hogy az kimenet legyen-e, ennyire nem kell okosnak lennie egy fordítónak.
(#) trudnai válasza potyo hozzászólására (») Máj 10, 2008 /
 
Na igen, be lehet ugzan allitani a "fast io"-t es akkor nem csinalja, de igy alapbol eleg borzalmas Ezt assemblyben is meg lehetne tenni makrokkal de en nem irnam bele a nevem egy ilyen firmware forrasaba
(#) Thowra válasza potyo hozzászólására (») Máj 10, 2008 /
 
Üdv!
Már jártam itt párszor, sajnos a tanulás nehezen megy nyelvtudási hiányosságok miatt.
Még nagyon alapoknál tartok a pic ek világában így először valami számomra érthetőbb nyelven szeretnék próbálkozni. A lábakat ka be tudom állítani, hogy pl A0 bemenet és ott van egy gomb amit ha megnyomok a progiba egy változó 0 ról 1 re vált már ok. Ha meg tudom adni egy másik lábra pl B0, hogy kimenet és ha egy változó 1 akkor a lábon van fesz. A középső rész anyira nem probléma, gondolom a C nyelv feltételei, ciklusai azonosak itt is. Tanuláshoz, próbálkozáshoz elég szerintem a C és a pic16f627 és 628. Ha már belejöttem beszerzek egy komolyabb pic et és megpróbálkozok az ASM al.
(#) watt válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Én azt ajánlom, hogy olvasd el Topi cikkjeit, az nagyon sokat fog segíteni, mert alapvető ismereteid hiányoznak a PIC felépítéséről. Azután tanulmányozd a PIC adatlapját, mert annak mindig előtted kell lenni, ha doglozol. A többi tőled függ...

Aztán nem értem, hogy miből vontad le azt a következtetést, hogy a C könnyebb! Szerintem nehezebb! Főleg egy 16F-es PIC esetében. Egy ilyen gomb érzékeléses program asm-ban pofon egyszerű és átlátható. C-ben nem.
(#) Thowra válasza watt hozzászólására (») Máj 10, 2008 /
 
ASM ban hogy nézne ki?
Eddig ezt kaptam :

if(!input(PIN_A1));
{
output_high(Pin_B0);
}
(#) trudnai válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Thowra,

Igy nezne ki:

btfss PIN_A1
bsf PIN_B0

...de most ettol okosabb lettel? ha egyesevel megkerdezed mi hogy nez ki asm-ben akkor itt elobb-utobb ignoralni fognak.

A fo kulonbseg az, hogy az a C fordito amit valasztottal elrejt eloled dolgokat - C-ben te fel sem inicializalod a portot, azt neked a fordito bele hazudja, mig ez a ket asm sor latszolag semmit sem fog csinalni neked ha nem inicializalod fel a portokat elotte. Azonban neked ez a C minden alkalommal inicializalgat meg a fene tudja meg miket muvel, mig az asm-ben ez egyszer tortenik meg, es akkor tortenik meg amikor ennek meg kell tortennie.

A C bizonyos ertelemben valoban konnyebb, pl nem kell elgondolkodnod azon, hogyan adj ossze ket 16 bites szamot, vagy hogyan oszd el oket. De nem ez a lenyeg most, hanem, hogy a PIC mukodeset megertsd, es ezert mondja neked mindenki, hogy nyustold magas asm-ben, es mikor ledeket tudsz mar villogtatni es alapveto periferiakat is tudod kezelni vissza terhetsz C-re es minden sokkal konyebben fog menni a kedvenc program nyelveden. Topi cikkeben amit watt javasolt vannak C peldak is amugy...
(#) Csaplar hozzászólása Máj 10, 2008 /
 
Sziasztok!

Rajzoltam egy kapcsolást, amibe bekerült egy mtp-k4 -es valamint rs232 és 485.
Azt szeretném kérdezni, hogy nem jelent-e problémát, hogy mindegyik ugyanarra a lábára kapcsolódik a pic-nek (RC6, RC7 - RX, TX) a soros kommunikáció miatt?
Ha egy időben nem akarok mondjuk kártyát leolvasni és rs232-ön adatot küldeni, akkor nem baj, ugye?
Vagy a kapcsolási rajzba kell ilyenkor valami spéci dolog?

Köszi és jó pihenést mindenkinek!
(#) Thowra válasza trudnai hozzászólására (») Máj 10, 2008 /
 
Az elején még nem gondolkodok nagyobb progin.
Az asm tanulása is folyamatban van, meg is akarom tanulni, de jelenleg még csak ismerkedek a lehetőségekkel. Jelenleg többet mond egy output_high(Pin_B0) mint a bsf PIN_B0. Programozást soha nem tanultam, könyvekből és a segítőkész emberek válaszaiból tudom azt amit tudok. Olvasgattam több kezdőknek szóló szakirodalmat de majdnem mind az első bekezdésbe olyan dolgokat tárgyal amiről azt se tudom, hogy eszik e vagy isszák. Az elején feltételezi az író, hogy már volt az olvasónak dolga hasonló dolgokkal. Kicsit olyan mint ha az 1. osztályban az első nap azt mondanák, hogy mindenki írjon önéletrajzot. Az említett cikkeket végigrágtam, jobbat magyarul nem találtam. Itt le van írva sok hasznos dolog aminek nagy hasznát vettem.
(#) trudnai válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Na akkor elmondom en hogy kezdem az eletem szamitastechnikaval, es par eve PIC-ekkel hogyan kezdtem foglalkozni.

Mikor fiatal voltam, ugy 14-15 eves, internet messze nem letezett, sot meg BBS, CompuServe es semmi sem. Konyvek leztek, de magyarul szinte semmi sem mert a mikroszamitogepek Magyarorszagon gyakorlatilag hianyoztak a piacrol. Akkor kezdtek beszivarogni Commodore 64-ek, meg Spektrumok, de sem en sem a szuleim nem jatszani szerettunk volna, hanem komolyabb dolgokat csinalni, igy egy Apple II-sre szert tettunk. Arra meg annyi magyar szakirodalom sem volt mint a fent emlitett "jatek konzolokra". Nemetorszagbol szerezunk konyveket, de sjanos jomagam nemetet nem beszeltem - ma sem amugy. De akkor elkezdtem olvasni a konyvet szotarakkal, es elobb-utobb a szakszoveget erteni kezdtem, ha nem is a peldaprogramokat begepeltem (mert ugye letolteni nem lehetett...). Igy tanultam meg Apple Basicet es a 6502-est asm-ben programozni. Meg kell jegyezzem nem is asm-ben, hanem gepi kodban kellett azt is muvelni mert meg assembler sem volt nekem... azaz hexa szamokat gepeltem be egymas utan...

Neked itt a makro assembler, rengeteg ingyenes konyv a neten, letoltheto peldaprogramok garmadaja, akkor veszel es olyan gepet veszel amilyet csak akarsz es forumokon folyamatosan kerdezheted a szakembereket ( vagy a koklereket mint en ) hogy mit merre - szoval legyszi szedd ossze magad Jo indulatbol mondom!

PIC-nel en azt csinaltam, hogy semmim sem volt a legelejen, csak elkezdett erdekelni. Ugye ez par eve volt, igy hat nem volt akkora szenvedes az informaciot elerni mint anno. Letoltottem egy konyvet, a Mikroelektronika oldalarol, az a cime, hogy PIC microcontrollers. Namost semmim sem volt, egy darab PIC-em sem, azt sem tudtam mi a fene ez. A konyv alapjan letoltottem az MPLAB-ot, es a szimulatoraval probalgattam az ott elhangzottakal. Kb 1 honap volt mire azt tudtam mondani most mar neki mernek indulni valami kisebb projectnek... kozben minden nap 1-2 orat minimum, ha nem tobbet foglalkoztam vele, maskepp nem megy - es lehet amugy lassu is vagyok, lehet masnak gyorsabban is menne a tanulas.

Azt irod, hogy folyon elokapsz valami konyvet es mar az elejen nem erted mirol beszelnek. Namost Google-ba beirod a szavakat amiket ott latsz es olvasol. Lehe nem az elso talalat lesz az ami elmagyarazza neked mi az, lehet nem is az elso oldalon, lehet meg sem talalod. De ha nagyon nem talalod meg akkor meg ide irod, hogy "figyi, ez meg az mi a fenet jelent, nem talalom a magyarazatata a neten sehol sem". Es akkor itt paran valaszolnak hogy hol nezz utana, vagy lehet egybol meg is kapod a valaszt ha egyszerubb. Ha alapok hianyoznak elektronikabol meg programozasbol, sajnos azokat ossze kell szedni energia befektetes aran, kulonben egesz eletedben csak kerdezoskodhetsz hogyan huzz meg egy relet, hogyan merj meg 220V valto aramot stb.
(#) Thowra válasza trudnai hozzászólására (») Máj 10, 2008 /
 
Üdv!
A gond a program eleje (bemenet) és vége (kimenet).
A közepe C amiről van anyagom. Jó ideig pascaloztam de pl olyannal nem találkoztam egy pascal könyvben sem, hogy B2 láb kimenet és ott ha I=1 akkor fesz jelenik meg.
Azt belátom, hogy a kérdéseim néha idegesítőek lehetnek azoknak akiket ha álmukból felvernek is megír 5 perc alatt egy olyan progit ami kezel egy bazinagy lcd t, 100 gombot és még dallamot is játszik. A hardverrel sincs gondom.
A fő bajom nem az, hogy hogy kössem rá a ledet, relét, hűtőszekrényt hanem az, hogy programból hogy tudom be/ki kapcsolni. A bemenetre is hamar rákerült a gomb de a progival is kell valamit csinálni. Ha ez a két dolog megvan akkor már jöhet a kettő közti rész ami a C. A lényeg az volt, hogy meg tudjam oldani a rákötött cuccok kapcsolgatását a progiból.
(#) watt válasza trudnai hozzászólására (») Máj 10, 2008 /
 
Ha már így belemerültünk(jelzem ez csak úgy tűnik, hogy off, szerintem nem az, mert ez is szervesen kapcsolódik ahhoz, hogy az ember hogy jut el a PIC és egyéb mikro és nem mikro vezérlő megértéséhez. ).

Kedves trudnai! Szinte ugyanezt írhatnám le én is, azzal az eltéréssel, hogy Enterprise gépem volt először, amihez volt egy újság is egy pár évig(amíg sajnos kihalt), így aztán én a Z80 procit tanultam meg programozi szintén igazi gépi kódokkal fordító híjján. Szóval rokon lelkek vagyunk, ha minden igaz.

A PIC ismerkedésem úgy alakult, hogy egy vezérlőt kellettvolna építeni, és épp előtte találtam rá a ChipCad-re ahol ilyen IC-k már kaphatóak voltak(16F-ek). Vettem egy 16F871-et, letöltöttem az adatlapját és vettem egy könyvet, megtanultam az asm-ot, ami egyébként nem volt nehéz a hexa kódolás után, és azután, hogy már ismertem egy mikroszámítógép felépítését, amit végül is beleintegrálnak egy IC-be, ami nem más, mint maga a PIC.
2 hónap alatt kész volt a vezérlő, amiből 3-at építettem, amik azóta is működnek a nap 24 órájában.

Ma már könyv van a neten, adatlap pedig minden mennyiségben, csak neki kell állni. Bár csak 20 évvel ezelőtt is meg lett volna mindez a lehetőség, ma biztosan csak ezzel foglalkoznék, bár panaszkodni most sincs okom...
(#) trudnai válasza Thowra hozzászólására (») Máj 10, 2008 /
 
Sem a C-t sem a Pascalt sem pedig a Basicet nem mikrocontrollerekre terveztek. Sajnos vagy szerencsere ezeket a nyelveket implementaltak azzal a cellal, hogy kenyelmesen es gyorsan lehessen fejleszteni, es hogy ne kelljen minden egyes mikrovezerlo utasitaskeszletet megtanulni. Az architekturat ettol fuggetlenul meg kell tanulni minden esetben, ez alol nincs kibuvo.

Pascal konyvekben eppen ezert olyannal nem talalkozni, hogy X, Y vagy Z mikrokontolleren vagy W CPUn hogyan kell az outputot billegtetni. Ezek a konyvek nem errol szolnak. Ha ilyen kell akkor direkt szakiranyosodott temaju konyvet kell elovenni.

Akarhogy is van, amig azt nem tanulod meg, hogy pl PIC-eknel a portok a memoriaba cimtartomanyaba vannak reprezentalva, addig nehezkes lesz az eleted. Talalsz valami fuggvenyt amit "output_high"-nak hivnak es hasznalni fogod, de valoszinuleg el sem gondolkodtal rajta miert epp ez a neve ennek a fuggvenynek es mit is csinal valojaban. Ha barmi gondod lesz azt sem fogod tudni hol keresd a problema forrasat. Ennyi ido alatt amig ezzel a C-vel megszenvedtel valoszinuleg mar az asm-nel is itt tartanal, es akkor mikor mar gombkezeleseken is tul vagy meg esetleg 1-2 periferiat is hasznalni tudsz, akkor attersz C-re, es erteni fogod, hogy mit csinal a fordito, erteni fogod, hogy milyen fuggvenyek vagy elore definialt valtozok azok amiket keresned kell, es valoszinuleg az adatlapot is hasznalni fogod ami jo mert a PIC hivok szamara az adatlap a biblia. Ez amugy igaz minden elektronikai alkatreszre is.

Ha Potyo, Watt, Szilva es jomagam is, de azt hiszem masok is azt szoktuk hangoztatni, hogy asm-mel sajatitsd el az alapokat akkor valoszinuleg nem veletlen mondjuk. Nem szokott itt sokszor elhangozni ellen velemeny, max a kezdok reszerol akik meg nem ertettek meg, hogy a mikrocontrollerek NEM mikroszamitogepek.

Szivesen segitunk, ha gondolod, de helyetted nem tudjuk megtenni az elso lepeseket.
(#) trudnai válasza watt hozzászólására (») Máj 10, 2008 /
 
Igen, Watt, akkor rokon lelkek vagyunk Azt hiszem Szilva is muvelt hasonlokat. Amugy a Z80 es x86 azert is jo, mert onnan a 8051 es klonjaira viszonylag konnyu az atteres. De mindegy, szerintem jok ezek a PIC-ek, elejen kicsit furcsak voltak a megoldasok, de igy vegulis mindent megoldottak ezekben keves szamu utasitassal es kiszamithato vegrehajtasi idovel. Ha meg gyorsabb kell akkor elo lehet kapni az SX-eket vagy a nagyobb 24H/dsp piceket
(#) ledesgyerek hozzászólása Máj 11, 2008 /
 
Üdv!
Lenne egy kérdésem!
Lehetséges-e HEX fájlokat ASM fájlokká konvertálni?
Ha lehet ezt mivel tudnám megoldani?
Előre is köszönöm a segítséget.
(#) trudnai válasza ledesgyerek hozzászólására (») Máj 11, 2008 /
 
Szia ledesgyerek,

MPLAB-ban importald be a HEX file-t, es a program memoria view-ban lathatod az eredmenyt. Elotte persze be kell allitani a PIC tipusat a Device confignal.

Anno csinalgattam egy unPIC nevu visszafejtot ami egy Perl script, egyszer EXE-re is leforditottam, de azt hiszem az nem a legujabb valtozat. Lehet egyszer majd folytatom

Van egy IDA PRO nevu szoftver is, ez DOS-os es Windows-os progik visszafejtesere talan a legprofibb megoldas, es van PIC modulja is, de meg egyszer sem sikerult vele eredmenyt elernem - ha valaki mar probalta es sikerrel jart kerem ossza meg hogyan
(#) ledesgyerek válasza trudnai hozzászólására (») Máj 11, 2008 /
 
Köszönöm! Még abba kérném valakinek a segítségét, hogy hogy lehet ezt fordítva!

Most tanulok asm nyelven programozni és szeretnék egy módosított asm fájlt hex fájlra konvertálni. Ha lehet MPLAB-bal csinálnám!

Előre is köszönöm!
(#) trudnai válasza ledesgyerek hozzászólására (») Máj 11, 2008 /
 
ASM-bol HEX-be az a normalis ut, HEX-bol ASM-be van forditva!

Olvasd at Topi cikket, ott minen le van irva.
(#) foxpaw hozzászólása Máj 11, 2008 /
 
Üdv!

PIC16F877 -t próbálok programozni, a cél ADC+USART lenne, a HI-TECH Pic C nyelvet használom.

Kezdetnek egy nagyon primitív ledvillogtatást csinálok, ami 0.5 másodpercenként vált két led között.
(For( ; ; ) végtelen ciklus)
A szimuláción (picsimulator ide) kiválóan müködött, de élesben valahogy instabil a dolog: programozás után 2-3-percig megy a fél másodperces ledváltás de utána "beragad" és csak az egyik led marad égve. (Esetleg néha átkapcsol a másikra, hogy azután az égjen határozatlan ideig.)
Reset (MCLR a földre) ilyenkor már nem segít, sőt ha a tápot ki-be kapcsolom, az sem.

Ha újraprogramozom a PIC-et, akkor viszont megint működik 2-3 percig.

(A config biteknél a watchdog meg a brown out ki van kapcsolva!)

Programozni az MPLAB-ból programozok, egy gyári PicSTART PLUS programozóval, a verify (legalább 2x ellenőrizve) mindig sikeres volt. A nem működés után is sikeres!
A "data memory" tartalma viszont az istenért se törlődik.

A PicSTART manualjában azt írják, hogy a 0x0000 címen az első utasításnak NOP-nak kell lennie, ha 16F877-et használok. Az első pár byte-on van inicializáló utasítás (után ugrás és sok "szünet"), azokat szoktam "feljebb tolni" egy sorral és eléjük írni egy NOP-ot.
(Ahogy a kódot végignéztem, ez nem kavarhat bele a működésbe.)

Az a nyílvánvaló kérdésem van, hogy hol rontom el?

Köszönöm!
Következő: »»   203 / 1320
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