Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   996 / 1319
(#) puli122 válasza watt hozzászólására (») Júl 11, 2011 /
 
Idézet:
„És itt mit fogsz megtanulni egy hét alatt?”

Milyen egy hétre gondolsz ?

Én például elég sokat tanultam.
(#) trudnai válasza puli122 hozzászólására (») Júl 11, 2011 /
 
Ertem, akkor elneztem, igy mar annyira nem is rossz a dolog.

Amugy ha ismered oket, meg sughatnad nekik, hogy az nem jo taktika, ha nem tuntetik fel a tanarokat. Akkor is ha nem tudjak memondani eppen ki er ra, oda kellene irni a nevuket es egy rovid par mondatos bekezdest az eletrajzukbol, hogy milyen tapasztalattal rendelkeznek PIC ill. oktatas teren, esetleg milyen publikaciokat csinaltak ez ugyben stb... Nem nekem kell, csak igy szokas es ez nekik lenne jo hisz latnak a tanfolyamra jelentkezok mennyire komoly ott a szakmai garda...

Masik, hogy ha ez a gyakorlasi lehetoseg ott van, azt feltuntethetnek, hogy X ido szabad labor gyakorlat. Ez is sokat emelne az egesz erteken.
(#) kalmangabi válasza bbalazs_ hozzászólására (») Júl 11, 2011 1 /
 
Üdv!
Köszi, hogy írtatok!
Alapvető programozási hibák előfordulhatnak tekintve, hogy a "tudásomat" a netről szedegettem össze. Azok a vektorok amikről írtál pld nem tudom, hogy mik, de gyanítom, hogy azok amiket a mplabban a kódok elején az ilyen kettőskeresztes define-s részekbe írnak. Ami ezt illeti szerintem az oshon féle szimulátor megoldja magától mert be kell állítani a pic típusát órajelét stb. Amúgy meg nem vagyok teljesen tudatlan csak az előbbi okból eredően előfirdulhat hogy hiányoznak bizonyos alap tudnivalók... De ettől függetlenül írtam már 1000 soros kivezérlésmérős kódot és az működik (egyenlőre szimulátorban ) rendesen.
Nagyon sok rendes kódot megnéztem már és a memória foglalás terén nem találtam különbséget.
Az ugrások nem értem miért rosszak, de ez most nem lényeg. Am meg nem szeretem ha minden második sor meg van címezve. A RET se tudom, hogy mit csinál, de örülnék ha elmagyaráznád, de ha az INIT részre való rácsorgás azt jelenti, hogy újraindul a program akkor amúgy nem szokott ilyet csinálni.
A PIC egy 16f871 es.
Ha leírnád a másféle memóriadefiniálós módszert akkor megpróbálnám úgy is, hátha működik.


Üdv Gabi!
(#) trudnai válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Idézet:
„akkor a szimulátor nem mindig használja a 20 as regisztert a szimuláció közben, sőt van olyan, hogy a kód egyik részénél azt használja a másiknál meg nem és így egy teljes baromság jön ki az egészből.”


Gondolom a bankokat nem allitottad be ill elallitottad valahol -- hasonlo hibakra gondolnek elso korben...
(#) Attila86 hozzászólása Júl 11, 2011 /
 
Áttúrtam az adatlapot és kibogarásztam minden konfigurációs bitet aminek köze lehet a PIC18F26K80 RC0 és RC1 lábain lévő SOSCO SOSCI funkciókhoz:
  1. movlw   b'01011110'     ;4MHz
  2.         movwf   OSCCON
  3.         bcf             OSCCON, SOSCEN 
  4.         bcf             OSCCON2, SOSCGO
  5.         bcf             T1CON, SOSCEN  
  6.         bcf             T3CON, SOSCEN  
  7.         bcf             OSCCON2, SOSCRUN

De továbbra is stabil H szint mérhető ezen a két lábon, hiába állítok be a programban nullát (bcf LATC,0 és bcf LATC,1). Azért gondoltam hogy a másodlagos oszcillátor (SOSC) lehet a ludas, mert ez a közös a két lábban.
Valami ötlet? Kezd kilátástalanná válni a helyzet...
(#) Attila86 válasza Attila86 hozzászólására (») Júl 11, 2011 /
 
Találtam még valamit, CONFIG1L regiszter SOSCSEL<1:0> bitjei:
Idézet:
„SOSCSEL<1:0>: SOSC Power Selection and Mode Configuration bits
11 = High-power SOSC circuit is selected
10 = Digital (SCLKI) mode; I/O port functionality of RC0 and RC1 is enabled
01 = Low-power SOSC circuit is selected
00 = Reserved”

Szerintem ez lesz az! De nem ismer ilyen regisztert hogy "CONFIG1L". Aha... ezt kell a program elején a sok "config"-al beállítani, igaz?! És melyik lesz az a sok közül?
  1. ;              config CPUDIV = NOCLKDIV
  2. ;              config USBDIV = OFF
  3. ;              config FOSC   = HS
  4. ;              config PLLEN  = ON
  5.               config FCMEN  = OFF
  6.               config IESO   = OFF
  7. ;              config PWRTEN = OFF
  8.               config BOREN  = OFF
  9. ;              config BORV   = 30
  10.               config WDTEN  = OFF
  11.               config WDTPS  = 32768
  12.               config MCLRE  = OFF      ;
  13. ;              config HFOFST = OFF
  14.               config STVREN = ON
  15. ;              config LVP    = OFF
  16.               config XINST  = OFF
  17. ;              config BBSIZ  = OFF
  18.               config CP0    = OFF       ;kódvédelem
  19.               config CP1    = OFF       ;kódvédelem
  20.               config CPB    = OFF       ;kódvédelem
  21.               config WRT0   = OFF
  22.               config WRT1   = OFF
  23.               config WRTB   = OFF
  24.               config WRTC   = OFF
  25.               config EBTR0  = OFF
  26.               config EBTR1  = OFF
  27.               config EBTRB  = OFF
  28. ;               config  OSC = INTIO67
  29. ;               config  OSC = HSPLL
  30. ;               config  WDT = OFF
  31.  
  32.  
  33.  
  34.         config  RETEN   =       OFF             ;stabkocka(?) kikapcs
  35.         config  FOSC    =       INTIO2  ;belső oszcillátor
  36.         config  PLLCFG  =       OFF             ;PLL kikapcsolva

A Configure/Configuration Bits ablakban megnéztem, "High Power SOSC circuit selected"-re van állítva. Vagyis volt mert látom hogy itt át tudom állítani... de az imént idézettek közt semmi sem változott. Na mindegy, kipróbálom most hátha jó...

Szerk.:
Sajnos semmi változás. Megnéztem rögtön; a lefordítás és beégetés után a Configure/Configuration Bits ablakban visszaugrott "High Power SOSC circuit selected"-re.
(#) Hp41C válasza Attila86 hozzászólására (») Júl 11, 2011 /
 
Szia!

CONFIG1L: SOSCSEL<1:0> bitek 10 = Digital (SCLKI) mode; I/O port functionality of RC0 and RC1 is enabled
CONFIG1H: IESO, FCMEN bitek
(#) Attila86 válasza Attila86 hozzászólására (») Júl 11, 2011 /
 
Aha...
  1. config   SOSCSEL = DIG

De nehéz szülés volt... szuper!
(#) Attila86 válasza Hp41C hozzászólására (») Júl 11, 2011 /
 
Köszönöm neked is!
(#) kalmangabi válasza trudnai hozzászólására (») Júl 11, 2011 /
 
Valószínűleg nyertél.
A file map szerint az adatlapban két részben van a memória. Van 96 bájtnyi a bank0 ban és 32 bájtnyi a bank1 ben. A bank0ás rész 0x20 tól, a bank 1es 0xA0 tól kezdődik vagyis stimmel amit az első hozzŕszólásomban írtam megfigyelésként.
Akkor annyi hogy mindig be kell írnom egy memóriŕs művelet előtt, hogy

BANSEL BANK0

?

Akkor viszont azt nem értem, hogy pl a tris biteknél miért az kell, hogy
BANKSEL TRISX
ha a tris regiszterek a bank1 ben vannak. Vagyis, hogy miért nem az hogy
BANKSEL BANK1

Várom a megvilágosodást.
(#) Hp41C válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Szia!

Fordítva....
A Bank0 kiválasztásához a banksel PORTB,
a Bank1 kiválasztásához a banksel TRISB forma ajánlott...
(#) Hp41C válasza Attila86 hozzászólására (») Júl 11, 2011 /
 
Új kontroller, új beállítások és sajnos új errata...
(#) icserny hozzászólása Júl 11, 2011 /
 
A ChipCAD honlapján látom a hírek között, hogy új mikrovezérlők vannak a láthatáron!

A Microchip új, 60 MIPS-es 16 bites dsPIC33E és PIC24E PIC mikrovezérlő családot jelentett be. A nagyteljesítményű dsPIC33 és PIC24 típusokat az "E" típusjelzéssel látták el. 536 KB program memória, 52 KB RAM, 4 UART, 4 SPI, 2 I2C, 2 ECAN, USB 2.0 OTG, kibővített perifériakészlet, és 122 I/O láb ami csak pár jellemző a legerősebb, 144 lábbal rendelkező dsPIC33E illetve PIC24E képességeiből.

A nagy memória és az USB illesztő mellett édekes az is, hogy a 9 db számlálóból 8 db remap-pelhető. Hogy ezt miért nem tudták hamarabb kitalálni!
(#) treshold hozzászólása Júl 11, 2011 /
 
Sziasztok!
Hogy lehetne a PIC adatmemória tartalmát kiolvasni PICKIT2-vel?
(#) kalmangabi válasza Hp41C hozzászólására (») Júl 11, 2011 /
 
Dehát a mondjuk a bank0 miért nem a
BANKSEL BANK0
Val kell kiválasztani ha egyszer ez a neve?


Ha mondjuk a trisc be akarok írni akkor annak a bankját miért a
BANKSEL TRISB
-vel kell?

Vagy akármelyik egy a kiválasztandó bank által tartalmazott regiszter kiválasztásával ki lehet választani az adott bankot?

Nem értem a logikát...

De az eddigiért is köszi mindenkinek!

:worship:
(#) bbalazs_ válasza treshold hozzászólására (») Júl 11, 2011 /
 
RAM-ra vagy DATA EEPROM-ra gondolsz?

Az elobbit sehogy, az utobbit meg nehogy mar ne tudja...
(#) bbalazs_ válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Hogy egyszerubb legyen. Kulonben neked mindig tudni kellene, hogy az adott regiszter melyik bankban van es annak megfeleloen a bank0,1,2,stb-t irogatni. Igy meg eleg a regisztert kivalasztani, a fordito tudja, hogy ez melyik bankban van es automatikusan oda allitja a szamot. A leforditott .HEX-ben termeszetesen a megfelelo szam fog allni ott a banksel utan.

Igy kell annak, aki nem 18F-et hasznal... ott az osszes altalanos regisztert egyszerre erheted el, igy nem kell ezzel foglalkozni, csak akkor, ha sokkal tobb memoriat hasznalnal fel valtozoknak vagy mondjuk USB puffernek.
De az indexregiszter meg ezt is megoldhatja.

Egyszeruen nem ertem ezt az eszelos ragaszkodast a 16F84 es leszarmazottaihoz...
(#) treshold válasza bbalazs_ hozzászólására (») Júl 11, 2011 /
 
RAM-ot kellene kiolvasni
0x0801-tól 0x17FE-ig
(#) kissi válasza treshold hozzászólására (») Júl 11, 2011 /
 
Szia!

Debuggolás alatt ki tudod olvasni a RAM-ot, pont ez a lényege...

Most látom az új hozzászólásodat: ez milyen PIC ( én nem szoktam ennyi RAM-ot olvasni ilyen magas címről, de szerintem a debuggolás miatt működnie kellene! )?!

Steve
(#) bbalazs_ válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Igy kezdodik egy progi: A fejlecet es az include-ot beteszed.

  1. list            p=18f2525      
  2.         #include        <p18f2525.inc>


Ha akarsz valami definiciot, tehat hogy ezekkel a nevekkel hivatkozhass ra, akkor teszel par ilyet:

  1. #define seg1            PORTA,4
  2. #define seg2            PORTA,5
  3. #define seg3            PORTA,3
  4. #define seg4            PORTA,2
  5. #define DATA_PIN        0       ;port a,0
  6. #define hall1           PORTB,0
  7.  
  8. #define step1           LATB,1
  9. #define step2           LATB,2
  10. #define step3           LATB,3
  11. #define step4           LATB,4
;

Johetnek a valtozok:
En ezt szoktam hasznalni, a szam mutatja, hogy honnan indulnak a valtozok.

  1. cblock 0x00
  2. szorzolo
  3. TEMP
  4. INDEX
  5. LOOP1
  6. endc


***************************

Es innen jon a lenyeg, a ket (harom) vektor.
Nem tudom, te hogyan uszhattad meg, de mindegy.
A PIC-eknel ezek valtozhatnak, nem mindenhol ott van, adatlap megmondja.

  1. ORG 0x0000
  2.         goto Start
  3. org 0x0008
  4.         goto interup    ;high priority interrupt, compatibility int.
  5. org 0x0018
  6.         retfie          ;low priority interrupt
  7.  
  8. ORG 0x002A
  9. Start
  10. ;progi indul


Szoval azert a program elejenek igy kellene valahogy kineznie. Persze, ezek onkenyes ertekek.
Az ugrasok azert rosszak, mert memoriaszervezes miatt az eltero tipusu PIC-ek eltero szohosszt hasznalnak. Igy masik PIC-en az osszes ilyet irhatod at vagy hibas helyre ugrik. Miert faj az, hogyha BABA1, BABA2, BABA3 stb. lesznek ott?
A RET az az en hulyesegem, RETURN-t kellett volna irnom, csak a 8x86-os assemblybol annyira megszoktam mar, hogy makrot is irtam ra, hogy itt is hasznalhassam.

A szimulator biztosan jo, de nagy meglepetesek lesznek szerintem, ha csak ez alapjan akarod majd valodi PIC-ben futtani a kododat.
(#) treshold válasza kissi hozzászólására (») Júl 11, 2011 /
 
Röviden el tudnád mondani?
Még nem használtam ezt a funkciót.
PICKIT2-vel megy?
(#) kissi válasza treshold hozzászólására (») Júl 11, 2011 /
 
A PK2-t ne programozónak állítsd be, hanem debuggernek és így töltsd be a programot. Ezután gyakorlatilag szinte ugyanúgy tudod használni, mintha MPLABSIM-et használnál ( breakpoint és ott meg tudod nézni a regiszterek állapotát a WATCH-ban). A korlátokat nem tudom, mert én nem használtam még ennyi RAM-ot, amire kíváncsi lettem volna!

Steve
(#) MPi-c válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Idézet:
„Ha mondjuk a trisc be akarok írni akkor annak a bankját miért a
BANKSEL TRISB -vel kell?”

Ki mondta, hogy azzal kell? A TRISC előtt a BANKSEL TRISC-vel illik a bankot kiválasztani. Mivel mind a kettő a bank1-ben van a BANKSEL TRISB-nek és a BANKSEL TRISC-nek is ugyan az a hatása. A lényeg, hogy a regiszter manipulálása előtt a megfelelő bankot válaszd, és amíg ugyanabban vagy, nem is kell ismét a BANKSEL.
(#) Kovács Tibor hozzászólása Júl 11, 2011 /
 
Sziasztok!

Itt a fórumon találtam digit óra és hőmérő kapcsolási rajzot, ezt szeretném megépíteni.
A rajzon 16F628A típusú PIC szerepel, de az üzletben keresve "csak" PIC 16F628A-I/P jelűt találtam. Kérdésem hogy a típusszám végi I/P jelölés mit jelent, jó-e ez a PIC nekem? (gondoltam hogy a tokozásra utal, csak ott bizonytalanodtam el amikor az SMD tokozás mellé ugyanezzel a számmal más paramétereket dobott a katalógus) ...kösz
(#) Hp41C válasza kalmangabi hozzászólására (») Júl 11, 2011 /
 
Szia!

Többféle filozófia használható:
- A programozó minden esetben tudja, hogy a következőkben melyik bank-ban található regiszterekkel szeretne foglalkozni: ekkor
  1. #define Bank0 0x000
  2. #define Bank1 0x080
  3. #define Bank2 0x100
  4. #define Bank3 0x180

sorok után használhók a banksel Bankx formák a bank0..3 kiválasztására. A banksel makro mindig állítja az RP1 és az RP0 bitet is. De ha pontosan tudom, mit szeretnék, akkor elég lehet pl csak az RP1 -et állítani ld. bank2 kiválasztása, a Bank0 beállításának tömör, de mellékhatásokat okozó lehetősége a clrf STATUS...

- Lehet saját macro -kat készíteni a bankváltáshoz
  1. macro Bank1
  2. bcf STATUS,RP1
  3. bsf STATUS,RP0endm

- Ha azt szetetnénk elérni, hogy a forrás több fajta (a családhoz tartozó) kontrolleren is fordítható legyen kicsit bonyolult lesz a fentiekkel. Pl. a 16F628 -ban az EEADR, EEDATA és az EECON1 regiszterek a Bank1 -ben vannak, a 16F88x -ben az EEADR, EEDATA a bank2-ben, az EECON1 pedig a Bank3 -ban.
A forrásban célszerűbb a következőket használni:
  1. banksel EEADR
  2. movwf EEADR
  3. banksel EECON1
  4. bsf EECON1,RD
  5. banksel EEDATA
  6. movf EEDATA,w
.
Így a kontzroller típusától függetlenül a jó bank kiválasztás fordul a kódba (persze ára van - akkor is belekerül a kódba, ha nincs is rá szükség...)
(#) Hp41C válasza Kovács Tibor hozzászólására (») Júl 11, 2011 /
 
Szia!

I - ipari kivitel - hőmérséklet tartomány
P - plastik DIP tokozás.
(#) Kovács Tibor válasza Hp41C hozzászólására (») Júl 11, 2011 /
 
Kösz! Akkor intézem!
(#) bbalazs_ válasza Kovács Tibor hozzászólására (») Júl 11, 2011 /
 
I mint Industrial - az ipari homerseklet-tartomanyra utal, azt hiszem -40 es +125 fok kozott fog mukodni.
A P a Plastic DIP, a tokozasra utal, vagyis ez nem SMD, hanem hagyomanyos 2.54mm labtavolsagu IC kinezetu valami.
(#) treshold válasza kissi hozzászólására (») Júl 11, 2011 /
 
Köszönöm a segítséget. Kipróbálom
(#) kormika hozzászólása Júl 11, 2011 /
 
Sziasztok! Én azt szeretném megkérdezni, hogy a Velleman VM134-es PIC programozójáról kinek mi a véleménye, hozzájutottam egy ilyenhez, és ha ez hobby célra megfelel akkor nem vennék másik programozót.Bővebben: Link
Következő: »»   996 / 1319
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