Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   256 / 1320
(#) googa válasza trudnai hozzászólására (») Júl 30, 2008 /
 
Na igen, ha lusta az ember, akkor így jár, mint én most. Köszi! Gondolom ez is Murphy törvény...
(#) krajnyak_dani hozzászólása Júl 31, 2008 /
 
Hali
Men tudná valaki megmondani, hogy kell a 16F628A-nál beálítani az A/D átalakítót. Azt szeretném hogy egy piti állapotát deolvassa, 8-bit pontossággal.jó volna egy példa progi is .asm-be.

Köszi

u.i: az adatlatot már néztem
(#) potyo válasza krajnyak_dani hozzászólására (») Júl 31, 2008 /
 
Idézet:
„az adatlatot már néztem”


És mi nem világos? Ha az adatlapot nézted, akkor rájöhettél volna, hogy a 16F628A-ban NINCS A/D átalakító!
(#) googa válasza potyo hozzászólására (») Júl 31, 2008 /
 
Potyo megmondja ám a frankót
De különben ez egy ilyen éberségi teszt volt szerintem, hogy ki mennyire figyel. Vagy lehet akár valamiféle verseny felhívás, hiszen ha beállítod az A/D konvertert ott ahol nincs, akkor már nagyon értesz a PIC-ekhez
(#) garylaci hozzászólása Aug 1, 2008 /
 
Üdvözlet!

Előre leszögezném, hogy "Hobby PIC programozó" vagyok, nemrég kezdtem el CCS nyelven progikat írni.
Egy olyan problémába ütköztem, hogy PIC16F690 PIC -nél RA0(AN0) és RA1(AN1) lábakat analog bemenetként és RA3 lábat pedig dig. kimenetként és RA2,RA4 lábat pedig dig. bemenetként akarom használni, de nem birom beállítani.

  1. //### Digitális jeladó + Gomb ###
  2. #define POTI_CLK PIN_A2
  3. #define POTI_D PIN_A4
  4. #define GOMB PIN_B4
  5.  
  6. //### Digitális poti ###
  7. #define DIGIPOT_CS   PIN_A3
  8. #define DIGIPOT_CS1 PIN_C6     
  9. #define DIGIPOT_CS2 PIN_C4     
  10. #define DIGIPOT_CS3   PIN_C5
  11. void main(void)
  12. {
  13.         int1 a;
  14.         int1 b;
  15.         int Pot1, Pot2;
  16.         setup_oscillator(OSC_4MHZ | OSC_NORMAL);
  17.         setup_adc_ports(sAN0 | sAN1);
  18.         setup_adc(ADC_CLOCK_DIV_4);    
  19.         SETUP_SPI(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_64);
  20.         set_tris_a(0b00010100);
  21.         output_a(0x00);
  22.         set_tris_b(0b00010000);
  23.         output_b(0x00);
  24.  
  25. .......


Ebben kérem segítségeteket, előre is köszönöm.

GaryLaci
(#) garylaci hozzászólása Aug 1, 2008 /
 
Amit a program csinálna: két csatornán fesz mérés, LCD kijelzés, 3 db MCP42010 digipoti állítgatása.

main.c
    
(#) trudnai válasza garylaci hozzászólására (») Aug 1, 2008 /
 
Szia GaryLaci,

Ha ugy idezed be a kodod, hogy [code=C] akkor annak mukodnie kell, de mellekletkent is tokeletes

Szoval itt van ez a sor:

set_tris_a(0b00010100);

Ez azt allitja be, hogy RA0 es RA1 digitalis kimenet, RA2 bemenet, RA3 kimenet, RA4 bemenet, RA5 kimenet... (6 bites a PORTA ugyhogy nincs tovabb).

Szerintem epp forditva akartad Marmint a 0 jelenti a kimenetet es az 1 a bemenetet, es amik a port kimenet addig nem tudsz rola analog mereseket sem vegezni.
(#) potyo válasza trudnai hozzászólására (») Aug 1, 2008 /
 
Idézet:
„es amig a port kimenet addig nem tudsz rola analog mereseket sem vegezni.


Igazság szerint tud, így lehet mérni a lábak terhelését némi kalibrálás után. De ez már nagyon hardcore meg advanced kategóriába esik


Amúgy elég könnyű megjegyezni, hogy a nulla a kimenet és az egy jelenti a bemenetet a tris biteknél. A 0 az olyan, mint az O, vagyis output. Az 1 meg nagyon hasonlít az I-re, vagyis input.
(#) trudnai válasza potyo hozzászólására (») Aug 1, 2008 /
 
Idézet:
„Amúgy elég könnyű megjegyezni, hogy a nulla a kimenet és az egy jelenti a bemenetet a tris biteknél. A 0 az olyan, mint az O, vagyis output. Az 1 meg nagyon hasonlít az I-re, vagyis input.”


Hehe, jo tanar lenne beloled Vagy lehet az is vagy? :yes:
(#) watt válasza potyo hozzászólására (») Aug 1, 2008 /
 
Én is így jegyeztem meg annó!
(#) Doriat hozzászólása Aug 1, 2008 /
 
Sziasztok
Valamit konyítok a pic-ekhez, de nem vagyok egy übermajszter. Őszintén szólva az assemblyt nem nagyon csipázom, szemben a c-vel.
Mostanában MicroC-t használok, de annak vannak nyűgjei, pl. a soft_uart library-val.
Valaki tudna javasolni más programot amiben tudnék pic-et programozni? A ccsC-t néztem, de az szerintem nem pic16f-es sorozathoz lett kitalálva.
Más: programozót is keresnék. Most egy vellemant használok, de az is csinál néha fura dolgokat. Mit javasoltok, ha mondjuk a 18-as sorozatot is szeretném kipróbálni?
(#) lidi válasza Doriat hozzászólására (») Aug 1, 2008 /
 
Én a HitechPicc-t javaslom, vagy a 18-as sorozathoz a gyári microchip C fordítót. Programozónak pedig a pickit2-t.
(#) p3n3m hozzászólása Aug 1, 2008 /
 
Jóestét mindenkinek!
Nos, a következő kérdéseim lennének.Nekem most csak PicKit 2-es programozóm van, és a PIC24FJ128GA010 chiphez az mplab nem ajánlja fel a pickit 2őt mint programozó, de a pickit 2ő programjából tudom programzni....Esetleg megoldható lenne mindez az Mplabból is? A másik kérdés/kérés az volna hogy nem tudna valaki beírni egy programot ami felgyújtja az összes ledet az Explorer16 panelen?Előreis köszönöm:Katona Ábel
(#) pipi válasza p3n3m hozzászólására (») Aug 1, 2008 /
 
microchip oldalán: 16-bit 28-pin Starter Board Software v2.zip ledet villogtat
(#) NickE válasza trudnai hozzászólására (») Aug 1, 2008 /
 
Meg lehet így is jegyezni, de ha a helyes úton szeretnénk járni, akkor úgy célszerű gondolkozni, hogy tris = tri-state, az 1 pedig true a 0 false.
(#) denon888 hozzászólása Aug 2, 2008 /
 
Sziasztok!
Segitséget szeretnék kérni.Mégépitettem az alábbi kapcsolást és valamiért nem akar működni.Az LCD felső sorában csak kis téglalapok vannak.Pedig elméletileg ennek működnie kellene.Az asm fájlt és a kapcsolási rajzot mellékelem.Minden segitő szándékot nagyon köszönök!
Ui.A 16c84 helyett 16F84A - használtam.
(#) NickE válasza denon888 hozzászólására (») Aug 2, 2008 /
 
Elég rosszul látszik a rajz, de én úgy látom, hogy a kontraszt láb fixen tápra van kötve. Az úgy ritkán jó. Egy potméterrel kellene a rajta lévő feszültséget állítani és akkor a kockák jó eséllyel betűkké válnának.
(#) NickE válasza Doriat hozzászólására (») Aug 2, 2008 /
 
Nekem az MPLAB C18 tetszik a legjobban.
(#) szilva válasza denon888 hozzászólására (») Aug 2, 2008 /
 
Első gondnak én azt látom, hogy az asm-ben nincs sehol definiálva a PIC konfigurációja. Ebből következően nem tudom, a hex-ben, amivel programoztad a PIC-et, benne volt-e valamiféle config. Először ezt kellene tisztázni mindenképpen.

Ha a config jó, akkor is lennének még aggályaim az LCD inicializálásával, mert ott nagyon nincsen betartva az a folyamat a hosszú időzítésekkel, amit a HD44780 adatlapján az iniciálási folyamatábrában megadtak.
(#) googa hozzászólása Aug 2, 2008 /
 
Hali! PIC16F648A-ról van szó. Milyen PIC-ekre vonatkozó "művelettel", fogalommal kell foglalkoznom, vagy egyáltalán létezik-e olyan megoldás, hogy az egyik PIC kiolvasson a másik PIC eeprom területéről? Vagy másként, az egyik PIC adatot ír a másik PIC eeprom-jába?
Köszi!
g
(#) denon888 válasza NickE hozzászólására (») Aug 2, 2008 /
 
Sajnos a rajz nekem is igy van meg.A potit természetesen beépitettem mert szerintem sem jó ebben a megoldásban.Bárhogy állitom a kontrasztot nem változik,a kockákon kivül semmi.
(#) denon888 válasza szilva hozzászólására (») Aug 2, 2008 /
 
Erről a honlapról szerettem volna megépiteni.
http://technology.niagarac.on.ca/people/mcsele/TemperatureAlarm.htm
Sajnos saját kútfőből még nem sikerül irnom progit és ezt találtam a neten.Amire szeretném használni ezt az áramkört arra tökéletes lenne.Feltéve ha sikerülne müködésre birni.Ha esetleg tudnál nekem ebben segiteni,nagyon megköszönném!
(#) trudnai válasza googa hozzászólására (») Aug 2, 2008 /
 
Szia googa,

Persze, hogy letezik ilyen megoldas, ezt nevezik programozonak. A programozo kepes ugye egy adott interface-en keresztul egy PIC irasara, olvasasara es torlesere. A ma kaphato szinte osszes PIC rendelkezik soros programozas lehetosegevel, amit roviden ICSP -nek szoktak emlegetni (In-Circuit Serial Programming) Ehhez alaposan at kell tanulmanyoznod nemcsak az adatlapot hanem a Programmer Specicicationt (neha ugy talalod meg, hogy Memory Programming Specification).

Termeszetesen mikozben egy masik PIC-et irsz vagy olvasol ilyen forman, a masik PIC mukodese megszakad, es az ujra inditani teljes resettel tudod majd. Ha ez nem jo, akkor azon kellene elgondolkodni, hogy inkabb a ket PIC kommunikaljon egymassal, amire SPI-t vagy I2C-t szoktak hasznalni leggyakrabban. Akkor a "fonok" kiad egy utasitast a "beosztottnak", hogy legyszi add vissza az EEPROM teruletedrol ezt meg azt, es az vissza adja. De ha mar I2C-zel lehet erdemesebb kulon EEPROM modult hozza csapni - akkor I2C-n keresztul tobb PIC-bol is elerheted ugyanazt az EEPROM-ot es nem kell utasitasok feldolgozasaval foglalkoznia a PIC-eknek...
(#) googa válasza trudnai hozzászólására (») Aug 2, 2008 /
 
Köszönöm! Az ilyen válaszokat szeretem. Akkor I2C lesz a vége külön eeprom-al. Már csak egy jó oldal hiányzik ahonnan meg lehet tanulni ezt a dolgot.

Egyébként a többieknek, kezdőknek ajánlanám a következő oldalt Tudomány és Technika, ahol a midrange PIC-ekről mindent elmondanak részletesen. Még nincs teljesen kész, mióta olvasom azóta folyamatosan bővül. Sajnos még a soros kommunikációnál nem tartanak, de például a PWM már szépen le van írva.
(#) watt válasza trudnai hozzászólására (») Aug 2, 2008 /
 
Nincs itt fogalom zavar? Az EEPROM az nem Flash, még ha hasonló is a működésük!

A PIC EEPROM-jának kiolvasásához semmiféle loader nem kell, csak egy soros, vagy párhuzamos kommunikációs csatorna a két PIC között és a megfelelő program a PIC-ekben.

A Flash program terület írásához sem feltétlenül nevezném bootloadernek azt a programot, ami az egyikből kiolvassa majd átküldi a másiknak az adatokat.

Az viszont biztos, hogy flash programterületet programfutás közben nem nagyon lehet lekérni a másik PIC-ből úgy, hogy a lekért utasítás a lehívó PIC-ben hajtódjék végre.



A fő kérdés, hogy a googa végül is mire gondolt?
(#) watt válasza googa hozzászólására (») Aug 2, 2008 /
 
Kérlek pontosítsd mit szeretnél a külső EEPROM-ban tárolni? Program utasításokat, vagy sima adatokat?
(#) googa válasza watt hozzászólására (») Aug 2, 2008 /
 
Jajj de sok segítőkész ember, kezd jó napom lenni.
Szóval, a lényeg annyi lenne, hogy az egyik PIC másodprecenként 4x megvizsgálja 8 lábán, hogy 'L' vagy 'H' jel jön be rajta és ezeket az értékeket az EEPROM-ban rögzíti bizonyos címeken. Majd utána amikor a 'MASTER' PIC-nek ideje van ránéz az előbbi PIC EEPROM címeire és az ott tárolt 'L'-nek ill. 'H'-nak megefelelő értéket felhasználja a saját programjában, vagy más szóval kiértékeli. Remélem így érthetőbb.
(#) watt válasza googa hozzászólására (») Aug 2, 2008 /
 
Igen, köszönöm a pontosítást!

Nos, ezzel a világon semmi gond nincs!
1. A mérő PIC kiértékeli a szinteket és letárolja az EEPROM-ba.
2. Az adatgyűjtő PIC soros vonalon(USART, I2C, SPI, CAN stb.) kérést küld a mérő egységnek, ami erre kiolvassa az EEPROM tartalmat(ill. egy részét) és elküldi az adatgyűjtő PIC-nek.
3. Az adatgyűjtő PIC feldolgozza, vagy tovább küldi pl. a PC-nek, vagy kitárolja egy SD kártyára, stb. stb.

Az EEPROM kezelését az adatlapok példával segítik assembler nyelven.
Nem tudom milyen felkészült vagy, így egyelőre várom a további konkrét kérdéseidet.

(#) googa válasza watt hozzászólására (») Aug 2, 2008 /
 
Köszönöm, teljesen világos a vázolt folyamat. Igazából amit ezek közül még nem próbáltam az a két PIC közötti kérdés-válasz kommunikáció. Mint említettem 8 memóriacímről kellene egymás után lekérdezni az adatokat és azokat "főnök" PIC programjában tovább kellene használni. Ennyi.
Melyik lenne erre a leggyorsabban tanulható és alkalmas kommunikációs megoldás. Mint említettem 16F648A-ról van szó. az adatlapján konkrétan maga az I2C szó nem szerepel a kereső szerint, de az USART az pl. igen.
(#) szilva válasza denon888 hozzászólására (») Aug 2, 2008 /
 
Üssetek agyon, de én azon az oldalon lévő hex-ben sem látok config biteket. Azok nélkül meg RC oszcillátorral és bekapcsolt watchdoggal indul a PIC, ami nemigen jó.

Előállítottam a config biteket is tartalmazó hex-et, esetleg próbáld meg ezzel!

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