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   892 / 1203
(#) sonajkniz válasza pajti2 hozzászólására (») Jan 4, 2017 /
 
Neten találtam, megépítettem, és azért mertem ajánlani, mert kipróbáltam PIC-re kötve, digitális bemeneten.
Én még kicsit érzéketlennek is találtam.
(#) pajti2 válasza sonajkniz hozzászólására (») Jan 5, 2017 /
 
Próbálj ki pár cserét. Tápfesz 3.3v (3.3v-os pic fogja kapni, és bár vannak 5v tolerant lábai is, szerencsésebb a 3.3v). A 10k helyett 1k..2k, az 1 megák helyett 470k..680k, a 100k helyett 47k..68k, a 100 nF helyett 1nF..3.3nF. A miki gondolom kondi miki, ha ohm mérővel ellenőrizni tudod, 1.5k körüli egy egészséges kondi miki ohmos ellenállása.
(#) pajti2 hozzászólása Jan 5, 2017 /
 
Ha valaki találkozott adatlapokon a mechanical drawings részben olyan adattal, hogy méreteiben mekkora az a félkörív, ami a wide pdip tok "felső" végén van, dobjon róla egy jelzést, legyen szíves. Vadászom azt a nyamvadt mechanikai adatot mindenfelé, és nem találok róla műszaki rajzot. Nem is értem hogy a fenébe..
(#) usane válasza pajti2 hozzászólására (») Jan 5, 2017 /
 
Azért mert ahány gyártó annyi féle alak és méret. Mivel itt kérdezed nyilván a PIC-eken levőre gondolsz, de még az sem biztos, hogy az összes PIC tokozása megegyezik. Lehet a gyártósorok nem egyformák, és lényegtelen adat. Mérd meg tolómérővel amelyik kell.
A hozzászólás módosítva: Jan 5, 2017
(#) don_peter hozzászólása Jan 10, 2017 /
 
Srácok, 32MX795 PIC SPI beállításában kérnék segítséget.
Ezen kóddal kínlódok egy ideje:
  1. // FSCK = FPB/2*(SPIxBRG+1)
  2. // 80000000 = 80000000/(2*(99+1)) = 400KHz
  3.    
  4.     SPI1CON = 0;                  // Stops and resets the SPI1.
  5.     rData=SPI1BUF;                // clears the receive buffer
  6.     SPI1BRG=99;                  // use FPB/200 clock frequency
  7.     SPI1STAT = 0;
  8.     //SPI1CON=0x8220;               // SPI ON, 8 bits transfer, SMP=1, Master mode
  9.  
  10.     SPI1CONbits.FRMEN = 0;
  11.     SPI1CONbits.FRMSYNC = 0;
  12.     SPI1CONbits.FRMPOL = 0;
  13.     SPI1CONbits.MSSEN = 0;
  14.     SPI1CONbits.FRMSYPW = 0;
  15.     SPI1CONbits.FRMCNT = 0;
  16.     SPI1CONbits.SPIFE = 0;
  17.     SPI1CONbits.ENHBUF = 0;
  18.  
  19.     SPI1CONbits.ON = 1;
  20.     SPI1CONbits.SIDL = 0;
  21.     SPI1CONbits.DISSDO = 0;
  22.     SPI1CONbits.MODE16 = 0;
  23.     SPI1CONbits.MODE32 = 0;
  24.     SPI1CONbits.SMP = 1;
  25.     SPI1CONbits.CKE = 0;
  26.     SPI1CONbits.SSEN = 0;
  27.     SPI1CONbits.CKP = 0;
  28.     SPI1CONbits.MSTEN = 1;
  29.     SPI1CONbits.STXISEL = 0;
  30.     SPI1CONbits.SRXISEL = 0;

És SPI1BUF pufferbe írok egy adatot, de debugolok és nem látom, hogy bekerülne az adat a regiszterbe..
  1. SPI1BUF=0x17;

A PIC 80MHz-n járatom, config beállítások megvannak, interrupt kikapcsolva, digitális kimenetre állítva minden láb, coperátorok kikapcsolva, USB és JTAG is ki van kapcsolva.
Mit rontok el?

Lemaradt, hogy MplabX-el kínlódom és XC32-őt használok..
Ismerkedem a programmal, de kezd megint elmenni tőle a kedvem..
A hozzászólás módosítva: Jan 10, 2017
(#) Hp41C válasza don_peter hozzászólására (») Jan 10, 2017 /
 
Utolsónak ezt állítsd be:
  1. SPI1CONbits.ON = 1;
(#) pajti2 válasza don_peter hozzászólására (») Jan 10, 2017 /
 
Copy pastelek neked két függvényt egy régebbi projectből. Ami itt még nincsen benne, hogy előzőleg system perfomrance makrót lefuttatni, analóg jeleket kikapcsolni. A projectben az spi2-t master módra állítottam be, az nSS jelet kimenetre kapcsoltam, és azzal vezéreltem a slave-t. A függvényekben van pár projectre jellemző folyamat logika is, azokat a változókat hagyd figyelmen kívül. A függvényekhez direkt nem nyúltam hozzá semennyit, szóval "élő példa" idézete következik:
  1. //------
  2. void spimaster_environment_init() {
  3.   unsigned char i1;
  4.   //--
  5.   DDPCONbits.JTAGEN= 0;  // This turns off the JTAG
  6.     //Az RA0-t slave oldali visszajelzesre hasznalom.
  7.   LATGbits.LATG9= 1;  //Spi2 nSS latch
  8.   for(i1=0; i1< 20; i1++) { continue; }
  9.   TRISGbits.TRISG6= 0;
  10.   TRISGbits.TRISG8= 0;
  11.   TRISGbits.TRISG9= 0;
  12.   return;}
  13. //------
  14. void spimaster_init() {
  15.     //Mikor ide kerul a vezerles, az nSS vonal latch
  16.     //  regisztere es kimeneti meghajtasa mar be vannak
  17.     //  allitva.
  18.   SPI2CON= 0;            //POR alap init.
  19.     //Figyelmeztetes: az SPIxCON .ON bitjenek irasa utani
  20.     //  processzor orajel ciklusban nem szabad hozzanyulni
  21.     //  a periferia egyik regiszterehez sem. Az alanti
  22.     //  "fals" memoria modositas vedelem gyanant van itt.
  23.     //  Ugyanaz lentebb a fuggveny vegen.
  24.   spi_data_xchg_buff.s.msg[1]= 0x80;
  25.   spi_data_xchg_buff.s.msg[0]= (unsigned char)SPI2BUF;
  26.   SPI2CONbits.ENHBUF= 1;
  27.   SPI2BRG= 5; // (pbclk 60 mhz / ((1+5)*2)) = 5 mhz spi clk
  28.   SPI2STATbits.SPIROV= 0;
  29.     //Kulonosebb kitakaritasi erofesziteseket ezen tul azert
  30.     //  nem teszek, mert ez a fuggveny csak egyszer hivatott
  31.     //  lefutni power on reset utan.
  32.   spi_last_marker= 0x80;  //"First time sending" marker.
  33.   SPI2CONbits.SMP= 1;
  34.   SPI2CONbits.CKP= 1;
  35.   SPI2CONbits.MSTEN= 1;
  36.   SPI2CONbits.ON= 1;
  37.     //Kulon extra kesleltetes arra az esetre, ha a fuggveny
  38.     //  kesobb makrozva lenne. Lsd komment a fuggveny elejen is.
  39.   spi_data_xchg_buff.s.msg[1]= 0x60;
  40.   return;}
  41. //------
(#) don_peter válasza pajti2 hozzászólására (») Jan 10, 2017 /
 
Idézet:
„system perfomrance makrót lefuttatni”
Ez pontosan mi is?
Amúgy még mindig nem megy, tölt be néha, random 0xFF karaktereket, de az nem helyes adat.
A hozzászólás módosítva: Jan 10, 2017
(#) patrik81 válasza Hp41C hozzászólására (») Jan 10, 2017 /
 
A GPS-re nem reagál,de 5V-ot adtam meg neki 3,3V helyett.Most a UART tools menüvel próbálkozok,és a PIC-be ezt a programot töltöttem:
  1. SPBRG = 6; //9600 bps
  2.     TXEN = 1;
  3.     SPEN = 1;
  4.     TRISA=0;
  5.     ANSEL=0;
  6.     while(1)
  7.     {
  8.         TXREG = 0x41;
  9.         __delay_ms(1000);
  10.         RA5=0;
  11.         __delay_ms(1000);
  12.         RA5=1;
  13.     }

Semmit nem írt ki az UART menü,de amikor az PICKIT2 RX lábát mozgattam,akkor random szerűen kiírt néhány adatot,pl FF,vagy FF 35 ED,stb...Lehet nem jó a PICKIT2?
(#) pajti2 válasza don_peter hozzászólására (») Jan 11, 2017 /
 
Pld 60 mhz esetén egy ilyen sor:
  1. SYSTEMConfigPerformance(60000000);

A makro az mla-ban azon a néven van, de valami biztos van az X alatt is. És ne hagyd ki a
  1. AD1PCFGL = 0xFFFF;
beállítást se (analógok kikapcs, feltételezem, nem használsz analóg bemenetet a projectben).
(#) Hp41C válasza patrik81 hozzászólására (») Jan 11, 2017 / 1
 
Mekkora órajelsől jár a 16F690? Hogy is jön ki a a SPBRG -be írt 6 -os érték?
(#) don_peter válasza pajti2 hozzászólására (») Jan 11, 2017 /
 
Nálam az analógok kikapcsolása ez:
  1. AD1PCFG = 0xFFFF;

És a kódban van..
Itt a teljes kódom:
  1. //#include <proc/p32mx795f512l.h>
  2. //#include <p32xxxx.h>
  3. #include <GenericTypeDefs.h>
  4. #include <Compiler.h>
  5. /**********************
  6.  * Configuration Bits *
  7.  **********************/
  8. #pragma config UPLLEN   = ON            // USB PLL Enabled
  9. #pragma config FPLLMUL  = MUL_20        // PLL Multiplier
  10. #pragma config UPLLIDIV = DIV_2         // USB PLL Input Divider
  11. #pragma config FPLLIDIV = DIV_2         // PLL Input Divider
  12. #pragma config FPLLODIV = DIV_1         // PLL Output Divider
  13. #pragma config FPBDIV   = DIV_1         // Peripheral Clock divisor
  14. #pragma config FWDTEN   = OFF           // Watchdog Timer
  15. #pragma config WDTPS    = PS1           // Watchdog Timer Postscale
  16. #pragma config FCKSM    = CSDCMD        // Clock Switching & Fail Safe Clock Monitor
  17. #pragma config OSCIOFNC = OFF           // CLKO Enable
  18. #pragma config POSCMOD  = HS            // Primary Oscillator
  19. #pragma config IESO     = OFF           // Internal/External Switch-over
  20. #pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable
  21. #pragma config FNOSC    = PRIPLL        // Oscillator Selection
  22. #pragma config CP       = OFF           // Code Protect
  23. #pragma config BWP      = OFF           // Boot Flash Write Protect
  24. #pragma config PWP      = OFF           // Program Flash Write Protect
  25. #pragma config ICESEL   = ICS_PGx2      // ICE/ICD Comm Channel Select
  26. #pragma config DEBUG    = OFF           // Debugger Disabled for Starter Kit
  27.  
  28. #define SPI_CS_TRIS             TRISDbits.TRISD1                //D1 chip választás
  29. #define SPI_CS                  LATDbits.LATD1                  //D1 chip választás
  30. #define SPI_SO_TRIS             TRISDbits.TRISD0                //B0-ás bit
  31. #define SPI_SCK_TRIS    TRISDbits.TRISD10               //D10-es bit órajel
  32. #define SPI_SI                  TRISCbits.TRISC4                //C4 adat ki*/
  33.  
  34. void spi_init(void);
  35.  
  36. int main(void){
  37.     unsigned char rData = 0;
  38.     unsigned char i=0;
  39.    
  40.     TRISA = 0; PORTA = 0; LATA = 0;
  41.     TRISB = 0; PORTB = 0; LATB = 0;
  42.     TRISC = 0; PORTC = 0; LATC = 0;
  43.     TRISD = 0; PORTD = 0; LATD = 0;
  44.     TRISE = 0; PORTE = 0; LATE = 0;
  45.     TRISF = 0; PORTF = 0; LATF = 0;
  46.     TRISG = 0; PORTG = 0; LATG = 0;
  47.  
  48.     // Configure the proper PB frequency and the number of wait states
  49.         //SYSTEMConfigWaitStatesAndPB(80000000L);
  50.  
  51.     // Enable the cache for the best performance
  52.         //CheKseg0CacheOn();   
  53.  
  54.         mJTAGPortEnable(0);
  55.  
  56.         LATEbits.LATE3 = 1;     // LED1
  57.         LATEbits.LATE2 = 1;     // LED2
  58.         LATEbits.LATE1 = 1;     // LED3
  59.         LATEbits.LATE0 = 1;     // LED4
  60.  
  61.         INTCON = 0;
  62.     AD1CON1 = 0;
  63.         AD1PCFG = 0xFFFF;      // Configure AN pins as digital I/O
  64.     DDPCONbits.JTAGEN = 0; // disable the JTAG port
  65.  
  66.         CM1CON = 0;
  67.         CM2CON = 0;
  68.         CVRCON = 0;
  69.  
  70.     U1CON = 0
  71.  
  72.         PMCONbits.ON = 0;
  73.  
  74.         SPI_CS_TRIS = 0;
  75.         SPI_CS = 1;
  76.         SPI_SO_TRIS = 0;
  77.         SPI_SCK_TRIS = 0;
  78.         SPI_SI = 1;
  79.    
  80.     spi_init();
  81.    
  82.         while(1){
  83.                 LATEbits.LATE0 = !LATEbits.LATE0;
  84.                 //DELAY_MS(100);
  85.         //SPI1STATbits.SPITBF = 0;
  86.         //SPI1STATbits.SPIRBF = 0;
  87.         //SPI1STATbits.SPIROV = 0;
  88.         SPI1BUF=i++;
  89.         while(SPI1STATbits.SPIBUSY);
  90.         rData=(unsigned char)SPI1BUF;
  91.         }
  92.  
  93. }
  94.  
  95. void spi_init(void) {
  96.     unsigned char tmp;
  97.     // FSCK = FPB/2*(SPIxBRG+1)
  98.     // 80000000 = 80000000/(2*(99+1)) = 400KHz
  99.     SPI1CON = 0;
  100.     SPI1STAT = 0;
  101.     tmp = (unsigned char)SPI1BUF;
  102.     SPI1BRG=7;         // (pbclk 80 mhz / ((1+7)*2)) = 5 MHz spi clk
  103.     //SPI1CON=0x8220;   // SPI ON, 8 bits transfer, SMP=1, Master mode
  104.        
  105.     SPI1STATbits.SPIROV = 0;
  106.    
  107.     SPI1CONbits.FRMEN = 0;
  108.     SPI1CONbits.FRMSYNC = 0;
  109.     SPI1CONbits.FRMPOL = 0;
  110.     SPI1CONbits.MSSEN = 0;
  111.     SPI1CONbits.FRMSYPW = 0;
  112.     SPI1CONbits.FRMCNT = 0;
  113.     SPI1CONbits.SPIFE = 0;
  114.     SPI1CONbits.ENHBUF = 1;
  115.    
  116.     SPI1CONbits.SIDL = 0;
  117.     SPI1CONbits.DISSDO = 0;
  118.     SPI1CONbits.MODE16 = 0;
  119.     SPI1CONbits.MODE32 = 0;
  120.     SPI1CONbits.SMP = 1;
  121.     SPI1CONbits.CKE = 0;
  122.     SPI1CONbits.SSEN = 0;
  123.     SPI1CONbits.CKP = 0;
  124.     SPI1CONbits.MSTEN = 1;
  125.     SPI1CONbits.STXISEL = 0;
  126.     SPI1CONbits.SRXISEL = 0;
  127.     SPI1CONbits.ON = 1;
  128. }

Sajnos jó volt a sejtésem, reméltem hogy nem ugyan arról beszélünk, de sajnos még is és pont ezért kezd elegem lenni az MplabX-ből, ugyanus nekem folyamatosan hibákat dob ezekre a függvényekre:
  1. SYSTEMConfigWaitStatesAndPB(80000000L);

A kódban melyet beillesztettem, ezért is van ki kommentelve, a régi Mplab ugyan ismeri és szépen fordul is a program, de ott meg nem tudok debugolni.
Az include mappákat és további könyvtárakat is átnéztem, nem találok olyat ami ne lenne csatolva az állományhoz, még is hiányoznak bizonyos függvények, vagy csak csupán nem hajlandó használni őket.
(#) pajti2 válasza don_peter hozzászólására (») Jan 11, 2017 /
 
Configról nálam van egy ilyen blokk a main.c-ben:
  1. #elif defined(__32MX795F512L__)
  2.         #pragma config UPLLEN   = ON        // USB PLL Enabled
  3.         #pragma config FPLLMUL  = MUL_15        // PLL Multiplier
  4.         #pragma config UPLLIDIV = DIV_2         // USB PLL Input Divider
  5.         #pragma config FPLLIDIV = DIV_2         // PLL Input Divider
  6.         #pragma config FPLLODIV = DIV_1         // PLL Output Divider
  7.         #pragma config FPBDIV   = DIV_1         // Peripheral Clock divisor
  8.         #pragma config FWDTEN   = OFF           // Watchdog Timer
  9.         #pragma config WDTPS    = PS1           // Watchdog Timer Postscale
  10.         #pragma config FCKSM    = CSDCMD        // Clock Switching & Fail Safe Clock Monitor
  11.         #pragma config OSCIOFNC = OFF           // CLKO Enable
  12.         #pragma config POSCMOD  = HS            // Primary Oscillator
  13.         #pragma config IESO     = OFF           // Internal/External Switch-over
  14.         #pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable (KLO was off)
  15.         #pragma config FNOSC    = PRIPLL        // Oscillator Selection
  16.         #pragma config CP       = OFF           // Code Protect
  17.         #pragma config BWP      = OFF           // Boot Flash Write Protect
  18.         #pragma config PWP      = OFF           // Program Flash Write Protect
  19.         #pragma config ICESEL   = ICS_PGx2      // ICE/ICD Comm Channel Select
  20.     #else

A hardver egy ubw32-es, mx795-el. A külső kvarc 8 mhz-en ketyeg, az elsődleges órajelet 60-ra állítottam be.

Az analóg regisztert illetően valójában nincsen különbség. Egy 32 bites regiszterbe ha csak 16 bitet töltesz, akkor csak a regiszter alsó 16 bitjét célzod meg vele, és analóg kapcsolók is csak ott vannak. Meg egyáltalán tartalom is. Abban a regiszterben a 16..31 biteken nincsen semmi, olvasható adat sincs.

DS61156F-page 81:
  1. 9060 AD1PCFG(1) 31:16 — — — — — — — — — — — — — — — — 0000
  2. 15:0 PCFG15 PCFG14 PCFG13 PCFG12 PCFG11 PCFG10 PCFG9 PCFG8 PCFG7 PCFG6 PCFG5 PCFG4 PCFG3 PCFG2 PCFG1 PCFG0 0000


Mplabx-re (vagy valami másra ) áttérni majd mm / mz miatt lesz muszáj, de az mx795-re még van mindenféle cucc sima c környezetben is az mla libekben. Ha gondolod, egyszerűsíts a problémán
A hozzászólás módosítva: Jan 11, 2017
(#) don_peter válasza pajti2 hozzászólására (») Jan 11, 2017 /
 
Mplab-ban nem megy a debug.
Valami ilyesmit keres:
Idézet:
„redirect:552: undefined symbol `_DBG_CODE_SIZE' referenced in expression
collect2: ld returned 1 exit status
Link step failed.
Ezt hogy tudom beállítani?
A hozzászólás módosítva: Jan 11, 2017
(#) patrik81 válasza Hp41C hozzászólására (») Jan 11, 2017 /
 
A belső 4 MHz, és azt olvastam, hogy annál az SPBRG-t 6-ra kell állítani a 9600 baudhoz.
(#) Hp41C válasza patrik81 hozzászólására (») Jan 11, 2017 / 1
 
4 MHz -ről a 9600 Baud csak a SYNC = 0, BRGH = 1, BRG16 = 0, SPBRG = 25 beállítás mellett használható. A SYNC = 0, BRGH = 0, BRG16 = 0, SPBRG = 6 beállítás túl nagy (8.5%) eltérést okoz.
(#) patrik81 válasza Hp41C hozzászólására (») Jan 11, 2017 /
 
Szuper!Most már megjelenik a képernyőn adat,de csak nulla.
  1. #include <xc.h>
  2. #pragma config FOSC = INTRCCLK
  3. #pragma config WDTE = OFF
  4. #define _XTAL_FREQ 4000000
  5. void main()
  6. {
  7.     SPBRG = 25; //9600 bps
  8.     RCSTA = 0x90;
  9.     TXEN = 1;
  10.     SPEN = 1;
  11.     BRGH = 1;
  12.     while(1)
  13.     {
  14.         __delay_ms(2);
  15.         TXREG = RCREG;
  16.         __delay_ms(2);
  17.     }
  18. }
(#) Hp41C válasza patrik81 hozzászólására (») Jan 12, 2017 / 1
 
  1. #include <xc.h>
  2.     #pragma config FOSC = INTRCCLK
  3.     #pragma config WDTE = OFF
  4.     #define _XTAL_FREQ 4000000
  5.  
  6.     unsigned char ch;
  7.     void main()
  8.     {
  9.         SPBRG = 25; //9600 bps
  10.         RCSTA = 0x90;
  11.         TXEN = 1;
  12.         SPEN = 1;
  13.         BRGH = 1;
  14.         while(1)
  15.         {
  16.            while (PIR1bits.RCIF == 0) ;
  17.            ch = RCREG;
  18.            if (RCSTAbits.OERR || RCSTAbits.OERR)
  19.            {
  20.                RCSTAbits.SPEN = 0;
  21.                RCSTAbits.SPEN = 1;
  22.             }
  23.             while (PIR1.TXIF == 0);
  24.             TXREG = ch;
  25.         }
  26.     }

De még ez sem tökélete, hiszen az adóra való várakozás ideje alatt nem figyeli a vevő állapotát. A valóban jól működő megoldás adási és vételi buffert használ...
A hozzászólás módosítva: Jan 12, 2017
(#) patrik81 válasza Hp41C hozzászólására (») Jan 12, 2017 /
 
Még mindig nem megy át a GPS jel a PICen,de a PICnélkül már látok rendes jeleket a PICKIT2 UART menüjében.
(#) kriszrap hozzászólása Jan 12, 2017 /
 
Sziasztok áthozom a kérdésemet mert a mikroC topikba senki se olvasta.
Kedves profik
Megtudnátok nézni hogy a hőmérőmet rendesen programoztam be??
A kódom:
  1. int i = 2;
  2.           Ow_Reset(&PORTA, 2); // Reset
  3.           Ow_Write(&PORTA, 2,0x44);  // Convert_T
  4.           Delay_ms(750);
  5.      
  6.           Ow_Reset(&PORTA, 2); // Reset
  7.           //Ow_Write(&PORTA, 2,0xCC);  // Skip ROM
  8.           Ow_Write(&PORTA, 2,0xBE);  // Read Scratchpad
  9.      
  10.           kod = Ow_Read(&PORTA, 2); // Byte 0: Temperature  7..0
  11.           kod |= Ow_Read(&PORTA, 2) << 8; // Byte 1: Temperature  15..8
  12.      
  13.           Homerseklet= kod / 16;
  14.      
  15.           if(0>Homerseklet)minusz=1;
  16.           else minusz=0;
  17.      
  18.            while (i > 0)//minusz hömérsékletböl +csináljak kíiratás miatt,és számjegyek felbontása
  19.            {
  20.             i--;
  21.             homersekletszamjegy[i] = Homerseklet % 10;
  22.             if (homersekletszamjegy[i] < 0) homersekletszamjegy[i] -= homersekletszamjegy[i] * 2;
  23.             Homerseklet /= 10;
  24.      
  25.            }
  26.           idokiir(-1,-1,homersekletszamjegy[0],homersekletszamjegy[1],-1,-1,0);

Nincs lehetőségem most tesztelni de müködhet???
DS18B20+ lesz mérve
Debugolást elöre köszönöm)
(#) Hp41C válasza patrik81 hozzászólására (») Jan 12, 2017 / 1
 
Egy kép több információt ad, mint 1000 bejegyzés arról, hogy így sem megy....
Mekkora tápfeszültségről jár a 16F690 és a GPS? A PIC Rx bemenete ST típusú, a magas szint minimális feszültsége 0.8*Vdd. 5V -os PIC és 3.3V -os GPS közé egy szintillesztő kell.
(#) pajti2 válasza don_peter hozzászólására (») Jan 12, 2017 /
 
Nem vagyok képben róla, bocsi. Én nem szoktam debugolni.
(#) Hp41C válasza don_peter hozzászólására (») Jan 12, 2017 /
 
Hátha ez segít.
(#) patrik81 válasza Hp41C hozzászólására (») Jan 12, 2017 /
 
Nem tettem szintillesztőt,mert nem tudtam,hogy kell.Ugyan azt a tápfeszt kötöttem a GPS-re,mint a PIC-re.Amikor az MPLABX-el programozok,akkor a tápfesz 4,74V,amikor a PICKIT2 UART-ján bepipálom a VDD-t,akkor 2,34V van.
(#) don_peter válasza kriszrap hozzászólására (») Jan 12, 2017 /
 
Szimulátor?
Proteus8-al tudod tesztelni...
(#) kriszrap válasza don_peter hozzászólására (») Jan 12, 2017 /
 
Nem próbáltam )
Még nem használtam a progit.
A hozzászólás módosítva: Jan 12, 2017
(#) kriszrap válasza kriszrap hozzászólására (») Jan 12, 2017 /
 
Proteus8 lehet mikroczbni??
(#) brato válasza kriszrap hozzászólására (») Jan 12, 2017 / 1
 
A proteusban a hex fájlt kell betölteni a kapcsolási rajzon levő picbe
A hozzászólás módosítva: Jan 12, 2017
(#) don_peter válasza Hp41C hozzászólására (») Jan 12, 2017 /
 
Köszi, sajnos nem segített, de közben megtaláltam a módját, hogy működjön.
A gyári linker állományt kellett csak bemásolnom a program könyvtárba és azonnal hajlandó volt debugolni.

Teszteltem is az SPI-t, de az alább látható képen rögzített hibás eredményt kapom.
Már sokféle képen megírtam az SPI függvényt, de mindig ezeket a fránya 0xFF-eket teszi a regiszterbe, és nem értem miért..

spi.JPG
    
(#) don_peter válasza kriszrap hozzászólására (») Jan 12, 2017 /
 
Szerintem bármilyen fordítót használhatsz benne.
A lényeg, hogy egy-egy kapcsolást tudsz vele tesztelni, és elég jól működik.
Amúgy, ha a lefordított hex-et akarod kipróbálni azt is be tudod tölteni a létrehozott projekted PIC-jébe..
Ügyes kis program..
Következő: »»   892 / 1203
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