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   326 / 1210
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Mi a hiba? Gondolom jó fordító van kiválasztva, a 2 db c fájl a Sources, a maradék 1 db h fájl a Headers mappában van, innentől nem sok hibalehetőség van.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Itt van, lementettem a képernyőt.

mplab.jpg
    
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Na most itt valami keveredés van. Van egy header.c fájlod, amit nem tudok, hogy mire van. Csak az a 3 fájl legyen a projectben, amit küldtem. A main.c és az lcd.c a Source Files mappában, az lcd.h pedig a Header Files mappában legyen.

A fordító egyébként arra panaszkodik, hogy a header.c fájlban már egyszer létrehoztál egy LCDPutCmd nevű függvényt, de mivel erről a main.c fordításakor nem tud a fordító, ezért az abban lévő LCDPutCmd függvényt a híváskor automatikusan (implicit) létrehozza, ami persze ütközni fog az "eredeti" függvénnyel. Ezért kell az lcd.h. Ez a fájl mind a main.c-be, mind az lcd.c-be be van "include"-olva, így a fordító tudni fogja, hogy mindenhol ugyanarról a függvényről van szó.

Szerk.: most nézem, hogy még azt a main.c-t használod, amit legelső alkalommal "összeollóztunk" a honlapról. Az nem kell. Az kell csak, amit küldtem.
A hozzászólás módosítva: Nov 6, 2012
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Végigjátszottam így is, de most ez van.
A hozzászólás módosítva: Nov 6, 2012

mplab1.jpg
    
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Gyanítom az lehet a baja, hogy olyan elérési útvonalon van a projekt mappája, amiben van ékezet ("Letöltések"). Én megpróbálnán csak szimplán a Dokumentumok alá létrehozni.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Létrehoztam ahogy írtad, de ugyan az a hiba.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 6, 2012 /
 
Bocsi, de most mennem kell, majd holnap folytatjuk.
Tibi
(#) icserny válasza n_yálastrubadúr hozzászólására (») Nov 6, 2012 /
 
Idézet:
„Azt sem tudom, hogyan csináljak pic-cel olyan kapacitív kapcsiolót ami 1-2mm-es távból kapcsol.”
Kesztyűben akarsz dudálni, vagy miért kell ilyen nagy távolság? Nagyságrendben mekkora kapcitásváltozás várható (1-10-100 pF?)

Módszerek:
- Csinálhatsz relaxációs oszcillátort az analóg komparátorból, melynek a frekvenciája megváltozik a szenzor kapacitásának megváltozásakor.
- Mérheted a kapacitás feltöltődési/kisülési idejét ADC-vel.
- Mérheted a kapacitás feltöltődési/kisülési idejét a portbemenet okozta megszakítás felhasználásával.
Idézet:
„hogy megmaradjon az alvó állapot áramfelfételhez legalább közeli fogyasztás...”
Feltehetőleg elegendő időnként ránézni a szenzorra. Közben altathatod a CPU-t.
A hozzászólás módosítva: Nov 6, 2012
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 6, 2012 /
 
Félmegoldásnak csatolom a lefordított HEX fájlt.
(#) vilmosd válasza n_yálastrubadúr hozzászólására (») Nov 6, 2012 /
 
Az uj 12F18xx, 16F18xx sorozatban gyari tartozek a kapacitiv erzekelo. Ugy hivjak hogy CPS.
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 7, 2012 /
 
Köszi a HEX-et majd kipróbálom.
De még mindíg foglalkoztat az MPLAB dolog, hogy ymiért nem akarja lefordítani.
Tibi
(#) ToMikaa válasza tibike32 hozzászólására (») Nov 7, 2012 /
 
Mellékeltem a teljes project-et. Annyi, hogy a build konfigurációt lehet, hogy át kell szerkeszteni, mert az én gépemen lévő elérési utakra van beállítva. Ez meg tudod tenni úgy, hogy megnyitod a project-et, rámész oda, hogy Run->Set project configuration -> customize -> New -> Manage configurations -> New -> Beírod a nevét, pl. MyConfig -> OK, utána a bal oldalon rákattintasz a MyConfig-ra és beállítgatod a szükséges dolgokat (fordító, programozó, PIC típusa).
Ha kész, akkor OK, utána a felső eszköztáron lévő legördülő menüből kiválasztod a MyConfig-ot és megpróbálod lefordítani a project-et.
(#) glaci hozzászólása Nov 7, 2012 /
 
Kezdőként tanulgatok picelni. delphi háttérrel mikropascal-lal boldogulnék leginkább. El is kedtem
a "micropascal_pro_pic 2012" -vel próbálgatni, de hamar elértem a demo limitet és most a 3.2 pro for pic a tanulópad. És itt kezdődnek a problémák. Analóg jelet mérnék és az eredményt kiíratnám egy lcd-re. Amit a pic2012 helyesen adott is vissza, de a 3.2 egészen más eredményt ad. Bizonyára a 2012 alapból állított be olyan regisztert amit a 3.2-ben nekem kéne. Segítsetek beállítani, hogy korrekt eredményt kapjak. A próbapic 16f690.

a kérdéses kód

Ansel:=%00000100;
Anselh:=0;
TrisA:=4;
.
.
.
adc := ADC_Read(2);
tlong:=adc*5000;
tlong:=tlong/1023;

és ezt az értéket íratnám ki az lcd-re
5V helyett 0.12 körüli értéket kapok

a 2012 pro pic-cel ez a kód jó volt.
(#) whalaky hozzászólása Nov 7, 2012 /
 
Üdv mindenkinek!
Egy PIC24F-el küzdök, de képtelen vagyok az A/D átalakítót scan módra konfigurálni (pontosabban egyszer már sikerült véletlen, de az a forrás az enyészeté lett).
A lényeg hogy egyszerre szeretném az AN0 és az AN1-et beolvasni, de nem megy....
Mit nem csinálok jól?
(C30)
  1. AD1CON1bits.ADON = 0;                       // turn off ADC
  2.     /* configures the input scan selection bits */
  3.     AD1CSSL = ADC_SCAN_AN0 | ADC_SCAN_AN1;
  4.     /* digital/analog mode selection on the port bits */
  5.     AD1PCFG = ENABLE_AN0_ANA | ENABLE_AN1_ANA; // Select port pins as analog inputs ADPCFG<15:0>
  6.     /* config AD1CON1 */
  7.     AD1CON1 = ADC_MODULE_OFF | ADC_IDLE_STOP | ADC_FORMAT_INTG | ADC_CLK_AUTO | ADC_AUTO_SAMPLING_ON | ADC_SAMP_OFF;
  8.     /* config AD1CON2 */
  9.     AD1CON2 = ADC_VREF_AVDD_AVSS | ADC_SCAN_ON | ADC_INTR_EACH_CONV | ADC_ALT_BUF_OFF | ADC_ALT_INPUT_OFF;
  10.     AD1CON2bits.CHPS = 1;
  11.     /* config AD1CON3 */
  12.     AD1CON3 = ADC_CONV_CLK_INTERNAL_RC | ADC_SAMPLE_TIME_31 | ADC_CONV_CLK_16Tcy;
  13.  
  14.     // ConfigIntADC10(ADC_INT_ENABLE);  // Disable ADC interrupt
  15.     AD1CON1bits.ADON = 1;
  16.     IFS0bits.AD1IF = 0;
  17.     // IEC0bits.AD1IE = 1;
  18.  
  19.     AD1CHS = 0;
  20.     AD1CON1bits.SAMP = 1; // Start sampling
  21.     DELAY_US(10); // Wait for sampling time (10us)
  22.     AD1CON1bits.SAMP = 0; // Start the conversion
  23.     while (!AD1CON1bits.DONE); // Wait for the conversion to complete
  24.     ADCValue0 = ADC1BUF0; // Read the conversion result
  25.     ADCValue1 = ADC1BUF1; // Read the conversion result
  26.     sprintf( uart2buf, "\n\rADC0 Value: %d\n\rADC1 Value %d", ADCValue0, ADCValue1 );
  27.     putsUART2((unsigned int *) uart2buf);

Az AN0 értéket szépen kiolvassa, de az AN1 mindíg 0 marad.
(#) n_yálastrubadúr válasza icserny hozzászólására (») Nov 7, 2012 /
 
Köszönöm a sok megoldási lehetőséget. Egyébként csak egy vékony plexi lapon kell áthatolnia. Köszönöm.
(#) icserny válasza n_yálastrubadúr hozzászólására (») Nov 7, 2012 /
 
Idézet:
„csak egy vékony plexi lapon kell áthatolnia.”
Minél nagyobb a távolság, annál nagyobb felületek kellenek az üzembiztos érzékeléshez. Finom érzékeléshez csak a PCB forrasztásvédő lakkján kell "áthatolni". Valamit esetleg segíthet (ha nyomógombról és nem csúszkáról van szó) ha a "nyomógomb" érzékelő felületet földelt gyűrű veszi körül (nyitott kondenzátor).
(#) icserny válasza whalaky hozzászólására (») Nov 7, 2012 / 1
 
A PIC-kwik projektben mindent leírtam ezzel kapcsolataban. Ha jól értem a problémát, akkor neked az az adc7scan1.c vagy adc7scan2.c mintapélda lehet érdekes. A kettő között az a különbség, hogy a második példa ping-pong módban dolgozik.

Vannémi különbség a PIC24F és a PIC24H/dsPIC33 ADC moduljának felépításáben, erre ügyelni kell. A fentebb ajánlott példák a DMA nélküli PIC24F-hez vagy PIC24H-hoz jók.

A PIC24H/dsPIC33 szimultán mintavételezést is tud, arra is van példa.
A fejlettebb típusok DMA-val is rendelkeznek, arra is van példa.
(#) whalaky válasza icserny hozzászólására (») Nov 8, 2012 /
 
Köszönöm!
Úgy tűnik jó lesz a dolog. Voltak bugok, már csak a szimulátor (ISIS) szórakoztat .
(#) tibike32 válasza ToMikaa hozzászólására (») Nov 8, 2012 /
 
Helló!

Na úgy néz ki, hogy sikerült lefordítanom az MPLAB-al .
Összehasonlítottam a tieddel és minden stimmel.
A 8.56-os MPLAB-al sikerült , HI-TECH universal toolsuit-el.

Tibi
(#) Gabó hozzászólása Nov 8, 2012 /
 
Olyan kérdésem lenne, hogy én mikroC PRO for PICet használok és ugye az LCD-t 4biten vezérli.
  1. // LCD module connections
  2. sbit LCD_RS at RB4_bit;
  3. sbit LCD_EN at RB5_bit;
  4. sbit LCD_D4 at RB0_bit;
  5. sbit LCD_D5 at RB1_bit;
  6. sbit LCD_D6 at RB2_bit;
  7. sbit LCD_D7 at RB3_bit;
  8. sbit LCD_RS_Direction at TRISB4_bit;
  9. sbit LCD_EN_Direction at TRISB5_bit;
  10. sbit LCD_D4_Direction at TRISB0_bit;
  11. sbit LCD_D5_Direction at TRISB1_bit;
  12. sbit LCD_D6_Direction at TRISB2_bit;
  13. sbit LCD_D7_Direction at TRISB3_bit;
  14. // End LCD module connections


Ugye így néz ki. Na most ezt 8 bitesre, hogy lehetne átírni? Vagy felesleges bajlódni vele? Azt a módszert próbáltam ahol
"sbit LCD_DX_Direction at TRISBX_bit;"
hozzáírom pluszba, de akkor meg ugye nem ment.
(#) icserny válasza Gabó hozzászólására (») Nov 8, 2012 /
 
Az a probléma, hogy nemcsak ezeket a definíciókat kell átírni, hanem az LCD inicializálását végző függvényt (más üzemmódot kell beállítani) és az egy karaktert kiküldő függvényt is (nem két részletben kell kiküldeni a bájtot).

A User Projects oldalon találsz mintapéldát mikroBasic, mikroPascal és mikroC for PIC-hez (Filip Jankovic, 2009. május 12.)
(#) Gabó válasza icserny hozzászólására (») Nov 8, 2012 /
 
Áhhá! Akkor jól sejtettem a dolgot, hogy mi a baja!
Köszönöm a választ!
(#) silent15 hozzászólása Nov 8, 2012 /
 
Sziasztok, olyan PIC -et keresek, amin van 24 PWM láb, nem tudom létezik e ilyen, ilyet szeretnék építeni: Aurora 9 . Fontos lenne nekem, hogy PIC18F széria, és lehessen programozni Flowcodeban.
Van ilyen, vagy ezt milyen módszerrel/ekkel lehet megcsinálni?

Köszi!
(#) kaqkk válasza silent15 hozzászólására (») Nov 8, 2012 /
 
Az rgb led ben 3 szín van , minek ehhez 24 PWM??
(#) silent15 válasza kaqkk hozzászólására (») Nov 8, 2012 /
 
Hogy minden LED anódját külön tudjam vezérelni, 8 LED 8*3=24.
(#) kaqkk válasza silent15 hozzászólására (») Nov 8, 2012 /
 
semmi értelme , ha van 3 külön állítható pwm ami a szineket keveri akkor a ledek közül bármelyik rákapcsolható a 3 pwm kimenetre rákötöd az összes led - anódját és csak a katódokat kapcsolgatod ...
(#) silent15 válasza kaqkk hozzászólására (») Nov 8, 2012 /
 
Na erre nem is gondoltam, de sokkal logikusabb mint 24 PWM csatorna Köszi, akkor elkezdek LED katód kapcsolgatással.
(#) matheattila válasza silent15 hozzászólására (») Nov 8, 2012 /
 
Sőt, ha egy kicsit jobban utánanéznél a belinkelt videó alatti linken, akkor megtalálnánd a videón látható eszköz kapcsolási rajzát, mely szerint csak EGYETLEN egy PWM kimenet kell, a többit mátrix szerűen multiplexelve vezérli, minden színnek külön láb, minden RGB LED-nek külön láb, így az az egyetlen PWM mindegyiket vezérli
Az illető egy 24F szériás PIC-et használt, de ezt 18F-el is meg lehet oldani.
Ránézésre ezzel a módszerrel azt nem lehet megoldani, hogy egyidőben két különböző LED különböző színben világítson (pl. az egyik led piros míg a másik zöld, ezzel a módszerrel csak azt látnád, hogy mind a kettő szárgán világít, mivelhogy egyszerre mind a két szín és mindkét led vezérelve van), de mivel az emberi szem könnyen becsapható így nem szükséges egyszerre meghajtani mindkét LED-et és színt, hanem csak felváltva (először egy bizonyos ideig meghajtod a piros sínt és kiválasztod az egyik ledet, eddig a többi nem világít, majd ugyanannyi ideig a zöldet és egy másik ledet) így már "egyszerre" (a valóságban külön-külön csak nagyon gyorsan váltogatva) lesz az egyik piros és a másik zöld, és ezt még a többi színnel és leddel is el lehet játszani, csak annyi a teendő, hogy a LED-eket és a színeket nem folyamatosan kell megvezérelni, hanem gyorsan kell váltogatni (multiplexelni).
Az emberi szem a másodpercenkénti 24 képkocka levetítését már folytonosnak érzékeli, így az a nagyon gyors kapcsolgatás nagyobb kell legyen mint 24Hz (a gyakorlatban ez álltalában 100Hz, 1kHz szokott lenni és ekkor már biztos, hogy folyamatosnak fog tűnni
(#) silent15 válasza matheattila hozzászólására (») Nov 9, 2012 /
 
Húh .. köszi ezt a kimerítő választ , majd ezt kipróbálom 1 majd 2 leddel, és akkor majd bővítem.

Köszi!
(#) vidra8 hozzászólása Nov 9, 2012 /
 
Sziasztok.

Egy kis programmódosításban szeretnék segítséget kérni.
Megépítettem próbapanelon ezt a kapcsolást: http://www.electronics-lab.com/projects/test/015/index.html

Az a baj vele hogy DS18B20 típusú hőmérőszenzort használok (DS1820 helyett), amivel írja is hogy nem működik. Valamiféle konverziós időről beszél hogy módosítani kell a programban, igaz ezt meg a DS18S20-ra írja.

A kérdésem, hogy működésre lehet bírni ezt a hőmérőt DS18B20-as típusú szenzorral? Mit kellene módosítani a programon?
Következő: »»   326 / 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