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   482 / 1210
(#) Kovabe válasza eSDi hozzászólására (») Jan 17, 2014 /
 
Nem ez már böven elég, csak a DS18B20 kommunikációt akartam kivárni mert ha jol tudom akkor 750ms a kiolvasása, de ez már igy ebben a formában lényegtelen mert olvas rendesen. Amugy sikerült kihozni olyan 4s-ot ez már böven sok.
Mégegyszer köszönöm
(#) gyula66 hozzászólása Jan 17, 2014 /
 
Sziasztok! Olyan PIC-es riasztót szeretnék csinálni ami csak ennyit tesz, hogy ha megnyomok egy gombot, akkor pár másodperc múlva élesedik, és figyel egy kapcsolót ami negatív jelet ad (ajtó kapcsoló). A jel beérkezése után ismét némi késeltetéssel bekapcsol egy szirénát. Ha újra meg nyomom a gombot akkor kikapcsol. A tápfeszültsége 24V lenne. Szeretném ha valaki tudna ebben segíteni.
(#) Kovabe válasza (Felhasználó 15355) hozzászólására (») Jan 18, 2014 /
 
Nem lustaság, megkerestem de az idözitövel volt a bajom, nekem szükségem van a folyamatos futtatásra mert LCD,stb viszont igy bármi is történik a PIC-el akkor reset és indulhat a menet. Mostmár sikerült a flowcode-os beillesztés is és tökéletesen megy mint ahogy jeleztem. A másik az angol tdás hiánya amit hiába forditoztam nem értettem.
Ugy gondolom hogyha kérdezek az nem bün (ne értsd félre), Igen igy könnyebb de keresgéltem utánna böven és nekem ez a C kod hiáánzott. Még mindig küzdök a bit to hex fordittással. Tudom hogy van a nemten de az nekem nem müködik.
(#) djhua hozzászólása Jan 18, 2014 /
 
Udv mindenkinek .. Egy erdekes problemaval fordulok hozzatok , megpedig ezt a Digitalis Orat keszitetem el http://www.hobbielektronika.hu/cikkek/digitalis_ora_homerovel.html .
De elesztes utan , nem mukodott , sot egy szegmens se gyult ki . Meregettem , az 5,14 lab kozot megvan a +5V , egy alkatreszt valtoztattam a BC212 helyett BC556B raktam .

Es meg egy eszrevetel : veletlenul osszeérintettem a PIC , 3-as es 4-es labat es kigyult mind a 4 , 7 szegmenses kijelzo .
Ha valaki tudja mi lenne a probelma ... , elore is koszonom szepen
(#) icserny válasza djhua hozzászólására (») Jan 18, 2014 / 1
 
A kapcsolási rajz szerint közös anódú kijelzők kellenek. Neked az van, kipróbáltad?
(#) djhua válasza icserny hozzászólására (») Jan 18, 2014 /
 
Igen kozos anodu a 3 es a 8 as lab a kozos " + " es a tobbi "-"
(#) Birs Alma hozzászólása Jan 18, 2014 /
 
Sziasztok,

Szeretnék egy PIC-es fogyasztásmérőt készíteni hálózati feszültségre. Úgy gondolom áramot kell mérnem és persze időt. A feszültség ugye adott. Aztán ezt már csak forintra kéne váltani és kiírni. Mindebből az áram mérésére nincsen ötletem. Hogyan tudnám ezt megtenni PIC-el?

Valahogy 220 V-os a fogyasztóval sorba kapcsolt valaminek kellene az ott átfolyó árammal arányos 0-5 V közé eső feszültséget csinálnia, akkor azt PIC A/D átalakítójával már tudnám is kezelni.

Tudna valaki segíteni ebben?

Köszönöm.
(#) NyariG válasza Birs Alma hozzászólására (») Jan 18, 2014 / 1
 
Helló, nem akarok a lelkedbe gázolni de kb 3e forintér már kapni ilyeneket az mért nem jó?
Amúgy:Bővebben: Link
vagy: Bővebben: Link
(#) Hp41C válasza Birs Alma hozzászólására (») Jan 18, 2014 / 1
 
Áramváltóval kisebb áram értékre konvertálva annak terhelő elleállásán való váltakozó feszültség mérésére lehet visszavezetni.
Figyelem: Az hálózatba beiktatott áramváltó szekunder körét nem szabad megszakítani. A mérőkörön módosításokat csak árammentes vagy rövidre zárt szekunder körű áramváltón szabad végezni.
A hozzászólás módosítva: Jan 18, 2014
(#) Birs Alma válasza NyariG hozzászólására (») Jan 18, 2014 /
 
Kösz az infót!
(#) icserny válasza Birs Alma hozzászólására (») Jan 19, 2014 /
 
A helyedben én először ezen az oldalon néznék körül, s elolvasnám a hozzájuk kapcsolódó alkalmazási mintapélda leírásokat.

Az MCP3905A Energy Meter Reference Design nagyjából azt csinálja, amire vágysz. Vigyázat, ez közvetlenül kapcsolódik a hálózatra, nem gyerekjáték!

A fogyasztásmérőknél egyébként a PIC 10 bites beépített ADC-je nem elég pontos, s egyébként is ajánlatos szimultán mintavételezésre alkalmas eszközt használni. (Ha nem egyidejűleg méred a feszültséget és az áramot akkor hamis értéket számolsz a teljesítményre)
(#) icserny válasza icserny hozzászólására (») Jan 19, 2014 /
 
A Microchip energiamérésre ajánlott termékei egyébként három csoportba sorolhatók:

- Energiamérő (kWh-ként adott számú impulzust ad ki) IC-k
- Energiaméréshez analóg frontend IC-k
- Energiaméréshez optimalizált (beépített analóg frontend-et és közvetlen LCD meghajtót tartalmazó) PIC18F87J72 termékcsalád.
Bővebben: Link
(#) Birs Alma válasza icserny hozzászólására (») Jan 19, 2014 /
 
Köszönöm!
(#) gyengus hozzászólása Jan 19, 2014 /
 
Sziasztok!

PIC12LF1822-nek szeretném beállítani az EUSART modulját. Sajnos nem azt küldi amit én szeretnék.
MPLAB X IDE-t és XC8-at használok.
Bemásolom ide a kapcsolódó kódrészleteket:
  1. // RA0 és RA1 digitális IO
  2.     PORTA = 0;
  3.     LATA = 0;
  4.     ANSELA = 0b00000100;
  5.     TRISA = 0b00000010;
  6.     // Nem használt perifériák kikapcsolása: DAC, MDOUT, SPI, SRNQ, P1B, CCP1
  7.     DACEN = 0;
  8.     SRCON0 = 0;
  9.     CM1CON0 = 0;
  10.     MDCON = 0;
  11.     CCP1CON = 0;
  12.     SSP1CON1 = 0;
  13.  
  14. // Ezzel a függvénnyel inicializálom az EUSART modult
  15. void init_comms(void) {
  16.     PORTAbits.RA0 = 1; // TX
  17.     //PORTAbits.RA1 = 1; // RX
  18.     BRG16 = 0;
  19.     SPBRGH = 0;
  20.     SPBRGL = 25; // baud: 19200
  21.     SYNC = 0;
  22.     SPEN = 1;
  23.     TX9 = 0;
  24.     RX9 = 0;
  25.     TXIE = 0;
  26.     TXEN = 1;
  27.     CREN = 1;
  28.     RCIE = 1;
  29. } // init_comms
  30.  
  31. printf("PIC12LF1822 ready");
  32.  
  33. // Talán ezt használja a printf:
  34. void putch(unsigned char byte) {
  35.     //while (!TXIF) continue; // Ezt kiszedtem, mert ha benne van, nem küld semmit
  36.     TXREG = byte;
  37. } // putch


Próbáltam 9600 és 57600 baudd-al is. PC-n PUTTY van a másik oldalon ill egy USB HUB + USB-TTL (CP2102) átalakító.
Az átalakító RX lába a PIC RA0 lábára van kötve és a két áramkör földje lett összekötve.
A tápot PICkit 3 biztosítja.

Mit rontottam el?
(#) eSDi válasza gyengus hozzászólására (») Jan 19, 2014 /
 
Első ránézésre jónak tűnik a beállítás. Azt viszont nem írtad le, hogy mégis mit küld ki. Mindenféle zagyvaságot, vagy semmit? A zagyvaságot okozhatja az orajel pontatlansága és az USB átalakító is.
Illetve a "PORTAbits.RA0 = 1"-el el nem bemenetre állítod az RA0-t?
(#) gyengus válasza eSDi hozzászólására (») Jan 19, 2014 /
 
Zagyvaságot küld. (Konkrétan: PuTTY▒) És ezt kellene neki küldenie: PIC12LF1822 ready
A PORTAbits.RA0 = 1 szerintem 1-re állítja a port állapotát.
A TRISAbits.RA0 = 1 állítaná a lábat bemenetre. A port digitális kimenetre van állítva.
Az órajelet a belső osszcillátor adja, FOSC: 32MHz-re van állítva.
(#) eSDi válasza gyengus hozzászólására (») Jan 19, 2014 /
 
Igaz, tényleg a kimenetet állítja, de ezt nem kell megtenni manuálisan. C-hez annyira nem értek, előre is bocs. Ha belső osciról megy akkor mindenképpen kalibrálni kell azt a lehető legpontosabra. Korábban nekem is volt hasonló problémám. De inkább használj külső kvarcot, azzal nem lesz ilyen gond.
(#) gyengus válasza eSDi hozzászólására (») Jan 19, 2014 /
 
Sajnos a külső kvarc már nem fér rá, ez csak 8 lábú...
(#) eSDi válasza gyengus hozzászólására (») Jan 19, 2014 /
 
Ja tényleg 12F... Akkor csak a kalibrálás segít és ki kell számolni, hogy azon a frekin milyen baud-al a legkisebb a hiba.
(#) Hp41C válasza gyengus hozzászólására (») Jan 19, 2014 /
 
Az SPEN = 1; sort elvinném a RCIE =1; utáni sorra, megírnám a vételi megszakítás kiszolgáló rutint, ami az RCREG kiolvasásával törli a kérést. 9600 baud -hoz 32MHz órajelnél BRG16 = 0; BRGH = 0; SPBGRL = 51; SPBRGH = 0; kellene, a 57600 baudhoz pedig BRG16 = 0; BRGH = 1; SPBGRL = 33; SPBRGH = 0; kellene. A RA0 lábat digitális bemenetnek kell állítani:
Idézet:
„Setting the SPEN bit of the RCSTA register enables the EUSART and automatically configures the TX/CK I/O pin as an output.”
(#) gyengus válasza Hp41C hozzászólására (») Jan 19, 2014 /
 
Sajnos így se jó. Továbbra is zagyvaságokat küld.
SPBRGL-t próbáltam 3-al is, mert az adatlap annyit ír 57600 baudhoz (299. o. táblázat első része).
Ilyen lett a vételi megszakítás kezelése:
  1. if (RCIF) {
  2.         tmp = RCREG;
  3.     }
  4. // tmp a main() fölött van deklarálva:
  5. unsigned char tmp = '0';

A Putty beállításai a következők (hátha ezt rontottam el):
Speed: 57600
Data bits: 8
Stop bits: 1
Parity: None
Flow control: XON/XOFF
(#) Hp41C válasza gyengus hozzászólására (») Jan 19, 2014 /
 
Ha SYNC=0; BRG16=0; BRGH=0; akkor az adatlap szerint SBBRG = int(Fosc / 64 / Baud) - 1 = int(32000000 / 64 / 57600) - 1 = 8 - 1 = 7, a hiba 8.5%. A maximális megengedett eltérés (fél bitidő csúszás 10 bitidő alatt) 5%. Nem csoda, hogy összevisszaságot ír ki.
Ha SYNC=0; BRG16=0; BRGH=1; akkor az adatlap szerint SBBRG = int(Fosc / 16 / Baud) - 1 = int(32000000 / 16 / 57600) - 1 = 34 - 1 = 33, a hiba 2.13%. Ez már jó lenne.
Visszatetted a while (!TXIF); -et a putch() -ba?
(#) gyengus válasza Hp41C hozzászólására (») Jan 19, 2014 /
 
Köszi, azt a táblázatot nem is néztem.

Most visszatettem a while-t.
Alakul, de még nem az igazi:
Ezt szeretném, ha kiírná: PIC12LF1822 ready $
És ezt írja ki: xxj▒2LF1822 ready $
Tehát az első 4 byte rosszul jön át.
(#) Szamy hozzászólása Jan 20, 2014 /
 
Üdvöletek!
A következő gondom van: motort hajtok pwm kimenetről. Alkalmanként néhány ms-re full fordulatra kell kapcsolnom (tehát a C2 -t 1-be tenni) , de anélkül, hogy a pwm -hez közben hozzányúlnék. Sajnos a további szabad portok elfogytak, tehát az, hogy egy másik lábról vezérelt meghajtófokozattal játszanék(párhuzamosan), kizárva. Kérdés: programból megoldható valahogyan ez a probléma?
(#) eSDi válasza Szamy hozzászólására (») Jan 20, 2014 /
 
Üdv!
Szerintem pedig hozzá kell nyúlnod, nem hiszem, hogy lenne más megoldás is. Kimented a PWM értékét egy változóba, beállítod a 100%-os kitöltést, majd a kellő idő letelte után visszaírod az elmentett értéket.
(#) Szamy válasza eSDi hozzászólására (») Jan 20, 2014 /
 
Köszönöm!
(#) ktamas66 válasza Szamy hozzászólására (») Jan 20, 2014 /
 
Azt tudnod kell, hogy a CCPxL regiszter írása csak a következő ciklusra van hatással, tehát a "néhány ms" a PWM frekvencia egész számú többszöröse lesz.
(#) Beles hozzászólása Jan 20, 2014 /
 
Sziasztok! PIC24EP128MC202 UART-al próbálkozok. Az adatlap szerint nem kell állítanom bemenetre a TRISx regisztert az RX lábnál:
Idézet:
„the UxTX pin is configured as an output and the UxRX pin as
an input, overriding the TRISx and PORTx register bit settings for the corresponding I/O port
pins.”

Azonban nekem mégis csak akkor működik a vétel, ha beállítom bemenetnek az RX-nek használt lábat. Miért lehet ez?
  1. void UARTInit()                                 //UART init
  2. {
  3. __builtin_write_OSCCONL(OSCCON & ~(1<<6));
  4. RPINR18bits.U1RXR = 34;         //UART RX melyik láb legyen: RPI34
  5. RPOR0bits.RP35R = 1;            //TX melyik láb: RP35
  6. __builtin_write_OSCCONL(OSCCON | (1<<6));
  7. TRISBbits.TRISB2 = 1;
  8. U1MODE = 0;
  9. U1STA = 0;
  10. IPC2bits.U1RXIP = 1;            //UART receive priority 1;
  11. U1BRG = 455;                //Baudrate 9600
  12. U1MODEbits.UARTEN = 1;      //UART Enable
  13. U1STAbits.URXISEL = 0b11;       //UART megszakítás ha a buffer tele van
  14. U1STAbits.UTXEN = 1;        //UART TX Enable
  15. IEC0bits.U1RXIE = 1;        //UART RX Interrupt enabled
  16. __delay_ms(1);
  17. }
(#) havranarpi hozzászólása Jan 20, 2014 /
 
Sziasztok!
Mostmár készen van a PICKIT 2-m és fejlesztő panelt keresvén mindent begyűjtöttem suliban ami csak PIC-el kapcsolatos.
ezek a panelek használhatóak már PIC programozá tanulásra?
(#) icserny válasza havranarpi hozzászólására (») Jan 20, 2014 /
 
A múzeumban jól mutatnának!
Következő: »»   482 / 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