Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   197 / 1211
(#) Bártfai Ferenc hozzászólása Jan 15, 2012 /
 
Sziasztok!
Szeretném megépíteni azt a pic-es hőmérőt amit itt az oldalon találtam! De valamiért a fejlesztő progi hibát jelez a következőkre:
a program elején: #define LCD_2X16 ;Ezt is hibásnak jelöli

Valahol a programba:

movwf LCD_TEMP
swapf LCD_TEMP,W
andlw B'00001111'
addlw -0x0a ; Ezt a sort jelzi hibásnak
btfsc STATUS,C
addlw 0x07
addlw 0x3a
movwf LCD_ASCHEXHI
movf LCD_TEMP,W
andlw B'00001111'
addlw -0x0a ; Ezt a sort is hibásnak jelzi
btfsc STATUS,C
addlw 0x07

Elég kezdő vagyok a témában!
Mi lehet a baja?
(#) NyariG válasza Bártfai Ferenc hozzászólására (») Jan 15, 2012 /
 
addlw -0x0a

én azt a "-" jelet kivenném próbáld meg hátha segít.
Bár lehet az kell oda mert mínusz számokkal is dolgozik?

defene-s rész meg valószínű azért rossz mert nincs olyan filéd a main mellet...
(#) Bártfai Ferenc válasza NyariG hozzászólására (») Jan 15, 2012 /
 
Köszi máris megnézem!
Egyébként ez lenne a szóban forgó hőmérő
(#) Bártfai Ferenc válasza NyariG hozzászólására (») Jan 15, 2012 /
 
Csináltam képeket a hibákról! Meg tennétek, hogy megnézitek, mi lehet a baja?
Akkor most a definie-s résszel mit tudok csinálni?

hibák.rar
    
(#) kissi válasza Bártfai Ferenc hozzászólására (») Jan 15, 2012 /
 
Miért akarod újrafordítani ( ha nem vagy biztos a dolgokban!)?
Úgy láttam fent van a hex ?!

Steve
(#) kissi válasza kissi hozzászólására (») Jan 15, 2012 /
 
Bocs, most látom, hogy az azonosító kódot is át kell írnod !

Steve
(#) kissi válasza Bártfai Ferenc hozzászólására (») Jan 15, 2012 /
 
Szia!

Nekem lefordult, csatolom a projektet, ebben írd át az azonosítókat ( a *.mcp-t indítsd el !) !

Steve

Küldeni.zip
    
(#) Balagemann2031 válasza Hp41C hozzászólására (») Jan 15, 2012 /
 
Köszönöm, már elméletben tisztább a dolog
(#) mihajadam hozzászólása Jan 16, 2012 /
 
Egy nagyon egyszerű programról lenne szó. Mindössze annyit kell csinálnia hoyg egy nyomógomb segítségével egy ledet kell bekapcsolni , majd a nyomógomb újboli megnyomásával pedig kikapcsolni. Megcsináltam és az a problémám hogy : alapból a program szerint nem kell világíttani a lednek. rátöltöttem a Pic-re (16F690) megnyomtam a gombot és ahogy annak működnie kell fel is kapcsolódott a led. És itt van a probléma mert ha mégegyszer megnyomom akkor le kéne kapcsolódnia és nem kapcsolódik le.
Kipróbáltam ugy is hoyg ha a led alapból világítt és a nyomogomb lenyomásával először le kéne hogy kapcsolja , és ezt sem csinálja.
Akár mit csinálok vele mindig csak felkapcsolni tudja a ledet . A program szerintem jol van megírva , szerintem a beállításokkal lehet a probléma a konfigurációs biteknél . De nem tudom, ehhez szeretnék segítséget kérni valakitől . ha kell leírom a progit amit írtam hátha láttok benne valami hibát. A segítséget előrre is köszi...
(#) icserny válasza mihajadam hozzászólására (») Jan 16, 2012 /
 
Mellékletként csatold be a programot és a kapcsolási rajzot (ha a PICkit2 Starter Kit-ről van szó, akkor nem kell a rajz)!
(#) trudnai válasza mihajadam hozzászólására (») Jan 16, 2012 /
 
Idézet:
„Kipróbáltam ugy is hoyg ha a led alapból világítt és a nyomogomb lenyomásával először le kéne hogy kapcsolja , és ezt sem csinálja.”


Sokminden okozhatja ezt, de nekem nagyon ugy tunik mintha perges kezelesevel lenne a problema -- pl ha jo sokszori probalkozasra 1x - 2x sikerul lekapcsolni akkor szinte biztos errol van szo...

Ha nem akkor azert latni kellene mit csinaltal, hogyan kototted be a dolgokat stb...
(#) promax hozzászólása Jan 17, 2012 /
 
PIC18 ban használok Bank15 elérésű regisztert. Movff a,b utasítással szeretném (a) értékét másolni a cél (b) regiszterbe, de Bank0 környezetben vagyok jelenleg. Kell hozzá bankot váltanom?
(#) potyo válasza promax hozzászólására (») Jan 17, 2012 /
 
Nem kell.
(#) promax válasza potyo hozzászólására (») Jan 17, 2012 /
 
Köszi a választ!
(#) Hp41C válasza promax hozzászólására (») Jan 18, 2012 /
 
Szia!

Nem kell, mert a movff mindkét cím 12 bitjét tartalmazza. Azért nem árt vigyázni, ugyanis sok kontrollrenek gondja volt / van bizonyos esetekben a movff utasítással megszakítás esetén. Sokaknál akkor jött elő, ha a megszakítás elfogadása elött végrehajtott movff azokba a resziterekbe mozgatott adatot, amiket a kontroller automatikusan ment (WREG, STATUS, BSR) vagy az INTCON regiszterbe írt.
(#) marek hozzászólása Jan 18, 2012 /
 
Sziasztok!
Hétvégén összehoztam egy egyszerű kis áramkört, egy feszültségosztón eső feszültséget mérem 16F877 ADC-n keresztül, az eredményt pedig egy LCD mutatja. Közben multiméterrel ellenőrzöm az eredményt. A programot mikroC-vel írtam, és valami miatt akkor lesz helyes az eredmény, ha a felét veszem a mért értéknek.
(ertek = Adc_Read(0)/2
Ez miért van így?
(#) kissi válasza marek hozzászólására (») Jan 18, 2012 /
 
A feszültségosztód osztását jól vetted figyelembe ( ha a programodat hibátlannak tételezem fel! ) ? Ha igen, akkor a programban van a hiba ( mivel nem mellékelted, nehéz kitalálni, hogy mit írtál --> így csak a "ráolvasás" segíthet ! ) !

Steve
(#) vicsys válasza marek hozzászólására (») Jan 18, 2012 /
 
Az AD felbontását jól állítottad be?
(#) marek válasza vicsys hozzászólására (») Jan 18, 2012 /
 
Inkább bemásolom a kódot. Kicsit elbíztam magamat, pedig lehet hogy tényleg itt van valahol a hiba...

void main()
{
unsigned int ertek;
char * kiir[4];
TRISD = 0;
TRISA = 1;
ADCON0 = 0b11000101;
ADCON1 = 0b10001110;
Lcd_Config(&PORTD,0,1,2,3,4,5,6);
Lcd_Cmd(LCD_CURSOR_OFF);

while(1){
ertek = Adc_Read(0)/2;
IntToStr(ertek,kiir);
Lcd_Out(1,1,kiir);
Delay_Ms(200);
}
}

(Még nem volt időm megcsinálni hogy megjelenjen a tizedes vessző.)
(#) marek válasza marek hozzászólására (») Jan 18, 2012 /
 
Azt elfelejtettem írni, hogy a feszültségosztó igazából csak egy potméter, a két szélső lába megy VDD-re, és VSS-re, a középső pedig a PIC ADC-re, és egy multiméterre. Szóval ez csak ilyen próbaáramkör "hogy is működik a pic A/D konvertere címmel"
(#) Hp41C válasza marek hozzászólására (») Jan 18, 2012 /
 
ertek = Adc_Read(0)/2 helyett (ha az int 16 bites):ertek =(unsigned int) (Adc_Read(0)) >>1;

Az ADCON1 -et hamarabb kellene beállítani, mint a ADCON0 -t. A GO bitet jóval később, a ciklusban kell beállítani. Az indítás után meg kell várni, hogy a GO bit 0 -ra álljon.
(#) PistolStar hozzászólása Jan 18, 2012 /
 
Üdv.

Teljesen amatőr vagyok ebben a témában, most kezdtem el nézegetni a pickit2 és 3-at.
A klón megépítését is néztem, de nem minden világos.
Maga a programozóhoz még miket kell hozzá csatlakoztatni, mert pl az a klón leírásánál nem láttam, de a pickit3 debug express Bővebben: Linkképénél is látok + 1 panelt, de ott hova kell rakni a felprogramozandó pic-et?
A HQvideónál Bővebben: Linkláttam olyat ahol csak 1 doboz volt azon volt 1 foglalat, az is ua. ezt tudja?
Bocs ha hülyeségeket kérdezek de nem tudom.
Esetleg ha lenne 1 olyan link ahol le van írva részletesen minden (kezdők is értsék, magyarul), azt meg köszönném.

Köszi
(#) icserny válasza PistolStar hozzászólására (») Jan 18, 2012 /
 
A Debug Express csomagban látott kártya már a PIC mikrovezérlőt tartalmazó céláramkör (amin a programot futtatod).
(#) Hp41C válasza PistolStar hozzászólására (») Jan 18, 2012 /
 
Szia!

Nézd meg a PICKit2 klón építése topikba. Van ott feltölve programozó adapter.

Az SMD tokozású kontrollerek elterjedésével nem igazán járható az adapter módszer - egy százlábú tok már kezelhetetlen. Ezért terjedt el a 6 pólusú In Circuit Serial Programing csatlakzó, amivel a kész felhasználói panelre felforrasztott kontroller programozható.
(#) marek válasza Hp41C hozzászólására (») Jan 18, 2012 /
 
Köszönöm a segítséget! Legközelebb pénteken tudom kipróbálni ezekkel a módosításokkal, remélem hogy úgy jó lesz majd
(#) zsoltee0001 válasza marek hozzászólására (») Jan 19, 2012 /
 
az unsigned int 32 bites, azaz (4294967295 (0xffffffff))
tartomány, miért kell ilyen őrültnagy számmal dolgozni egy 10 bites ad konverzión?
Üdv
(#) icserny válasza zsoltee0001 hozzászólására (») Jan 19, 2012 /
 
Az az (unsigned) long, amire te gondolsz. Az int csak 16 bites, amire szükség is van mert a 8 bites változó kevés lenne.
(#) zsoltee0001 válasza icserny hozzászólására (») Jan 19, 2012 /
 
[OFF]Ezt akkor benéztem, mondjuk akkor ez itt el van írva: Bővebben: Link
(#) Hp41C válasza zsoltee0001 hozzászólására (») Jan 19, 2012 /
 
A C -ben nincs definiálva, hogy a típusok milyen hosszúak bitben, csak ez:
long_hossza_bitben >= int_hossza_bitben >= char_hossza_bitben.
Szokásos hosszak
8 bites kontrolleren: 32 vagy 16, 16, 8
16 bites kontrolleren: 32, 16, 8
32 bites processzoron: 64 vagy 32, 32, 8

Miután a 80386 és újabb processzorok a 8 és a 32 bites műveleteket támogatják (még újabbak a 64 bitest...).
(#) icserny válasza zsoltee0001 hozzászólására (») Jan 19, 2012 /
 
Nincs elírva szerintem, csak más hardverről és fordítóról van benne szó.
Következő: »»   197 / 1211
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