Fórum témák

» Több friss téma
Fórum » PIC programozás mikroC fejlesztőkörnyezetben
Lapozás: OK   3 / 10
(#) Hp41C válasza pompidu hozzászólására (») Ápr 10, 2016 /
 
GPIO néven szerepel az adatlapban.
(#) pompidu válasza Hp41C hozzászólására (») Ápr 10, 2016 /
 
Akkor így hivatkozzak rá?
  1. PORTGPIO.F0=1
  2. stb


Még az ANSELH-t is aláhúzza, de miért?
A hozzászólás módosítva: Ápr 10, 2016
(#) Prendick válasza pompidu hozzászólására (») Ápr 10, 2016 /
 
Inkább így: GPIO.B0, vagy egyszerűbben: GP0_bit.
ANSELH nincs a picben. Van ANSEL meg ADRESH.
A hozzászólás módosítva: Ápr 10, 2016
(#) pompidu válasza Prendick hozzászólására (») Ápr 10, 2016 /
 
Működik, köszönöm a segítséget!
(#) Elektro.on hozzászólása Ápr 11, 2016 /
 
Csak egy tipp:
Ha az adott PIC nél valamit másképp nevez adatlap alapján is és nem vagy biztos a MikroC ill MikroPascal - os elnevezésben, akkor túrd fel egy kicsit a fejlesztő környezetet.
Én ugyan pascalozok de MikroC -nél is a "MikroC PRO for PIC/Defs" mappában megkeresed az aktuális PIC -ed hez tartozó filet. Esetedben pascal környezetben P12F683.mpas C ben talán P12F683.c . A tartalma (csak részlet):
(Az utolsó két sort nézd.)
  1. // Special function registers (SFRs)
  2. var
  3.   INDF             : byte; absolute 0x0000; volatile; sfr;
  4.   TMR0             : byte; absolute 0x0001; volatile; sfr;
  5.   PCL              : byte; absolute 0x0002; volatile; sfr;
  6.   STATUS           : byte; absolute 0x0003; volatile; sfr;
  7.   FSR              : byte; absolute 0x0004;           sfr;
  8.   FSRPTR           :^byte; absolute 0x0004;           sfr;
  9.   PCLATH           : byte; absolute 0x000A; volatile; sfr;
  10.   INTCON           : byte; absolute 0x000B; volatile; sfr;
  11.   PIR1             : byte; absolute 0x000C; volatile; sfr;
  12.   TMR1L            : byte; absolute 0x000E; volatile; sfr;
  13.   TMR1H            : byte; absolute 0x000F; volatile; sfr;
  14.   T1CON            : byte; absolute 0x0010; volatile; sfr;
  15.   TMR2             : byte; absolute 0x0011; volatile; sfr;
  16.   T2CON            : byte; absolute 0x0012; volatile; sfr;
  17.   CCPR1            : word; absolute 0x0013; volatile; sfr;
  18.   CCPR1L           : byte; absolute 0x0013; volatile; sfr;
  19.   CCPR1H           : byte; absolute 0x0014; volatile; sfr;
  20.   CCP1CON          : byte; absolute 0x0015; volatile; sfr;
  21.   WDTCON           : byte; absolute 0x0018;           sfr;
  22.   CMCON0           : byte; absolute 0x0019; volatile; sfr;
  23.   CMCON1           : byte; absolute 0x001A; volatile; sfr;
  24.   ADRESH           : byte; absolute 0x001E; volatile; sfr;
  25.   ADCON0           : byte; absolute 0x001F; volatile; sfr;
  26.   OPTION_REG       : byte; absolute 0x0081; volatile; sfr;
  27.   PIE1             : byte; absolute 0x008C; volatile; sfr;
  28.   PCON             : byte; absolute 0x008E; volatile; sfr;
  29.   OSCCON           : byte; absolute 0x008F; volatile; sfr;
  30.   OSCTUNE          : byte; absolute 0x0090; volatile; sfr;
  31.   PR2              : byte; absolute 0x0092; volatile; sfr;
  32.   WPU              : byte; absolute 0x0095;           sfr;
  33.   WPUA             : byte; absolute 0x0095;           sfr;
  34.   IOC              : byte; absolute 0x0096; volatile; sfr;
  35.   IOCA             : byte; absolute 0x0096; volatile; sfr;
  36.   VRCON            : byte; absolute 0x0099; volatile; sfr;
  37.   EEDAT            : byte; absolute 0x009A; volatile; sfr;
  38.   EEDATA           : byte; absolute 0x009A; volatile; sfr;
  39.   EEADR            : byte; absolute 0x009B; volatile; sfr;
  40.   EECON1           : byte; absolute 0x009C; volatile; sfr;
  41.   EECON2           : byte; absolute 0x009D; volatile; sfr;
  42.   ADRESL           : byte; absolute 0x009E; volatile; sfr;
  43.   ANSEL            : byte; absolute 0x009F;           sfr;
  44.   GPIO             : byte; absolute 0x0005; volatile; sfr;
  45.   TRISIO           : byte; absolute 0x0085; volatile; sfr;
(#) pompidu válasza Elektro.on hozzászólására (») Ápr 11, 2016 /
 
Ez nagyon jó hasznos kis trükk, köszönöm.
(#) user hozzászólása Jún 1, 2016 /
 
Sziasztok!

Én mikroc-ben szeretnék programozni egy pic16f877-est az alábbi kondíciókkal:

PIC16F877
4Mhz

5db DS18B20 hőmérő
5db digitális bemenet úszókapcsolók jeleinek érzékelésére
4db digitális relés kimenet

Az összeépített vezérlőnek hőmérsékletet, valamint úszókapcsolókat kell figyelnie, melyeket LCD-re is ki kell írnia. Az LCD-vel egyidejűleg a soros portra is be kell küldenie, mért hőmérsékleti adatokat, valamint a portról fogadnia kell bekapcsolási parancsot a relék meghúzásához.
A mikroc helpje alapján összeraktam a kódot,de most tanácstalan vagyok hogy miért nem küldi megfelelően az adatokat.(lásd csatolt kép)
(#) kriszrap hozzászólása Jún 19, 2016 /
 
Sziasztok
Van egy PIC18F46k22 pickem és hát a mikroc nem tudja ezeket leforditani
VDelay_us(ido);
VDelay_ms(ido); ezt ismeri

Delay_ms(1000); akkor az a bajom hogy nem 1 másodpercenként csinálja ha nem 5 másodpercenként .
Ezek miért vannak???
(#) Elektro.on válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
VDelay_us() parancs nem létezik mikroC -ben Delay_us() viszont van. Olvasd végig a Help menü ide vonatkozó részét.
A Delay_ms(1000) akkor megy 5 másodpercig, ha a fordításkor beállított órajel ötszöröse a valós futtatáskori órajelnek.
A hozzászólás módosítva: Jún 19, 2016
(#) kriszrap válasza Elektro.on hozzászólására (») Jún 19, 2016 /
 
ha a fordításkor beállított órajel ötszöröse a valós futtatáskori órajelnek. ezt nem értem( 4 mhz es az óra jel
(#) Elektro.on válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
Gondolom külső 4MHz Kvarc -ot használsz. A MikroC-ben a PIC konfigja véletlenül nem 20 MHz ?
Mert ebben az esetben kiszámolja a feljesztő környezet hány műveleti ciklus az 1 sec. És ezt a valóságban lassabban hajtja végre.
A hozzászólás módosítva: Jún 19, 2016
(#) kriszrap válasza Elektro.on hozzászólására (») Jún 19, 2016 /
 
belsöt használok
(#) Elektro.on válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
Esetleg egy megszakítás nem szól bele?
Még azt megteheted belső esetén, hogy a programod main részében is beállítod a belső osztillátorra vonatkozó beállításokat.
A hozzászólás módosítva: Jún 19, 2016
(#) kriszrap válasza Elektro.on hozzászólására (») Jún 19, 2016 /
 
semmi ennyi a program kód:
  1. int ido=250;
  2. void nullaz()
  3. {
  4.     TRISA = 0;
  5.     TRISB = 0;
  6.     TRISC = 0;
  7.     TRISD = 0;
  8.     TRISE = 0;
  9.  
  10.     LATA = 0;
  11.     LATB = 0;
  12.     LATC = 0;
  13.     LATD = 0;
  14.     LATE = 0;
  15. }
  16. void main() {
  17. nullaz();
  18.   while(1)
  19.   {
  20.       LATA=0b00010000;
  21.       LATC=0b00001000;
  22.       VDelay_ms(ido);
  23.       LATA=0b00010000;
  24.       LATC=0b00000100;
  25.       VDelay_ms(ido);
  26.   }
  27. }
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
OSCON, OSCTUNE regisztereket jól állítottad be?
(#) kriszrap válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
azt hol kell/lehet?
(#) Elektro.on válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
Elvileg a fejlesztő környezetnek be kéne állítani, de én 16-os sorozatnál a kód elején ennek allanére mindig beállítottam az OSCON regisztert. Lehet, hogy csak azért nem futottam bele ilyenbe.
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
Ennek a PIC-nek 16MHz a belső órajele, az OSCON registerben alapértelmezetten ezt 16-tal osztja. A PLL kell? Milyen frekvencián akarod hajtani?
(#) kriszrap válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
16mhz en elég sztem ledkokáról van szó
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
64MHz
OSCCON.6=1;
OSCTUNE.PLLEN=1;

fejből azt hiszem, de nézz utána
(#) kriszrap válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
ezt hova irjam ?? program elejére??
A hozzászólás módosítva: Jún 19, 2016
(#) Elektro.on válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
Ez egy 16 os és Pascalos projekt, de ott látod az elején mit kéne neked is C ben,

Bővebben: Link

Fő Unit 30. sor.
A hozzászólás módosítva: Jún 19, 2016
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
gondolom a main függvénybe.
64MHz=16MIPS
(#) kriszrap válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
OSCCON.6=1; erre ir hibát
OSCCON = 1 elfodja de semmi... minél nagyobb óra jelre állitom annál lassabb((( 16mhz van most
A hozzászólás módosítva: Jún 19, 2016
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 /
 
Elnézést, de nincs mikroC fejlesztői környezetem, nézd meg a definiciós file-ba az OSCCON register-t (CTRL+D). Arra akartam utalni, hogy a 6. bitet kell 1-re állítani.
(#) kriszrap válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
Átállítottam 1 mhzre a belsöt át nagyábból 1 másopercenkét mozog a led.
(#) ha1drp válasza kriszrap hozzászólására (») Jún 19, 2016 / 1
 
A keretrendszerben feltüntetett frekvenciaérték leginkább a fordítóprogramnak van szüksége, ebből számolja a Delay függvényt. Ennek nincs hatása a PIC oszcillátorára! Mint írtam alap esetben az órajele ennek a PIC-nek (16MHz/16) 1MHz, ha az *OSCTUNE.PLLEN=1 ezt a PLL 4-el szorozza. Ez esetben 4MHz-et kell a keretrendszerbe írni. Ha a OSCTUNE.PLLEN=0 (alapértelmezett) akkor nincs PLL szorzás. Ez esetben a keretrendszerbe 1MHz-et kell írni.

Azt hiszem mikroC alatt OSCCON.6=1; helyesen OSCCON.B6=1; vagy IRCF2_bit=1;
ui. * A PIC doksija szerint 36. old. A PLL csak 4MHz felett használható
A hozzászólás módosítva: Jún 19, 2016
(#) Elektro.on válasza ha1drp hozzászólására (») Jún 19, 2016 /
 
OSCON.IRCF2 lesz a helyea formátum.
De ha a kriszrap a pont után nem kapkod a fejlesztő környezet megjeleníti a lehetséges választásokat.
(#) kriszrap válasza Elektro.on hozzászólására (») Jún 19, 2016 /
 
Basszus tényleg
Nagyon köszönöm
(#) kriszrap válasza kriszrap hozzászólására (») Jún 20, 2016 /
 
  1. void oszlopok(int meddig)
  2. {
  3.     LATC.RC1=0; //reset
  4.     LATC.RC1=1; //reset
  5.     for(i=1;i<=meddig;i++)
  6.     {
  7.       if(i==1)LATA.RA7=1;  //data
  8.       else LATA.RA7=0;
  9.       LATC.RC0=1; //clock
  10.       Delay_us(5);
  11.       LATA.RA7=0;//data
  12.       LATC.RC0=0;//clock
  13.     }
  14.     LATA.RA6=1;//lacth
  15. }

Beírom azt hogy "oszlopok(3)" és 1 ig számol miért???
A hozzászólás módosítva: Jún 20, 2016
Következő: »»   3 / 10
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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