Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   504 / 1320
(#) benjami válasza rogers hozzászólására (») Jún 14, 2009 /
 
A 3.sor 2. oszlopában azt írja hogy 300-as baud-rate esetén 20MHz-nél a BRGH bitet 1-re kell állítani, a BRG16-ot szintén 1-be (hogy 16 bites osztót használjon), SPBRG értéke pedig 16665. Hogy ez utóbbit hogy tudod megtenni? Hát úgy hogy hogy SPBRG-be 0x19-et, SPBRGH-ba pedig 0x41-et írsz, mert a 16665 = 0x4119.
(#) icserny válasza benjami hozzászólására (») Jún 14, 2009 /
 
A bibi ott van, hogy a kérdező szerint 20 MHz a kristály és nem az oszcillátor frekvenciája. Az utóbbiról még semmit sem tudunk.

A megoldás nyitja valóban a BRG16=1 beállítás, az SPBGRH:SPBRG = n értéke viszont "attól függ"...

n = Fosc/(16*baudrate) -1

Itt most baudrate = 300 tehát:

  1. Fosc         n
  2. -------------------
  3. 20 MHz    4165
  4. 40 MHz    8332
  5. 48 MHz    9999

(#) benjami válasza icserny hozzászólására (») Jún 14, 2009 /
 
Igen, igazad van, a 20MHz-es kvarcról PLL-es beállítással lehet 48MHz, 32MHz, 24MHz, 16MHz, PLL nélkül pedig 20MHz, 10MHz, 6,66MHz és 5MHz -es Fosc frekvenciát kihozni.
az n = Fosc/(16*baudrate)-1 csak BRGH = 0 esetén évényes, BRGH = 1 esetén (amit én megadtam) az n = Fosc/(4*baudrate)-1 képlettel kell számolni (241.oldal alja). Azért választottam a BRGH = 1 -et mert ott 0% hibával lehet a 300 baudot kihozni szemben a másik 0,02%-os hibájával.
(#) icserny válasza benjami hozzászólására (») Jún 15, 2009 /
 
Idézet:
„Azért választottam a BRGH = 1 -et mert ott 0% hibával lehet a 300 baudot kihozni szemben a másik 0,02%-os hibájával.”

Igazad van, a BRGH=1 jobb választás.

Tanulság: a 20-3. táblázat folytatását is érdemes megnézni, mert ugyanarra az adatsebességre jobb közelítést is találhatunk.
(#) icserny válasza csanyipal hozzászólására (») Jún 15, 2009 /
 
Az odyssey program az EPIC plus programozóhoz készült, annál az LPT port bitkiosztása feltehetően más, mint az általad megépített kapcsolásnál.

Megoldási lehetőségek:

- Watt programozójához használd az általa ajánlott programokat.
- Az odussey programhoz építsd meg a mellékelt kapcsolást.
- Elvi lehetőség az odyssey program átírása.
- További lehetőség: a Vasco Parallel Port programmer megépítése

epic_plus.pdf
    
(#) kisszee hozzászólása Jún 15, 2009 /
 
Az itt található szoftveres pwm -et tanulmányozgattam, és egy valamit nem értek, ezt írja:

Idézet:
„This program will enable you to use 4 software PWM channels on the PIC16.
The PWM frequency is about 400Hz using a 8 MHz crystal.”


Hogyan jött ez ki neki? Azt írja, hogy a timer2 -t használja (16F88, 8-bites a timer2 ) megszakításnak és a PR2 -t feltöltötte 5 -el, ha jól értelmezem, akkor ez 251 -et tud előre fele számolni ( hogy idézzem trudnai egyik korábbi hozzászólásában írt elméletet, ehhez még hozzávettem szilva -szintén korábbi- hozzászólásában közölt számolást ), az tehát 2e06/251 =~ 8KHz, azt írja, hogy
Idézet:
„The PWM resolution is in 100 steps, from 1 to 100”
, nos akkor ez kb.: ~80Hz -nek tűnik nekem így, jobbról-balról számolva is. Én számoltam félre, vagy rosszul értelmeztem a számolás menetét ?
(#) potyo válasza kisszee hozzászólására (») Jún 15, 2009 /
 
Nem számoltam a többinek utána, de ha a PR2-be 5-öt tölt, akkor a Timer2 0-tól 5-ig számol, nem pedig 5-től 255-ig.
(#) csanyipal válasza icserny hozzászólására (») Jún 15, 2009 /
 
Köszönöm a tanácsokat!

Watt programozója is párhuzamos porton át vezérel, ennélfogva nem csak Watt programja jó hozzá, hanem pl.: éppen az odyssey is.

Ezért nem építem meg okvetlenül az EPIC programozót, ha már megvan Watt-é. Esetleg később megépítem.

Vasco programozóját is talán később megépítem, de most minek, ha megvan Watt-é?

Az odyssey program átírása fölösleges, hiszen csak be kell állítanom, hogy az LPT port melyik pin-jének mi a szerepe, és hogy inverz-e a pin.

Az egész beállítás csupán egyetlen szöveges állomány megszerkesztése, /etc/odyssey.conf
és az LPT meghajtó kiválasztása, majd az LPT portot esetlegesen lefoglaló kernel modulok letiltása.

Íme a jelen beállításom!

# rmmod parport_pc parport

/etc/odyssey.conf
----------------->
[io]
driver=directpp
port=0

# WPB_F18_PCB_v2_Prog Watt programozója
clkpin=3
rdatapin=10
wdatapin=-2
pwrpin=4
vpppin=5

Magyarázat:
clkpin - vezérli az órajelet
rdatapin - ki/bekapcsolja a PIC Vcc-jét
wdatapin - a PIC-be írja az adatokat
vpppin - vezérli a programozó feszültségét, a Vpp-t

Lehet, hogy én ezeket a pin-eket állítottam be rosszul, pedig néztem Watt kapcsolási rajzát!
(#) kisszee válasza potyo hozzászólására (») Jún 15, 2009 /
 
Hopsz hülye vagyok, hisz a szoftveres pwm -nél is a PR2 regiszter értéke határozza meg a periódusidőt; ha a programot is nézem - 4 lépésben változtatja a fényerőt - , így már kijön a közel 400Hz. Köszönöm szépen.
(#) icserny válasza csanyipal hozzászólására (») Jún 15, 2009 /
 
Idézet:
„Az odyssey program átírása fölösleges, hiszen csak be kell állítanom, hogy az LPT port melyik pin-jének mi a szerepe, és hogy inverz-e a pin.”

Igazad van, én voltam a figyelmetlen, hogy nem találtam meg ezt a konfigurálási lehetőséget (pedig direkt kerestem!).

A konfigurációs állományt biztos, hogy megtalálja a programod? A dokumentáció szerint ugyanis /usr/local/etc/odyssey.conf és a $HOME/.odyssey/config helyeken keresi alapértelmezetten. (ha a configure script futtatásakor lebeszélted az /usr/local-ról, akkor nyilván rendben van...)

A lábkiosztást szerintem jól adtad meg, a polaritáshoz nem tudok hozzászólni.
(#) szilva válasza csanyipal hozzászólására (») Jún 15, 2009 /
 
Én nem ismerem az odyssey-t és most nem is nagyon van időm utánanézni, de az elnevezések nekem kicsit mást sugallnak, mint amit leírtál. Én így gondolnám a lábak jelentését (watt rajzából néztem vissza a jeleket, amiket zárójelbe írtam a csatlakozó lábszámával együtt, remélem nem tévedtem):

# WPB_F18_PCB_v2_Prog Watt programozója
clkpin=3
rdatapin=10
wdatapin=-2
pwrpin=4
vpppin=5

Magyarázat:
clkpin - vezérli az órajelet (D1, pin3)
rdatapin - PGD láb olvasási iránya (ACK, 10)
wdatapin - PGD láb írási iránya (D0, 2)
vpppin - vezérli a programozó feszültségét, a Vpp-t (D3, 5)
pwrpin - vezérli a PIC tápfeszültségét (D2, 4)

Szerk: úgy látom, a lábak ezek szerint jól vannak beállítva, szerintem már csak a polaritást kellene jól eltalálni.
(#) norby1 hozzászólása Jún 15, 2009 /
 
Segítségeteket szeretném kérni! Most ismerkedek a 18F -es picekkel és egy kisebb problémába ütköztem. Többek között az RLNCF, bitforgató utasításnál -ellenben a 16F sorozattal- van egy 2. operandus. Utána néztem az adatlapban, hogy a BSR regiszter értékét állítja, de nem világos, hogy hogyan s miért!
(#) Hp41C válasza norby1 hozzászólására (») Jún 15, 2009 /
 
Szia!

A 16F sorozatnál az ilyen utasításnak két paramétere van: f - az operandus címe és d - az eredmény elhelyezésének kódja.

A 18F sorozatnál egy harmadik is van: a - Ram Access bit:

Ha a=0, akkor a tényleges címet az Access Ram módszerrel képzi:
Ha a cím 7. bitje 0, akkor a Bank0 alsó felét,
ha a cím 7. bitje 1, akkor a Bank15 felső felét, a speciális célú regisztereket címzi meg az utasítás.

Ha a=1, akkor a tényleges címet a BSR regiszter értéke 8 bittel balra léptetve és az utasításban megadott cím adja.
(#) norby1 válasza Hp41C hozzászólására (») Jún 15, 2009 /
 
Szia! Köszi a gyors válaszod, azt hiszem már kezdem kapisgálni...
(#) csanyipal válasza csanyipal hozzászólására (») Jún 15, 2009 /
 
Hiba a magyarázatban:
clkpin - vezérli az órajelet
pwrpin - ki/bekapcsolja a PIC Vcc-jét
rdatapin - adatot olvas a PIC-ről
wdatapin - adatot ír a PIC-re
vpppin - vezérli a programozó feszültségét

Ezt az öt pin -t kell megadnunk odyssey-nek!!

odyssey test módban a következő pin-ek kapcsolhatók ki/be:
p - power
v - vpp
c - clk
d - data (out)

pl.:
% + p
parancs bekapcsolja a PIC Vcc-jét, míg
% - p
parancs kikapcsolja azt.
(#) csanyipal válasza szilva hozzászólására (») Jún 15, 2009 /
 
Idézet:
„Szerk: úgy látom, a lábak ezek szerint jól vannak beállítva, szerintem már csak a polaritást kellene jól eltalálni.”

Akkor már ketten hisszük így!
A polaritást viszont Watt utasítása alapján adtam meg, miszerint:
Égető programok beállítása:
Az oshon és a WPB_F18_xxx programok beállításai:
Vdd, Vpp, Adat be, Órajel(PGC), nem inverz (nincs pipa)
Adat ki inverz(pipa)
Más programoknál(pl. IC-Prog) szintén a fázisokat(inverz, nem inverz) kell jól beállítani.

No, most akkor, nem mindegyik égetőprogramnál kell így beállítanunk?
odyssey esetén a mínusz jel inverz logikai jelet jelent, annak hiánya meg nem inverz logikai jelet.

Nálam most csak a wdatapin inverz, mint ahogy Watt sugallja.. Vagy nem jól értem Watt-ot?
(#) icserny válasza csanyipal hozzászólására (») Jún 15, 2009 /
 
Ha csak az invertálás volna a probléma, akkor a tápfeszültség ki/be kapcsolásnak működnie kellene (legfeljebb fordított fáziban). Mivel ez sem működött, a Printer port-tól kezdve követni kell a jel útját és egy voltmérővel minden kritikus ponton ellenőrizni kell, amíg ki nem derül, hogy hol tűnik el. Kezdheted pl. a Vdd-vel...

(#) szilva válasza csanyipal hozzászólására (») Jún 16, 2009 /
 
Igen, watt leírása alapján úgy kell lennie, és tudom, hogy ő ellenőrizetlen dolgokat nem ír le. Itt csak az a kérdés, hogy maga az Odyssey program hogyan értelmezi a szinteket.

Mindenképpen meg kellene vizsgálni egy multiméterrel a szinteket az Odyssey kezelőfelületéről egyenként kapcsolgatva a vonalakat, ahogy icserny is javasolta. Amíg ez nem működik helyesen, addig felesleges továbblépni.
(#) szilva válasza szilva hozzászólására (») Jún 16, 2009 /
 
Kerestem közben egy klasszikus printerportkapcsolást, ezen lehet követni, hogy melyik jel milyen átalakulásokon megy keresztül az adatbusz és a csatlakozó között:

Bővebben: Link
(#) trudnai válasza szilva hozzászólására (») Jún 16, 2009 /
 
Tokeletesen igazatok van, bar ettol fuggetlenul csak azt nem ertem miert kell ezzel ennyit szenvedni. Ott van watt oldalan az a program amivel O hasznalja es amit O ajanl. Azzal kell kiprobalni es ha mukodik akkor legalabb bebizonyosodik a hardver jo -- kesobb mg mindig el lehet szorikazni az Odyssey beallitasaival...
(#) trudnai válasza norby1 hozzászólására (») Jún 16, 2009 /
 
Annyit meg hadd fuzzek hozza, hogy ha nem adod meg a 3. parametert, akkor az alapertelmezett (a=0) access ram hozzaferes valosul meg -- emiatt sokszor 18F kodokban a specialis regiszterek hozzaferesekor tipikusan nem talalni 3. parametert mivel (lustasagbol) nem irjak oda.

A masik tipikus dolog amit 18F-eknel gyakran lehet latni, hogy az osszes olyan valtozot az access ram teruletre szerveznek amivel kozvetlenul kell muveleteket elvegezni (ill ha az nem elegendo az access ram terulet akkor egy erre kivalasztott bank teruletet is kijelolnek amit a BSR allando jelleggel kivalaszt, tehat nem valtogatjak a program vegrehajtasa kozben). A tobbi cimrol pedig MOVFF utasitassal olvassak ki ill irjak vissza az adatokat. Ez a fajta szervezes sokkal jobban hasonlit egy regiszter szervezesu architekturahoz (noha a PIC nyilvan ennek ellenere nem az) es csokkentheti a bankvaltasok szamat ezaltal is novelve a futtatasi sebesseget ill. csokkentve a kodmeretet.
(#) szilva válasza trudnai hozzászólására (») Jún 16, 2009 /
 
Az access bit alapértelmezését mindenképpen el kell olvasni az adott assembler doksijában, én az MPLAB helpjében ezt találtam:
a RAM access bit
a = 0: RAM location in Access RAM (BSR register is ignored)
a = 1: RAM bank is specified by BSR register (default)

Ennek ellenére tudom, hogy az SFR-ek címzésekor nem kellett az access bitet külön jelölni, mert a címből tudta a fordító.

A HiTech C18-as manualban is azt láttam, hogy a "banked" az alapértelmezett. Igaz, ott le is írják ez alól a kivételt, az abszolút címmel megadott, access-területre vonatkozó címeket (ilyenek pl. az SFR-ek).
(#) csanyipal válasza trudnai hozzászólására (») Jún 16, 2009 /
 
Egyik ok az, hogy Watt programjában nincs meg a tesztelési lehetőség, vagy én tévedek?

Másik ok az, hogy nem mindenki szereti a Windows operatív rendszert.

Harmadik ok: a játék kedvéért.

Itt vannak a képek az alappanelről, és a külső panelről, amit én készítettem a tanulóimmal.

Vasalásos technikával készültek a panelek, s azért lettek ilyen recések a vonalak, mert a nyomtatópapír nem volt a megfelelő: nem lehetett beszereznünk.

Az alappanel közepetáján, a tranzisztorok táján a Zener diódáknál látható, hogy néhány helyen nem lett fölforrasztva semmi. Ide kellettek volna a diódák, meg a Zener diódák.

Watt azt tanácsolta nekem, hogy ha egy 12 V-os Zenert teszek, az is jó lesz. A többi dióda, ill. Zener helyét át kell kötni. No, én lehet, hogy ezt az utóbbit szalasztottam el. Nézzétek már meg, s adjatok tanácsot, hova forrasszak még SMD rövidzárat?
(#) potyo válasza csanyipal hozzászólására (») Jún 16, 2009 /
 
Idézet:
„Egyik ok az, hogy Watt programjában nincs meg a tesztelési lehetőség, vagy én tévedek?”


Port check néven találod
(#) csanyipal válasza potyo hozzászólására (») Jún 16, 2009 /
 
A Port check csak a program felé adja az LPT bitjeinek beállításait, vagyis én egyáltalán nem vagyok abban biztos, hogy Watt programja ugyanakkor az LPT felé is kapcsolgatja az áramot.

Azt akarom mondani, hogy amíg nem kezdte el valaki Watt programjából a PIC programozását, addig nem is mérhetők ezek a feszültségek, szerintem.

Nekem meg még nincsen egyetlen PIC-em sem itthon, viszont az odyssey program meg lehetővé teszi ezeknek a feszültségeknek a ki/bekapcsolását, kimondottan a hardver tesztelése céljából.

Watt programjának Port check-je szerintem nem ebből a célból van, hanem csak abból a célból, hogy leellenőrizhessük, vajon a program majd a megfelelő pin-eken, a megfelelő jelet FOGJA-e adni a PIC programozásakor?
(#) potyo válasza csanyipal hozzászólására (») Jún 16, 2009 /
 
Ez után igazából nem értem, hogy neked mi kellene. Ha nem az LPT porton billegtetné a lábakat, akkor szerinted mit csinálna?
(#) Tomi111 hozzászólása Jún 16, 2009 /
 
Üdv!

Megint egy kezdő kérdésem lenne:Hogy adom meg mplabban a config word-öt? 16F819-ről lenne szó.
Eddig 16F84-nél így kezdtem pl:
LIST P=16F84
#INCLUDE "P16F84.INC"
__CONFIG _XT_OSC &_CP_OFF &_WDT_OFF &_PWRTE_OFF
ERRORLEVEL-302

Ennél hogy állítom be pl az oszcillátort INTIO1-es módba:
Adatlap:
FOSC2:FOSC0: Oscillator Selection bits
101 = INTRC oscillator; CLKO function on RA6/OSC2/CLKO pin and port I/O function on
RA7/OSC1/CLKI pin
de hogy adom meg vagy van más módja is?

Úgy látom ez nehezebb, mint gondoltam, de nem adom fel.
Ez az integrált oszc. mennyire pontos? Szokjátok használni?

Köszi Tomi
(#) Tomi111 hozzászólása Jún 16, 2009 /
 
Arra gondoltam, hogy ugye eddig csak off-okat írtam. Itt is alkalmazhatom? Amit ki akarok kapcsolni, azt ugyanígy soroljam fel OFF-okkal?
pl:
.... &_FOSC1_OFF & ...
az FOSC2 és FOSC0 on, úgyhogy azt nem kell beírni?
(#) potyo válasza Tomi111 hozzászólására (») Jún 16, 2009 /
 
Azt a néhány config szót igazán kiírhatod, ha ON, ha OFF kell belőle. Keresd meg a p16F819.inc fájlt, abban fel van sorolva az összes config lehetőség.

A belső oszcillátor pontossága az adatlapban meg van adva valahol az electrical characteristics részben. Keress rá ezen belül az internal szóra, és vagy táblázatosan, vagy grafikusan megadják. Alkalmazása feladatfüggő, ha elegendő a belső oszcillátor pontossága, akkor használjuk. Ha nem, akkor teszünk kvarcot.
(#) kisszee válasza Tomi111 hozzászólására (») Jún 16, 2009 /
 
Én úgy szoktam megnézni, hogy az egyes mikrovezérlőknél milyen konfigurációs biteket használhatok, hogy megnyitom az adott típushoz tartozó include filet. Az, hogy hány Hz -es legyen, az OSCCON regiszter bitjeivel ( adatlap ) tudod beállítani. Hogy mennyire pontosak azt én sem tudom, még nem csináltam időkritikus dolgokat. Van még az OSCTUNE regiszter is, ha jól tudom ez finamhangolásra való, igazából még sose szorultam rá, nincsen benne tapasztalatom.

Az .inc file szerint belső oszcillátornál két választásod van:
_INTRC_CLKOUT, _INTRC_IO nézzed meg adatlapban, hogy mit takar az IO, vagy CLKOUT, elég részletesen leírják.

Esetleg még ellátogathatsz ide, elég sok minden le van írva, nem mellesleg magyarul.
Következő: »»   504 / 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