Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   233 / 1320
(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
A bekotes jonak tunik, de az IO bovito regisztereinek a cimzese 8 bites mint ahog azt watt, Topi es szilva mar emlitette. A Te write es read rutinjaidban azinban 16 bites cimet kuldesz el... nyilvan eeprom-ra lett ez tervezve.

Irdd at 8 bitesre es valoszinuleg jo lesz.
(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Úgy programoztad, hogy a Vpp ráment a bővítő IC reset lábára?
No látod ilyen dolgokra nem gondol a magunkfajta egyszerű ember!
Akkor lehet, hogy annak annyi....

Szüntesd meg ezt a megoldást a belinkelt példa szerint(szilva által volt az imént) és próbáld meg utána 8bites címmel! Talán szerencséd lesz...

Még annyit, hogy a rajzon, amit csatoltál, nem szerepelt ICSP csatlakozó, így fel sem merült bennem, hogy a helyén progizod az IC-t, holott ez a gyakorlat...
(#) szilva válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Adatlap abszolút maximum értékek szekcióból:

Voltage on VDD with respect to VSS .......................................................................................................... -0.3V to +5.5V
Voltage on all other pins with respect to VSS (except VDD)............................................................. -0.6V to (VDD + 0.6V)

Hát, ez alapján maximum 6.1V lehet bármelyik lábon.

Ez pedig a 4520 adatlapjából:

D110 VPP Voltage on MCLR/VPP/RE3 pin 9.00 — 13.25 V

Azaz programozáskor ott minimum 9V fog megjelenni a programozó felől, hacsak nem használsz low voltage programming-ot.

Szóval ha az áramkörben, a helyén programoztad programozóval a 4520-at, akkor nézd végig, mik vannak rákötve a PIC Vpp lábára közvetlenül, mert azok nem biztos, hogy túlélték (ha bootloadert vagy low voltage programming-ot használsz, akkor nincs ilyen veszély).
(#) watt válasza szilva hozzászólására (») Jún 24, 2008 /
 
Talán, ha az égető Vpp terhelhetősége véges, és a bővítő lábain van dióda a Vdd felé, akkor esetleg megúszta a cucc...
(#) trudnai válasza watt hozzászólására (») Jún 24, 2008 /
 
Hat valoban nem, teljesen elsiklottem efelett Azt hittem kikapkodja a chip-et programozashoz...

Csaplar, van egy demo board MCP23x17 -re (I2C es SPI valtozat is rajta van a panelen). Annak a User's Guide-jaban ott egy kapcsolas, hogy az MCLR-t hogy kotottek be, ott egy diodaval vedik a reset agat a Vpp-tol, nezd meg es aszerint modositsd az aramkorod.

Ettol fuggetlenul azt a cimzest irdd at, es hatha van akkora makod, hogy az IC meguszta, ha nem akkor ahogy szilva mondta nekem 250Ft, ugyhogy ne sokat sirankozz felette, hantold el es tedd be a masikat.
(#) Csaplar válasza szilva hozzászólására (») Jún 24, 2008 /
 
ICD2-vel programoztam fel! Akkor lehet, hogy meghalt?

Módosítottam a mellékelt forrás szerint, szerintem most minden jónak kell, hogy legyen, de így sem csinál semmit...

De az úgy jó ugye, hogy a LATA címre küldök egy 1-et?


main.c
    
(#) Topi válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Ne az írással szenvedj, olvass róla és nézd meg szkóppal az adat vonalat.
Ha bármi adatot is küld vissza azt látni fogod. Ha küld, nem halott.
(#) Csaplar válasza Topi hozzászólására (») Jún 24, 2008 /
 
Nincsen sajnos semmi ketyerém hozzá... vagyis van egy öreg multimeterem. Azzal tudok valamit kezdeni?

(#) watt válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Kicsi keveredést vélek felfedezni...
Először is konfigolni kell a bővítőt:
S, (OP+W), ADDR, adat , P 'ezt annyiszor, ahány reget be kell állítani

Ha már egyszer beállítottál egy port(ill. regiszter) címet, és folyamatosan arról olvasol, vagy arra írsz, akkor nem kell az ADDR-t kivinni újra.
S, (OP+W/R),ADDR, adat, SR, (OP+W/R), (Dout/Din), SR, (OP+W/R), (Dout/Din), ....., P

(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Meg mindig nem jo! Te hol latod azt az adatlapban, hogy az iras elott olvasni kellene? EEPROM-nal lehet,hogy igy van, de ez NEM ugyanaz az eszkoz. Az I2C csak egy adatkommunikacios protokoll a hardware absztrakcios layerrel egyutt, de nem azt irja le az eszkoz milyen parancsokat ert meg. Azt minden eszkoznel ki kell nezni az adatlapbol. Mellekeltem a kommunikacios abrat, szerintem eleg vilagos, a reszletek pedig az adatlapban...
(#) watt válasza trudnai hozzászólására (») Jún 24, 2008 /
 
Bevallom a második ábracsoportot nem értem. Hogy olvashat, ha nincs az elején beállítva a cím, valamint miért kellene először írni az olvasáshoz?

Az ezeket megelőző ábrákon(adatlap 7. oldal), egyértelműbb a folyamat. (csatoltam)
(#) Csaplar válasza watt hozzászólására (») Jún 24, 2008 /
 
Ha írni akarok akkor a felső ábrát kell néznem. Abban mi az az olvasós rész? Ott milyen adatot vár a bővítő IC-től?

Az NACK-k is feleslegesek? (az ábrán azok sem szerepelnek...)
(#) szilva válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Én azt úgy értelmezem, hogy a nyilakon lehet "közlekedni", azaz az indulás és a cím megadása után megteheted azt, hogy kiolvasol valahány regisztert (a második sor szerint), majd írsz valahány regisztert (a harmadik sor szerint).

Azt hiszem, lényeges, hogy az "ADDR" hol szerepel, mert valószínűleg csak ott szerepelhet. Ezért kell egy "irási" utasításkóddal indítani az olvasási műveletet is, ha meg akarjuk adni, hogy az olvasás honnan történjen. Az olvasási műveletek előtt ugyanis sehol nem látok "ADDR" blokkot.
(#) Topi válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Az embernek elveszi a kedvét a segítéstől, ha a segítségkérő nem hajlandó önállóan utánaolvasni valaminek.

Nézd meg már kérlek az adatlapot. Olvasd el, hogy kell kommunikálni vele. Első ábra.

Kevered a blokk diagramot a tényleges byte struktúra diagramokkal.
(#) Csaplar válasza Topi hozzászólására (») Jún 24, 2008 /
 
Egy teljesen üres progiban az inicializálás után kiadok egy I2C_start()-ot, majd azt vettem észre, hogy amikor ki akarnám írni a címet, akkor a while(!PIR1bits.SSPIF) continue; soron megáll és nem megy soha tovább...

Ez jelentheti azt, hogy rossz az IC?

Köszi
(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Nincs olvasas a felso abraban csak iras. Az is le van irva a doksiban, hogy a "Din" az MCP23017 szempontjabol "in" azaz bemenet... mivel ez annak a doksija. Igy a "Dout" ennek megfeleloen az IO bovito kimenete - azaz a PIC szamara ez lesz a bemenet.

Cimzes is le van irva, mellekeltem, most jol ossze szabdaltuk a doksit, de hatha igy elolvasod Szoval ha megfigyeled az abrat a cimzest az R/W=0 -val adod ki, azaz mintha Write muveletet inditanal, csak nem kuldesz adatot, igy a cim regiszter erteke nem fog inkrementalodni akkor sem ha szekvencialis modban doglozol. Ehelyett egy SR-t adsz ki, es inditod az olvasasi muveletet a R/W=1 -es csomaggal. Wattnak igaza van abban, hogy az abra amit legeloszor mellekeltem nem jo, ill jo csak nem cimzesre Szoval ott a W mogott egy ADDR is hozza kepzelendo, epp ugy ahogy az irasnal van.

Nem szekvencialis modban (tehat byte modban) nem kell minden olvasaskor kulon cimezgetni, eleg egyszer beallitani a cimet es utana ugyanazt a cimet olvashatod - pl ahogy az adatlap is irja ha pollozni akarod az egyik input bitet vagy ha folyamatosan ugyanazon a porton kell biteket billegtetni.

Lenyeg, hogy elobb probald meg, hogy en szerintem a write muvelet egyszerubb - es most itt ellen kell erveljek Topinak - pont emiatt, mert akkor a cimzest nem kell kulon megejteni. Ha az IO labat sikerul billegtetni akkor mar helyben vagyunk, persze ehhez at kell kapcsolnod outputra, es pl be kellene kapcsolni a pull-up-okat hogy lehessen merni kivulrol pl egy multimeterrel - ha mar nincs scope-od.

Megjegyzem ha lenne Proteusod azzal lehetne ezt az aramkort szimulalni es melle a firmware-edet szimulalva debuggolgatni, es akkor nem kellene scope, elfustolt alkatresz stb, viszont a firmware-t be lehetne szepen loni mire aramkorileg is fel vagy keszulve kiprobalni a valosaban is.
(#) Csaplar válasza trudnai hozzászólására (») Jún 24, 2008 /
 
Oksi! Köszi a sok észrevételt...

Ma már nem tudok vele foglalkozni idő hiányában, de hamarosan újra nekilátok!

Mégegyszer köszi!

Üdv
(#) trudnai válasza Csaplar hozzászólására (») Jún 24, 2008 /
 
Eh, hulyeseget irtam Nem pullupokat kell kapcsolgatni, hanem arra kell ugyelni nehogy open drainbe legyen kapcsolva - de az alapbol ugysem OD-s, szoval mindegy - asszem mara befogom a szam mert nem tudok erre is koncentralni meg a munkamra is
(#) miklosch hozzászólása Jún 26, 2008 /
 
Sziasztok!

Van egy programom, amit 16F84-re írtam, de át szeretném írni 628-ra, de nem tudom, hogy hogyan kell megírni az inicialicálást, hogy az A port 0,1,2-es lábai bemenetek, a B-port 0,1,2,3,4 lábai pedig kimenetek legyenek. A gondom az, hogy nem tudom, hogy hogyan kell beállítani, hogy az RA6 és RA7 lábakon a kvarc legyen
A 84 inicializálása az alábbi:

INIT BSF STATUS,RP0
MOVLW B'00000111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0
CLRF PORTB
(#) watt válasza miklosch hozzászólására (») Jún 26, 2008 /
 
Ezt a részt nem kell változtatni ugyanaz.
Az oszcit pedig a config biteknél kell beállítani(adatlap 14.1 bekezdés... 4MHz-től HS mód jó.)

Egyébként nem is ez a rész az érdekes, hanem ahol az AD-t kikapcsolod(komparátorokat) Ezt az adatlap 9. bekezdésénél találod a 9-1 ábrában. (CM2:CM0=111)
(#) miklosch válasza watt hozzászólására (») Jún 26, 2008 /
 
Köszi, valahogy már megyeget, de valahogy nem akarja definiálni a változóimat. Ezek így vannak 84-re:

CBLOCK 0x0C
T1
T2
SZAML
TEMP
ENDC
(#) miklosch válasza watt hozzászólására (») Jún 26, 2008 /
 
Köszi, valahogy már megyeget, de valahogy nem akarja definiálni a változóimat, vagy nem tudom mi van vele, de nem azt csinálja, amit akarok.
A mostani eleje:


LIST P=16F628
#INCLUDE "P16F628.INC"
__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF
CBLOCK 0x0C
T1
T2
SZAML
TEMP
ENDC

ORG 0
nop

INIT CLRF PORTA
MOVLW 0x07
MOVWF CMCON
BCF STATUS, RP1
BSF STATUS, RP0
MOVLW 0x1F
MOVWF TRISA
MOVLW 0x00
MOVWF TRISB
BCF STATUS,RP0
CLRF PORTB

(#) trudnai válasza miklosch hozzászólására (») Jún 26, 2008 /
 
628-nal hol kezdodik a RAM? (Adatlapbol nezd ki)
(#) pepe33 hozzászólása Jún 26, 2008 /
 
Sziasztok !

Csináltam egy egyszerű kis ADSL ujainditó kütyüt 16F628A val, amit mobiltelefonnal inditok.
Sajnos a programot nem sikerült rendesen elkészitenem bele. Elsőször CCS C ben próbáltam megírni, de a sorosport vétel sehogy nem jött össze.
Most MIKROELEKTRONIKA MIKROC ben írtam meg , így jó a sorosport vétel, viszont sorosporton nem tudok küldeni adatot.
A kapcsolás tuti jó mert másik forditóval müködik a sorosport küldés ( csak ott a foagadás nem megfelelő)

Van esetleg valaki aki a tuda segiteni ezel kapcsolatosan ?

adslrest.c
    
(#) zsuscsinyo hozzászólása Jún 26, 2008 /
 
Sziasztok!
Kellene nekem egy kis segítség ugyanis most ismerkedek az interrupt-tal. Van egy PIC16F871-em és 32.768KHz es kvarc oszcit kötöttem a T1OSI / T1OSO (15,16-os lábra).

Naszóval elsősorban azokat kérdezném akik a mikroBasic-ben tudnak segíteni, ugyanis ezzel progizok.
Nagyjából sejtem miről van szó a TMR0-val, a T0SE, T0CS, PS2...0 (prescaler) TMR0IF. szóval ezek tudom mire jók és hogy kell csinálni az előosztást, csak egyvalami esik nehezemre megérteni, hogyan kell konfigurálni az INTCON és az OPTION_REG regisztert. :no:

És mégegy, mivel az adatlapon az RA4/T0CKI-hoz nincsen másik láb amihez hozzá tudom kötni az óra kvarcot? Vagy tökéletesen megfelel nekem a T1CKI, és akkor a TMR1-et kell választanom? Kicsit össze vagyok zavarodva..

Ha tudnátok segíteni azt nagyon megköszönném, hisz túlteng bennem a tudásvágy a PIC felé

üdv: Zsuscsinyo

fig4-1.gif
    
(#) trudnai válasza pepe33 hozzászólására (») Jún 27, 2008 /
 
Szia ammateur,

En szerintem ezt nem igy kellene csinalni. Addig kellene olvasni a soros portrol ameddig van adat - nyilvan nem csak egy R betut kuld hanem a RINGING teljes szoveget esetleg a hivoazonositoval is bar ebben mar nem vagyok biztos, nagyon regen foglalkoztam modemekkel.

Amikor az osszes adatot levetted, akkor inditsd az ATH-t. Be kell valljam nem ismerem a MicroC-t, de a \r es \n ertelmezese erosen implementacio fuggo. Van olyan C ahol a \n az CR+LF karakterekbol all (tehat ket karakterbol). Mindenesetre sokszor a \r az a CR es a \n az LF. Macintoshoknal a \r a divat mig unixoknal a \n (es igy az ujabb Mac-eknel van egy kis kavarodas ebbol fakadoan Na mindegy, nem tudom a telefonod melyiket ertelmezi uj sornak, vagy esetlen CR+LF-et var-e, de lehet csak ennyi a baj...

Es megegyszer, a teljes stringet olvasd be, kozben ellenorizd, hogy valoban RINGING-e, es ha kuld hivoszam azonositot akkor meg azt is meg tudod tenni, hogy csak a sajat szamodra reagal.

Ja, amugy engem zavar, hogy a kommentben 19200-at irsz, az initnel meg 9600 szerepel - nem tudni melyik a szendekos...
(#) trudnai válasza zsuscsinyo hozzászólására (») Jún 27, 2008 /
 
Szia,

Szep ez az abra, csak ez a TMR0-rol szol. A TMR1-et nezd, az egy 16 bites timer, es igy ezzel a kvartzcal scaler nelkul 2s timeout erheto el. Csak azert mondom mert sokan azt varjak az oraictol, hogy 1s megszakitasuk legyen - ahhoz 15-tel kellene shiftelni nem 16-tal...

Ha megnezed az adatlapot, akkor konnyen kinezheted mely regiszterek erintettek a TMR1-nel. Ha megnezed az abran (bar jobb ha inkabb az adatlapon nezed) a PIR1 ill PIE1 regiszterek tartalmazzal a TMR1IF ill TMR1IE flageket. Nyilvan az IF es IE kozotti osszefuggest kikovetkeztetted mar ha TMR0-t ismered. Az is nyilvan feltunt, hogy az INTCON-ban a GIE mellett a PEIE is feher, tehat szerepet jatszik a TMR1-nel. Ez a periferia interrupt engedelyezo, tehat minden ami a PIE1-ben engedelyezve van az ott egyszerre tilthato vagy engedelyezheto. Osszesitve 3 bit jatszik szerepet, a globalis interrupt engedelyezo (GIE), a periferia interrupt (PEIE) valamint a timer1 int engedelyezo (TMR1IE).

Erdemes lenne az adatlapot bongeszni, mindig el szoktuk itt mondani, hogy ez a PIC-ek szentirasa. Szerencsere a Microchipesek ezekre nagyon odafigyeltek, jol vannak dokumentalva - neha at kell olvasni 2x 3x de ha megtanulja az ember a terminologiakat es az adatlapok felepiteset utana mar pillanatok alatt meg lehet talalni a kivant informaciot.

Sok sikert!
Tamas
(#) pepe33 válasza trudnai hozzászólására (») Jún 27, 2008 /
 
Nekem már az is nagy öröm a sok sorosport vétel kudarc után ha 1 karaktert rendesen megfog.
Az eredeti mintaprogiban 19200 volt, elflejtettem átirni de a 9600 a jó.
A gondom csak annyi hogy az ATH-t nem tudom visszaküldeni, úgy jelezné hogy vette a hivást, hogy leteszi foglaltra.
De ha nem ismered a mikorC-t akkor nem biztos hogy tudsz segiteni.
Hacsak valaki nem tud segiteni CCS C ben megirni, mert ott a fogadás sem sikerültnekem.
(#) trudnai válasza pepe33 hozzászólására (») Jún 27, 2008 /
 
Idézet:
„De ha nem ismered a mikorC-t akkor nem biztos hogy tudsz segiteni.”


1. Nem biztos, hogy a fuggvenyhivasok korul van a kavarodas
2. Ebbol fakadoan lehet megis tudok segiteni, hisz C-hez kozel 15 ev utan talan ertek - igaz nem PIC mikro kornyezetben mert itt Assemblyben faragom a biteket, de azt hiszem tobb Unix/Linux, Win, Dos, NetWare stb kornyezetben mint PIC-et valaha is lattal eletedben
3. Anno, regesreg, a messzi messzi galaxysban BBS temabol irtam a diploma munkam (kooperativ multitaszkot valositottam meg DOS alatt es igy 4 modemet, 4 bejovo kerelmet kezeltem le). Regen volt de talan meg emlekszem AT parancsokra es mizeriakra.
4. Ha nem olvasod ki a bejovo dolgokat bizony annak az altalam nem ismert microC-nek, annak is az RS232 kezelojenek a belso taroloja lehet betelik, es mivel nem ismerem arra is tippelnek a hiba lekezeleseig nem hajlando mukodni (ilyen megoldasokat is lattam mar, ld pl az oreg Borland fele CRT rutinok bizony igy mukodnek). EZERT javasoltam, hogy olvasd ki az osszes karaktert MIELOTT elkuldened az ATH-t, igy elkerulendo ez a hibalehetoseg.
5. Honnan a raknyavajabol tudod, hogy nem kuldi el az ATH-? Racsatlakoztal egy terminallal? Probaltad azon keresztul szimulalni a modem telefonhivast egy RING uzenet elkuldesevel? Lattad, hogy az ATH-t a PIC-ed szepen vissza kuldi? Vagy egy LED-et betettel oda ahol az R osszehasonlitasanal belep az IF lokkba? Szimulatoron probalgatod a programod amugy? Javasolnam tovabba, hogy nyiss meg egy CMD ablakot Windows alatt, vagy egy Bash-t Linux alatt, gepeld be, hogy DIR, de ne nyomd meg az entert, es turelmesen varj.... vard meg mikor fogja a parancsodat vegre hajtani... Ha masnapra sem tortenik semmi akkor olvasd el megint mit irtam a sorveg karakterekrol es gondolkozz el rajta...
6. Bocsanat, hogy segiteni probaltam!
(#) pepe33 válasza trudnai hozzászólására (») Jún 27, 2008 /
 
Köszi a tippeket , és minden segitséget, és a félreértés elekrülése végett, elmondanám hogy semmiképp nem akartalak megbántani vagy lebecsmérelni, ha ezt mégis igy tünt akkor elnézést kérek tőled.
Este megpróbálom amiket javasoltál.

Következő: »»   233 / 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