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   303 / 1210
(#) beigli767 válasza Hp41C hozzászólására (») Szept 15, 2012 /
 
Az RS232 az jól hangzik. MAX232-es IC-m van. Hány voltal dolgozik, hogy kell szintillesztő, és pontosan hova kell az a szintillesztő? Bocsi a hülye kérdések miatt, csak egyenlőre ez az RS232 számomra még idegen téma, és nem nagyon tudom elképzelni az elektronika oldali megvalósítását. :\
(#) djadji hozzászólása Szept 15, 2012 /
 
Tud valaki valamit arról, hogy lehet e, PICet összekötni egy mobillal?
Szóval, PICen keresztül utasítani, hogy küldjön SMSt, vagy olvassa be az XY alkalmazás adatait, GPS használni, hívást indítani, miegymás...
Keresgéltem, de csak SIM kártya olvasókat találtam, az most nem érdekel. HA valaki tudna egy linket erről a témáról. Köszi.
(#) El_Pinyo válasza djadji hozzászólására (») Szept 15, 2012 /
 
HE topic
Kugli
A hozzászólás módosítva: Szept 15, 2012
(#) Hp41C válasza beigli767 hozzászólására (») Szept 15, 2012 /
 
Szia!

RS232 egy szabvány, olvass utána pl. itt.
Illesztés: MAX232 esetén: A Adatlapja szépen leírja a bekötését, valamint a Kugli is kidob egy csomó képet...
(#) Bari- hozzászólása Szept 15, 2012 /
 
Sziasztok

Elég kezdő vagyok pic témában, flowcode-al csinálgatok progikat, eddig sikerült is minden megoldanom, de elakadtam a jelenlegi projektnél. Elég kicsi a hely és jó lenne elhagyni a kapcsolókon léfő felhúzó ellenállásokat, a 16F887-es pic adatlapját böngészve láttam, hogy van belső bekapcsolható felhúzó ellenállás. A flowcode-ban nincs közvetlenül lehetőség a bekapcsolására viszont C kód beillesztésére van. Sajnos C-hez teljesen maki vagyok (előbb utóbb szeretném megtanulni, szerencsére az 5-ös flowcode-ban meg lehet nézni az egyes flowcart-ok C kódját, így segítve a C tanulást). A két kapcsoló a portB4 és portB5-ös porton van. A Flowcodeos témában korábban volt linkelve egy c kód amivel elméletileg be lehetne kapcsolni, de nekem nem sikerült.
  1. /*
  2. cr_bit(intcon2, RBPU)
  3. */

A kódot beillesztve lefordul hex-re de teljesen hatástalan, az ellenállások nélkül hibásan működik a kapcsolás.

Hogy tudom az RB4- RB5-ös portokon bekapcsolni a belső felhúzó ellenállásokat?

Előre is köszönöm a segítséget.
Bari
(#) Hp41C válasza Bari- hozzászólására (») Szept 15, 2012 / 1
 
Szia!

Az RBPU bit nem az INTCON2 regiszterben van, hanem az OPTION_REG -ben. Ha csak erre a két kivezetésre kellene a felhúzás, akkor a WPUB regiszterbe 0x30 -at kellene írni.
(#) Bari- válasza Hp41C hozzászólására (») Szept 15, 2012 /
 
Köszönöm, leírnád pontosan, hogy néznek ki ezek C kódban? Sajnos a C még teljesen idegen, de szeretném megtanulni. Flowcode-ba szeretném beilleszteni.

Bari
(#) Bari- válasza Bari- hozzászólására (») Szept 15, 2012 /
 
Időközben Simpi írt egy működőképes megoldást , működik külső ellenállások nélkül.

Bari
(#) icserny válasza Bari- hozzászólására (») Szept 15, 2012 / 1
 
Idézet:
„3.4.2 WEAK PULL-UPS

Each of the PORTB pins has an individually configurable
internal weak pull-up. Control bits WPUB<7:0> enable or
disable each pull-up (see Register 3-7). Each weak
pull-up is automatically turned off when the port pin is
configured as an output. All pull-ups are disabled on a
Power-on Reset by the RBPU bit of the OPTION register.”

Az adatlap szerint ennél a mikrovezérlőnél az RBPU bit beállításán kívül egyenként engedélyezni kell a felhúzni kívánt lábakat a WPUB regiszterben.
(#) Hp41C válasza icserny hozzászólására (») Szept 15, 2012 / 1
 
Szia!
A 16F88x leírásában a WPUB minden bitje 1 a reset után és az 1 engedélyezi a felhúzást, így elegendő az OPTION_REG 7. bitjének, azaz a RPUB törlése. A beállítás megzavarhatja a többi kivezetés működését, ezért írtam, hogy a WPUB regiszterben csak az 5. és 4. bithez tartozó felhúzást kellene engedéllyezni.
Nem tudom a Flowcode melyik C nyelvjárást érti:
XC8:
  1. OPTION_REGbits.RPUB = 0;
  2. WPUB = 0x30;

  1. OPTION_REG &= 0x7F;
  2. WPUB = 0x30;

A hozzászólás módosítva: Szept 15, 2012
(#) kissi válasza icserny hozzászólására (») Szept 15, 2012 /
 
Szia!

Induláskor viszont "alapból" engedélyezve vannak WPUB-ben, tehát ha nem nyúl hozzá, akkor pont jó !

Steve
(#) Bari- válasza Hp41C hozzászólására (») Szept 15, 2012 /
 
Köszönöm ,
Ha jól értelmeztem az adatlapot, azokon a portokon amik kimenetként vannak beállítva ott automatikusan letiltódik. Az rb0-rb3 kimenetként van használva, az rb6-7 meg az icsp csatihoz megy. Simpi leírása alapján leírva működik és nem vettem észre problémát, de mindenképp kipróbálom azt is amit Te írtál.

Bari
(#) Bari- válasza (Felhasználó 15355) hozzászólására (») Szept 15, 2012 /
 
Az rb0-rb3-on ledek vannak, amik katódja csatlakozik a pichez, így a kimeneteket testre húzva világítanak, nem vettem észre problémát, de a biztonság kedvéért, a
  1. WPUB = 0x30;
-ot is beírtam a másik mellé. A fordítás sikeres, viszont picbe írva a kódot, azt csinálja mintha nem lenne felhúzó ellenállás, 'szalad' a bemenet, így kivettem.

Köszönöm még egyszer a segítséget.

Bari
(#) Bari- válasza (Felhasználó 15355) hozzászólására (») Szept 15, 2012 /
 
Kicsivel írtam, így ahogy beírtad a kód ablakba. Lefordulni lefordult csak úgy viselkedett mintha nem lenne felhúzva a bemenet.

Bari
(#) morzsa15 hozzászólása Szept 15, 2012 /
 
Olyan kérdésem lenne hogy a cikkek közt van egy 5x5x5-ös led cube és ahhoz 887-es pc van nekem viszont 877-es van ha az alábbit tenném bele működne?
(#) Hp41C válasza Bari- hozzászólására (») Szept 15, 2012 /
 
Ha nem zavar a többi felhúzás, ne törődj a WPUB regiszterrel...
(#) Hp41C válasza morzsa15 hozzászólására (») Szept 15, 2012 /
 
Szia!
A működéshez át kellene írni a programot. A 16F877(A) esetén az ADCON1 regiszter, a 16F887 esetén az ANSEL és ANSELH regiszterek segítségével lehet a kivezetéseket digitális módra állítani.
(#) Tom-ee hozzászólása Szept 16, 2012 /
 
Sziasztok! A következő a problémám: megépítettem ezt a kis kapcsolást. Maga a program tökéletesen működik, ha egyszer elindul... Dugaszolós próbapanelon raktam össze elsőnek, az IC tápját 1-2 alkalommal kihúztam-bedugtam és indult. Készítettem hozzá egy NYÁK-ot, azon már nem akart elindulni és most próbapanelon sem. A programozás - gép szerint - rendben lefut, a tartalmak azonosak, a panel többi alkatrésze jó, táp rendben és 3 IC-vel is kipróbáltam. A program gondolom nem lehet rossz, ha a videón is és elsőnek nálam is ment; valószínűleg most is jó, csak nem akar elindulni. A PIC-et is felismeri a program, rendben lefut a programozás, és a visszaellenőrzés is ok.
A kérdésem az lenne, hogy van-e valakinek egy egyszerű teszt kapcsolása és programja PIC12F629-hez, hogy szűkíthessem a hibalehetőségeket? Van még egy 16F84-esem is, ha ehhez van valakinek hasonló teszt programja és áramköre, az is jól jönne, akkor a programozót legalább le tudom ellenőrizni. (bár nem hiszem, hogy azzal van a bibi)
Előre is köszönöm a segítséget!
(#) vicsys válasza Tom-ee hozzászólására (») Szept 16, 2012 /
 
A PIC lábán közvetlenül ott van a 100nF? Milyen programozót használsz?
(#) Tom-ee válasza vicsys hozzászólására (») Szept 16, 2012 /
 
A kapcsolási rajz alapján raktam össze a panelt is és a próbapanelon is aszerint építettem fel mindent, 100 nF-ot csak a tápnál látok... Kellene még valahova? Ezt az égetőt építettem meg, sokak szerint nem az igazi, rakjak össze vele egy komolyabbat, de nem vagyok profi, nem éri meg komoly égetőbe beruházni. (csak ha valami miatt ez abszolút nem lenne jó, de úgy látom, teszi a dolgát) Egyébként az égető kimeneteit használom a próbapanelon tápnak, mivel ott megvan a stabil 5 és 12 V. A saját nyákomon van 5 V-os stabilizált rész, amúgy meg 12 V-os akksiról próbáltam indítani.
(#) Kovabe válasza Tom-ee hozzászólására (») Szept 16, 2012 /
 
Szia én is kezdö vagyok de rá kellet jönnöm, hogy a PIC programozáshoz valoban pickit kell. Nekem egy propic2 volt és 3x sikerült égetnem a negyedik egy valodi égetés volt mert megsült a PIC (2000Ft). Nekem a vaterán sikerült találnom egy pickit2-öt és azota nincs ilyen problémám ha jol rakom össze akkor müködik. Nekem is volt olyan hogy visszaellenöriztem és azt irta minen jó közben kiderült hogy nem is látja az ic-t. Nekem csak rossz tapasztalatom van a nem pickittel kapcsolatba ha van lehetöség akkor keress valahol.
Üdv Kovács
(#) beigli767 hozzászólása Szept 16, 2012 /
 
Ezen a kapcsoláson az RS232 IC-k jól vannak bekötve?
Mert konkrét választ nem kaptam a két MAX232 IC közti összekötésről, gugliban meg csak PIC és PC közti kapcsolások vannak.
(#) Hp41C válasza beigli767 hozzászólására (») Szept 16, 2012 /
 
Szia!
Szerintem nem jól vannak bekötve. A MAX232 10 és 11 kivezetése TTL / CMOS bemenet, ezek egyikére kell kötni a kontrollerek TX kivezetését. A MAX232 9 és 12 kivezetése TTL / CMOS kimenet, ezek egyikére kell kötni a kontrollerek RX kivezetését. A két MAX232 RS232 oldalának bekötése jó. Az eredeti Maxim adatlapon szerepelnek az adó ill vevő bemeneteken levő fel ill lehúzó ellenállások. Főleg a vevő bemenetén szükséges a meglétük, hogy nem csatlakoztatott vagy szakadt vezeték esetén ne kérjen az uart állandóan vételi megszaítást.
(#) n_yálastrubadúr hozzászólása Szept 16, 2012 /
 
Jó estét!

Pic 16f887 a mikrokontroller és újból a frekvencia mérőre került a sor. Nem találom az adatlapján a T1CKI bemenet határértékét. Úgy képzelném el, hogy 100- ad másodpercenként megnézném a TMR1 értékét és abból számolnám ki. Ez így helyes elképzelés? Azon kívül, ha ennél a mikrokontrollernél megy egy RB0 megszakíás és egy TMR0 megszakítás és éppen az RB0 megszakításban van mikor bekövetkezne a TMR0 is akkor mit csinál? Ha vége az RB0-nak belép a TMR0-ba? Vagy azonnal belép? Vagy elveszik?
(#) Tom-ee válasza Kovabe hozzászólására (») Szept 16, 2012 /
 
Hát ez nem hangzik jól... most, hogy végre összehoztam, és működni látszik, megnyugodtam, hogy végre sikerült, egy projekt pipálva. Ezek szerint ez sem zárható ki...
(#) kissi válasza n_yálastrubadúr hozzászólására (») Szept 16, 2012 /
 
Szia!
Idézet:
„Ha vége az RB0-nak belép a TMR0-ba? Vagy azonnal belép? Vagy elveszik?”

A 16-os sorozatnak egyszintű megszakításkezelése van --> ha egy megszakítás kiszolgálásában vagy, akkor addig nem foglalkozik a másik megszakításforrással, de ha befejezte az első kiszolgálását és meglátja, hogy "jelentkeznek" megszakításra, akkor természetesen belép újra ( ilyenkor a megszakítás kiszolgálásánál először el kell döntened, hogy ki kérte a megszakítást! ).


Steve
A hozzászólás módosítva: Szept 16, 2012
(#) n_yálastrubadúr válasza kissi hozzászólására (») Szept 16, 2012 /
 
Igen, persze, azt megkérdezem ki kérte. Akkor ha jól értem ha az RB0- ban van attól még a TMR0 jelzőbitje 1 re vált, tehát azonnal ahogy kilép a retfie utasítás után azonnal belép a TMR0 megszakításba? És mi a felső határa a T1CKI bemenetnek. Tehát hány Mhz-et tudok maximum mérni?
A hozzászólás módosítva: Szept 16, 2012
(#) kissi válasza n_yálastrubadúr hozzászólására (») Szept 16, 2012 /
 
Szia!

Idézet:
„Akkor ha jól értem ha az RB0- ban van attól még a TMR0 jelzőbitje 1 re vált”


Idézet:
„Tehát hány Mhz-et tudok maximum mérni?”

Az adatlapját nézted már ( csatolom az ideillő részt!)?

Steve

T0CKI.png
    
(#) n_yálastrubadúr válasza kissi hozzászólására (») Szept 16, 2012 /
 
igen,sajnos néztem, de nem nagyon értettem.
(#) alisejk hozzászólása Szept 16, 2012 /
 
Sziasztok!

Van egy amatőr problémám amit nem tudok megoldani. A Timer1 segítségével szeretnék interruptot generálni, ami majd egy ledet kapcsolgat ki-be. A következő kóddal próbálkoztam:
  1. #include <stdlib.h>
  2. #include <p33Fxxxx.h>
  3. #include <timer.h>
  4.  
  5. _FOSCSEL(FNOSC_PRIPLL);
  6. _FOSC(FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMD_XT);
  7. _FWDT(FWDTEN_OFF);
  8.  
  9.  
  10. void _ISRFAST _T1Interrupt (void){
  11.     _T1IF = 0;
  12.     LATA = !LATA;
  13. }
  14.  
  15. int main(int argc, char** argv) {
  16.     int a;
  17.     a=0;
  18.  
  19.     LATA = 0xFF00;          //A port kimenetei 0-ra állítva
  20.     TRISA = 0xFF00;         //A port konfiguralasa
  21.  
  22.     T1CON = T1_OFF | T1_IDLE_CON | T1_GATE_OFF | T1_SYNC_EXT_OFF
  23.           | T1_SOURCE_INT
  24.           | T1_PS_1_64 ;
  25.     PR1 = 600;
  26.     TMR1  = 0;                    //törli a számlálót
  27.     _T1IF = 0;                    //törli az interrupt jelzőbitet
  28.     _T1IP = 7;                    //beállítja az interrupt prioritást
  29.     _T1IE = 1;                    //engedélyezi az interruptot
  30.     T1CONbits.TON = 1;            //elindítja a számlálást
  31.  
  32.     while(1) {
  33.         a++;
  34.         a--;
  35.     }
  36.     return (EXIT_SUCCESS);
  37. }


A programot egyelőre szimulátorban futtatom, A PR1 regisztert beállítja de a TMR1 regisztert nem lépteti a program. Miden segítséget köszönök.
Következő: »»   303 / 1210
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