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   1025 / 1210
(#) malak válasza pipi hozzászólására (») Márc 19, 2018 /
 
Pipi neked is köszönöm ajánlatodat de megoldódott közben mate_x jóvoltából.
(#) Hp41C válasza malak hozzászólására (») Márc 19, 2018 /
 
Idézet:
„... megépített panel hiján tesztelni nem tudom az ic-t.”

Az MpLab -ban van egy beépített szimulátor, amivel lépésenként végrehajthatod a programodat. Lehet vizsgálni a regiszterek, memóriák tartalmát. Persze nem minden lehet vele szimulálni. Már programokkal az áramkörében is tudod szimulálni. pl. Proteus, stb.

Debug mód azt jelenti, hogy a módra képes programozóval nyomon lehet követni a programodat, miközben az a panelodba tett kontrolleren fut. Sajnos a felhasznált kontrollereddel önmagában nem lehetséges, a kicsi (8, 14, 18 lábúakhoz) kontrollerekhez egy un. header kell. A debug konfigurációs bitet az MpLab kezeli, az önállóan futóképes változathoz a Release, a nyomkövetéseshez a Debug módot kell választani (ablakban felül középen).
A debug mód a programod mellé egy debug executive -nak nevetett részt is beprogramoz, valamint egy kis RAM -ot is elhasznál.
(#) patrik81 hozzászólása Márc 19, 2018 /
 
Sziasztok!

Szeretnék segítséget kérni abban,hogy hogyan lehet használni a PIC16F690-es RA3/MCLR lábat bemenetként.A kapcsoló bekapcsolásakor a kimenetek szürkére változnak,lebegnek 0 és 1 között.
  1. #include <xc.h>
  2.  
  3. #pragma config FOSC = EC
  4. #pragma config WDTE = OFF
  5.  
  6. void main()
  7. {
  8.     TRISAbits.TRISA0=0;
  9.     TRISAbits.TRISA1=0;
  10.     TRISAbits.TRISA2=0;
  11.     TRISAbits.TRISA3=1;
  12.     TRISAbits.TRISA4=0;
  13.     TRISB=0;
  14.     TRISC=0;
  15.     ANSEL=0;
  16.     ANSELH=0;
  17.     if(!RA3)
  18.         RC0=1;
  19.     else RC0=0;
  20. }

k.png
    
(#) Lamprologus válasza patrik81 hozzászólására (») Márc 19, 2018 /
 
Confignál meg kéne adni, hogy ne resetelje a PIC-et!
(#) Hp41C válasza patrik81 hozzászólására (») Márc 19, 2018 /
 
Az 5. sorba:
#pragma config MCLRE = OFF
(#) patrik81 hozzászólása Márc 19, 2018 /
 
Működik! Hogy ez nekem nem jutott eszembe,hogy ki kéne kapcsolni az MCLR-t.Köszönöm nektek.
(#) Epichydra hozzászólása Márc 19, 2018 /
 
Sziasztok!
RGB LED vezérléshez szeretnék 3db PWM jelet előállítani egy 16F877A-val. A kérdésem az az lenne, hogy hogyna lehet a legegyszerűbben megoldani ezt? Timerek használatában még elég kezdő vagyok. XC8 fordítót használok. A válaszokat előre is köszönöm!
(#) don_peter hozzászólása Márc 20, 2018 /
 
Srácok, tudna nekem valaki segíteni, RC522 SPI portról történő használatában?
PIC18F4550-el tesztelgetném, de egyelőre nem jutok előrébb.
Elvileg az init már megvan és lefut, de nem tudom, hogy jó e vagy esetleg hibás a program.
Az adatlap előttem van, de nem túl beszédes sajna.

Már az is nagy segítség lenne, ha tudnám 100%-ig, hogy reset parancsnál milyen válasszal tér vissza az eszköz, ha minden klappol.
Digitális analizátorral nézem a kommunikációt, de passz, hogy jók e a válaszok.
Előre is köszi a segítséget. (privát is jöhet, ha esetleg van valami kód, vagy valaki már dobott össze egy működő megoldást)
(#) bbalazs_ válasza don_peter hozzászólására (») Márc 20, 2018 /
 
Ha jó az ASM és a szoftveres SPI, akkor igen.
A hozzászólás módosítva: Márc 20, 2018
Moderátor által szerkesztve
(#) don_peter válasza bbalazs_ hozzászólására (») Márc 20, 2018 /
 
A szoftveres SPI még csak elmenne, de az ASM a halálom..
Sajna még nem értem annyira, hogy abból C-t tudjak faragni.
Várok, hátha kísérletezett valaki C-n is ezzel a kártyás témával.
Egy működő C18-as kód jól jönne, hogy tudjak mihez hasonlítani.
(#) Lamprologus válasza don_peter hozzászólására (») Márc 20, 2018 /
 
Ez CCS-C, de hátha segít valamit ...
(#) don_peter válasza Lamprologus hozzászólására (») Márc 20, 2018 /
 
Ezt a kódot néztem és ennek alapján írogatom, de valamiért nem akar működni.
Arduino van itt a cégnél, azon működik, de PIC-en az istenért sem akar.
(#) don_peter válasza don_peter hozzászólására (») Márc 20, 2018 /
 
Közben meg lett a hiba, CKE = 1-ben kellett tegyem, hogy akkor mintavételezzen amikor órajel aktív állapotból tétlenre vált. Most már működik, még persze kell finomítani, de legalább megy. Köszi srácok.
(#) icserny válasza don_peter hozzászólására (») Márc 20, 2018 / 1
 
Idézet:
„CKE = 1-ben kellett tegyem, hogy akkor mintavételezzen amikor órajel aktív állapotból tétlenre vált.”

A Microchip a CKE bitet (az órajel fázisát) más gyártókhoz képest fordított polaritással értelmezi, tehát CKP=0, CKE=1 felel meg a legáltalánosabban használt Mode 0,0 órajel módnak. Így szerintem az inaktívból aktívba váltó élnél történik az adat bekapuzása.

A Microchip szerinti CKE=1 beállítás egy félperiódussal késlelteti a CKP órajel megjelenését. Ez lehetővé teszi, hogy az adatvonalakon stabilizálódjon a jelszint, mire az órajel felfutó éle megjelenik.
(#) don_peter hozzászólása Márc 21, 2018 /
 
Srácok segítsetek ki egy kicsit.
18F46K22-re szeretnék egy 1KHz-es PWM frekvenciát 50% kitöltéssel létrehozni.
C18-ban programozok.
Az adatlapot már oda vissza átnyálaztam és nem értem miért nem akar összejönni amit szeretnék. Szerintem már annyira el vagyok tévedve a számok mezején, hogy már nem látom a fától az erdőt.
Eddigi számolásom alapjai:
18F46K22-őt 64MHz-en járatom PLL-el.
  1. CCP1CON = 0b00001100;   //ccpxm3:ccpxm0 11xx=pwm mode  
  2.  
  3.         TRISCbits.TRISC2 = 0;
  4.         T2CONbits.TMR2ON = 0;   // STOP TIMER2 registers to POR state
  5.        
  6.         /* Timer számolásom:
  7.         PWM Period (PRx + 1) * 4 * TOSC * (TMRx Prescale Value)
  8.         Note  1: TOSC = 1/FOSC
  9.         (PR2 + 1) * 4 * (1/16MHz) * 16 == 256 * 4 * 0,0000000625 * 16 == 0,001024 == 1KHz
  10.         */
  11.         // A fentiek levezetése ként:
  12.         T2CON = 0b01001010;             // PWM esetében nincs előosztás, 16-os utóosztás (1KHz)
  13.         PR2 = 255;                              // Set period
  14.         T2CONbits.TMR2ON = 1;   // Turn on Timer2
  15.         CCPR1L = 128;    // 50% kitöltés

Valaki meg tudná nézni, hogy jó ez a kód?
Egyelőre szimulátorban tesztelem a frekit amelyről töltöttem fel képet, alább.
A képen látható, hogy 64uS a periódus idő, ha ezt elkezdem vissza számolni frekire, akkor a következőket kapom: 1/0,000064 == 15625Hz, ami sajnos 14.625KHz-el nagyobb mint amit szeretnék.

1Khz-es jelre lenne szükségem.
Mint nézek ennyire be?
Köszi előre is.
A hozzászólás módosítva: Márc 21, 2018

pwm.JPG
    
(#) ktamas66 válasza don_peter hozzászólására (») Márc 21, 2018 /
 
Ilyen magas órajellel nem tudsz 1kHz-et csinálni, mert kevés az osztó, max 3,9kHz-et. A számításban 64MHz-cel számolj, akkor kijön.
(#) usane válasza don_peter hozzászólására (») Márc 21, 2018 /
 
ktamasnak igaza van. Nem tudom ezt honnan vetted, az oszci sebességével kell számolni a periódus időt ha PLL-el jön össze akkor is. Mondjuk az akkor is még csak 4x-es. Valami még nem jó.
A hozzászólás módosítva: Márc 21, 2018
(#) don_peter válasza ktamas66 hozzászólására (») Márc 21, 2018 /
 
Igen eddig eljutottam, közben rájöttem, hogy le kell vennem az órajelet 16MHz-re.
Akkor ki fog jönni.
(#) don_peter válasza usane hozzászólására (») Márc 21, 2018 /
 
Már én sem tudom honnét vettem, de mint ha ezt olvastam volna az adatlapba, hogy orajelet osztanom kell 4-el, alapból.
Mindegy, leveszem az órajelet és akkor már jó lesz.
Megnézem, hogy tudom e 16MHz-en járatni a 18F46K22-őt.
(#) Pali79 válasza don_peter hozzászólására (») Márc 21, 2018 /
 
Miért nem tudnád? A belső órajele akár 1 MHz-re is levehető.
(#) aviator17 hozzászólása Márc 21, 2018 /
 
Sziasztok!

Egy Curiosity panelen próbálkozok PIC programozással (PIC16F1619), MPLAB és MCC segítségével. A DAC modult akartam kipróbálni de eddig nem sikerült dűlőre jutni vele. Úgy szeretném, hogy az ADC-től megkapja az értéket amit visszaalakít és kiadja a kimeneten. Az ADC működött egyébként egy másik projektben. 5V-ról megy a rendszer az ADC-re a bemenetet egy 100k-s potméteren keresztül állítom. A probléma az, hogy a DAC kimenetén 2,3V-nál több sehogy nem akar kijönni, hiába tekerem felfelé a potit. Lefelé szépen lemegy 0-ra. Mit csinálok rosszul?

A másik érdekes dolog, hogy ha beteszem a DAC modult a projektbe, akkor nem engedi a Curiosity-n keresztül programozni mint eddig, hanem csak a PICKIT-tel és arra hivatkozik, hogy a céleszközön tehát a PIC-ben a High-Voltage programming van beállítva. Ez mitől lehet?

Köszönöm a segítséget!
(#) gyoran hozzászólása Márc 21, 2018 /
 
Sziasztok (ha rossz helyre írok, sorry)
Miele Tango porszívó egyszer csak össze vissza járt majd megállt.
Mechanika OK, elektronika kiszerelve, próbapadra fel.
16F716 csinálná a lágyindítást és egy triakkal a fordulatszám szabályozást.
Poti az RA1/AN1-re osztja le az 5 Voltot.
Oszcillátor 1,3 MHz körüli, nem valami szép, de elmegy
RB1,RB2,RB3,RB4,RB5 párhuzamosan kötve (!) adja a TRIAKnak a gyújtást (lehet, hogy valamelyik bemenet, beforrasztva azt nem látni)
MCLR rendesen tápon
RB0/INT pedig kap 50 Hz. váltót valami behemót ellenálláson keresztül (védődiódák a PIC-ben pedig védenek) Ezt a jelforrást most magam mutatóujja pótolja.
Szkópon látható az 50 Hz a kezemből, stabil föld-táp. A kimeneten viszont jön egy csomag, majd elmarad, csak a helyükön látszik egy kis letörés, mintha csinálni akarna valamit. De ez inkább digitális-zaj a csipből. Aztán megint jön véletlenszerűen egy csomag 5-30 impulzussal, majd megint semmi.
A kimaradt csomagok helyén sehol nem látok semmit, még a tápon sem.
Bármi tippért végtelen hálás lennék. (Valahogy nem nagyon akarom elhinni, hogy a PIC félhülye lett)
(#) usane válasza gyoran hozzászólására (») Márc 22, 2018 / 1
 
Kondi jó a tápon? Nem lehet, hogy veszített a kapacitásából, vagy már épphogy működik és a nem stabil táp miatt ujraindul a PIC? Valamint a mutatóujjad nem megbízható.
egy 5V-os trafóról le tudod venni a szinusz jelet.
A hozzászólás módosítva: Márc 22, 2018
(#) gyoran válasza usane hozzászólására (») Márc 22, 2018 /
 
A kondi 238 uF, nem púpos. A tápfesz, ha kócos is, de rendben van. Mondjuk nem kerül semmibe, a próbapadon kap egy másikat. Másfelől a TRIAC 50 mA-t kér gyújtásra a II. és III. negyedben, az egész áramkör meg 5 mA alatt eszik kb. Szóval vannak azért tranziensek.
A mutatóujjam eredményét a bemeneten a szkóp szépen mutatja, rendben is van. 5 V-os trafóm nincs kéznél, de csinálok valami gnóm négyszöget. Ha eredetileg ott a 220 V van, akkor 5 voltig pillanatokon belül felmegy a fesz (gyakorlatilag a nullátmenetnél) utána nyit a védelem a 16f716-ban és a többi elmegy az ellenálláson.
Reset persze attól lehet. A nem használt bemenetek szabadon vannk és kimenetként GND-re vannak programozva, ahogyan látom szkópon. Viszont ezt majd felhúzom tápra, RESET-nél ezt elengedi TS-be, azt látni fogom a szkópon. Jó ötlet, köszi.
Ki is forrasztanám a 16F716-ot, megnézném, de annyira nagy bakit még gondolom a Miele sem követ el, hogy nem kapcsolja be a kódvédelmet.
Küzdeni egyébként a kihívás miatt küzdök, meg azért, mert ez 1800 Wattos porszívó, az újak - hála az EU-nak - 1000 W alatt vannak. A porszívó többi része meg annyira egyben van...
A hozzászólás módosítva: Márc 22, 2018
(#) gyoran válasza usane hozzászólására (») Márc 22, 2018 /
 
50 Hz négyszögről megtáplálva, semmi változás. RESET nincs, tápfesz stabil.
A motor felől nem látok visszacsatolást, pl. azért, hogy nézze, fut-e.

Mindegy, kicsit játszom még vele, aztán tervezek egy saját vezérlést.
Mindenesetre nagyon köszönöm a segítségedet.
(#) don_peter válasza Pali79 hozzászólására (») Márc 23, 2018 /
 
Külső 16MHz-es kristállyal járatom. Ezzel már oké az 1KHz-es jel.
(#) Hp41C válasza don_peter hozzászólására (») Márc 23, 2018 /
 
18F2xK40 vagy 18F2xK42 -ben a TMR2 előosztója 1/1 -től 1/128 -ig állítható (csak 2 hatványai).
(#) aviator17 válasza aviator17 hozzászólására (») Márc 23, 2018 /
 
Erre senki?

Azóta egyszerűsítettem a dolgot, a 8 bit-es DAC-nek paraméterként a maximális kivezérlését adom meg (255) a programban, a kimeneti feszültség 2,37 V 5V-os táp esetén.
A hozzászólás módosítva: Márc 23, 2018
(#) ktamas66 válasza aviator17 hozzászólására (») Márc 23, 2018 /
 
Ellenőrizd, hogy a DAC referencia feszültsége jól van-e beállítva. A kimenet nincs bufferelve, így nem terhelhető, kell utána egy leválasztó OPA, ami ki is tudja adni a megfelelő feszültséget.
(#) aviator17 válasza ktamas66 hozzászólására (») Márc 23, 2018 /
 
A pozitív referencia a VDD (+5V), a negatív a VSS (0V), szerintem ez rendben van. A leválasztó OPA sajnos nem tudom hogy mit jelent

Egyébként ezt (Bővebben: Link) szeretném megvalósítani, pontosan ugyanígy csinálom, csak nálam a count nem 30 hanem 255, mert 8 bites a DAC-m.
Következő: »»   1025 / 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