Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   69 / 153
(#) k válasza pipi hozzászólására (») Jan 11, 2013 /
 
Letöltöttem és telepítettem az xc8-at


De!
-nincs benne a toolsuitban - nem tudom kiválasztani.
- egyébként nem pic 32-re szeretnék fordítani, hanem pic 16 ra
-konkrétan a pic 16f877a-ra írtam programot
- ha olyan programot írok használok, ami nem hivatkozik a pic-16-ini-re akkor azt lefordítja, és fut is a próbapanelon
A hozzászólás módosítva: Jan 11, 2013
(#) nagzso válasza k hozzászólására (») Jan 11, 2013 /
 
Szia!
Nekem az összes fordító plusz az mplab eltávolítása, majd újratelepítése megoldotta ezt a problémám. Először az mplab-ot toltam fel, majd a fordítókat.
(#) hferdi hozzászólása Jan 13, 2013 /
 
Üdv!
Itt találtam egy érdekes progit.
C-ben íródott, hex nincs.
Egyetlen gondom, hogy nem találok hozzá fordítót.
Idézet:
„tested with PIC16F84A and PIC16F877A”

Lehet, hogy rossz helyen keresgéltem?
A hozzászólás módosítva: Jan 13, 2013
(#) Sasmadár válasza hferdi hozzászólására (») Jan 13, 2013 /
 
A program fejléce szerint: "source code for mikro C compiler V7.0.0.3"
(#) hferdi válasza Sasmadár hozzászólására (») Jan 14, 2013 /
 
Köszi, majd kiverte a szemem..
Ám még egy kérdés a válaszod kapcsán, melyik micro C-t ajánlanád (egy link-kel) a free verziósak közül.
micro c compiler free download pic

Előre is köszönöm.
A hozzászólás módosítva: Jan 14, 2013
(#) _vl_ válasza hferdi hozzászólására (») Jan 14, 2013 /
 
Nincs belőle több "free verziós"! Ez egy darab cég egy darab C fordítója, aminek van egy darab free verziója, méretkorláttal. Bővebben: Link
Ha belefér a programod a free méretkorlátjába, akkor jó.
(#) hferdi válasza _vl_ hozzászólására (») Jan 14, 2013 /
 
Bocsi, de ha nem fér bele, akkor valami más fordító (free) elérhető, vagy itt mindenki fizetőst használ?
(#) _vl_ válasza hferdi hozzászólására (») Jan 14, 2013 /
 
Van más fordító is. De azoknak más a nevük.
(#) icserny válasza _vl_ hozzászólására (») Jan 14, 2013 /
 
Idézet:
„Van más fordító is. De azoknak más a nevük.”
És helyenként más a szintaxisuk...
(#) hferdi hozzászólása Jan 15, 2013 /
 
Remek humorotok van.
Azért adnátok tippet/link-et egy ingyenesen letölthető C fordító (PIC16-hoz) eléréséhez ?
Előre is köszönöm.
(#) _vl_ válasza hferdi hozzászólására (») Jan 15, 2013 /
 
Bővebben: Link MPLAB XC8 Free
Bővebben: Link HI-TECH C for PIC16 LITE
Bővebben: Link SDCC, ha tényleg nagyon free cuccot akarsz, és nagyon sok fölös beleölnivaló energiád van

De arra készülj fel, amit icsernyi is írt: ha anno a programot mikro C fordítóra írták meg, akkor vagy lefordul más fordítóval külön masszírozás nélkül, vagy nem.
(#) Hp41C válasza hferdi hozzászólására (») Jan 15, 2013 /
 
Szia!
Sajnos minden C fordító fizetős, de mindnek van ingyenes, korlátozott módja.
MicroChip: XC8, Hitech: HiPech C for PIC (ebből lett az XC8 Midrange fordítója), MicroElektronika: Micro C for PIC,CCS: CCS C for PIC, SDCC - Small Decice C Copiler, stb. Pár perc a Goooogle barátoddal és már le is tudod tölteni.
(#) icserny válasza hferdi hozzászólására (») Jan 15, 2013 /
 
A MikroC-hez ebben a hozzászólásban már megkaptad a linket. Csak a próbaváltozata ingyenes.

Méretkorlátozás nélküli ingyenes fordítót a Microchip honlapján találsz, de az nem lesz jó az általad említett projekthez (mert nem ahhoz lett írva).
(#) Sasmadár válasza hferdi hozzászólására (») Jan 15, 2013 /
 
Ha igaz az alábbi, akkor bele kell férjen a free (2k) méretkorlátaiba, hiszen a PIC16F84A 1k-s.

Idézet:
„„tested with PIC16F84A and PIC16F877A””

(#) benjami válasza hferdi hozzászólására (») Jan 15, 2013 /
 
Viszont a kiválasztott C fordítóval való ismerkedéshez nem rossz egy másik fordítóra írt program átírása. Nem egy bonyolult és nagy program, alig 1-2 helyen kell csak módosítani.
(#) benjami hozzászólása Jan 15, 2013 /
 
Adva van a következő program (PIC24FJ256GB108, C30 v3.30, a picben 16kByte RAM):
  1. #include <p24Fxxxx.h>
  2. #include <stdlib.h>  // malloc
  3.  
  4. unsigned char* buf1;
  5.  
  6. int main(void)
  7. {
  8.   //buf1 = malloc(2); // ha ezt is berakom működik
  9.   buf1 = malloc(8192);
  10.   while(1)
  11.   {
  12.     Nop();
  13.   }
  14. }

A linker beállításpknál a heap méretéhez 10000 értéket adtam. A bajom az, hogy buf1 miért marad NULL ? Kicsit játszottam a lefoglalandó tömb méretével és úgy tűnt kb.6700 után volt az a méret ahol nem akar működni. Viszont ha előtte volt már egy memóriafoglalás ami beállította az _allocp és társai változókat, azután már hibátlanul működik. Ha a linkeren a legacy lib módot bepipálom akkor is rögtön megy, viszont akkor nem is léteznek ezek az _alloc nevű változók. Miben más a legacy library? Annyit látok hogy más include fájlok tartoznak hozzá.
A hozzászólás módosítva: Jan 15, 2013
(#) senseicsiki hozzászólása Feb 2, 2013 /
 
Üdv!

Csak én érzem úgy hogy ez a C18 compiler a microchiptől egy kalap * ?
Évek óta programozok picet assemblyben, és azt várnám egy magasabb szintű nyelvtől hogy kevesebb * legyen vele. Ezzel szemben ez a szutyok ha a szimultoron megy, a hardveren természetesen nem indul el, talán ki sem jut a bootloaderből...
Amióta nem indul assemblyben már rég kész lenne ennyi idő alatt.
Természetesen hibaüzenetek is olyan sokatmondóak, hogy külön fórumok szólnak róla hogy mi mit is jelenthet.
Bár lehet az én megközelítésemmel van a baj, nem kéne a C-t erőltetni, nem véletlenül nem programozna egy biztosnási plc-t sem c-ben.
Amit meg pl. a vasútnál generált c++ kóddal próbálnak teszteni, évek-óta nem jut át az integrációs teszten.
Szép napot

*Csak mi érezzük úgy, hogy azt hiszed egy kocsmában vagy?
A hozzászólás módosítva: Feb 2, 2013
(#) senseicsiki hozzászólása Feb 2, 2013 /
 
Bocs a hibáként, biztonsági plc-re gondoltam. És "nem programoznak".
(#) trudnai válasza senseicsiki hozzászólására (») Feb 2, 2013 /
 
Idézet:
„Csak én érzem úgy hogy ez a C18 compiler a microchiptől egy kalap szar?”


Nem tudom, hogy csak Te erzed-e, vagy van meg mas is rajtad kivul, de azert nagyon nagyon sokan vannak akik tudnak vele dolgozni. Meg kell tanulni persze.

A tobbire nem tudok reagalni, kellene valami konkret kerdes, forraskod es kapcsi rajz, hogy mi nem megy -- anelkul nehez barmit is mondani.
(#) Topika hozzászólása Feb 2, 2013 /
 
Sziasztok!
Szeretném a segítségeteket kérni! PIC18F4550 IC-t használom bootloader üzemmódba.
A saját függvényeimnél a reset vektor 0x1000. Így szépen működik de a fordító által biztosított
függvényeket (delay,stb) nem tudom használni. Ezeket mindig a bootloaderbe fordítja.
Ezt a hibát hogyan lehet megoldani?
(#) icserny válasza Topika hozzászólására (») Feb 2, 2013 /
 
Idézet:
„Ezeket mindig a bootloaderbe fordítja.”
A bootloaderhez illő linker scriptet kell használni (fel kell venni a projektbe)!

A PICCOLO projektben olyan linker állományt használok, ami az univerzalitás érdekében (HID bootloader, MCHPUSB bootloader, vagy nincs bootlader) tele van tűzdelve feltételes fordítási és linkelési direktívákkal. Ennek a keleti kényelemnek az az ára, hogy a linker programnak is meg kell mondani, hogy a fenti lehetőségek közül melyiket használjuk. Tehát a projekt opcióknál a linker programnak egy /uHID_BOOTLOADER paraméterrel meg kell toldani az indító parancsát. Bővebben ez ezen az oldalon, az "Első kísérlet" ismertetésénél és a "Hogy használjuk az egységes linker állományt?" szakaszban van leírva.
(#) Topika válasza icserny hozzászólására (») Feb 2, 2013 /
 
Köszönöm a választ!
Ha nem a PICCOLO projekt linker állományát szeretném használni, akkor hol találok meg a gyári állományt?
(#) icserny válasza Topika hozzászólására (») Feb 2, 2013 /
 
HID bootloaderhez való linker állományokat a MAL (Microchip Applikations Library) USB példaalkalmazásai mellett találsz. A fordítóhoz kapott linker állományok nem támogatják a bootloader használatát, ezért neked magadnak kell átszabni.

Szerintem érdemes megbarátkozni a PICCOLO projektben található linker állománnyal.
(#) senseicsiki válasza trudnai hozzászólására (») Feb 2, 2013 /
 
Hát hogy tudnak vele sokan dolgozni, és hogy jó-e az 2 külön dolog. Más területen legalább is ezt látom. Pl. a siemens plc-ket nem ajánlanám senkinek ha őszintén a használhatóságot nézném. Ha azt hogy évek óta dolgozok velük és ismerem sok el*ott nyűgjét, és ha rábeszélek valakit, akkor nekem lesz munkám, természetesen ajánlani fogom. De szerintem bármi jobb nála.

Igazából arra lennék kíváncsi, hogy pl. a micro C a mikroelektronikától használható dolog, vagy eretnekség lenne? Vagy kevesebba lehetőség vele?

Üdv
(#) nagzso hozzászólása Feb 3, 2013 /
 
Sziasztok!
Real-Time Clock-ot szeretnék csinálni. PIC18F2550-et használok XC8 v1.12-vel, 4MHz-es internal oscillator beállítással. A datasheet-ben lévő asm kódot írtam át c-re, de nem igazán működik. Mi lehet a probléma?
  1. #include <xc.h>
  2. #include <stdlib.h>
  3. #include <delays.h>
  4. #include <string.h>
  5. #include "display.h"
  6.  
  7. #pragma config CPUDIV = OSC1_PLL2
  8. #pragma config PLLDIV = 1
  9. #pragma config USBDIV = 2
  10. #pragma config IESO = OFF
  11. #pragma config FOSC = INTOSC_EC
  12. #pragma config FCMEN = OFF
  13. #pragma config VREGEN = OFF
  14. #pragma config BORV = 3
  15. #pragma config PWRT = ON
  16. #pragma config WDTPS = 32768
  17. #pragma config WDT = OFF
  18. #pragma config CCP2MX = OFF
  19. #pragma config PBADEN = OFF
  20. #pragma config LPT1OSC = ON
  21. #pragma config MCLRE = OFF
  22. #pragma config DEBUG = OFF
  23. #pragma config STVREN = OFF
  24. #pragma config XINST = OFF
  25. #pragma config LVP = OFF
  26.  
  27. #define ROW1            0x80
  28.  
  29. volatile int sec = 0;
  30. volatile int min = 0;
  31. volatile int hour = 0;
  32.  
  33.  
  34. void interrupt isr(void);
  35. void write_time(int time);
  36.  
  37. void main(void) {
  38.     CMCON = 0x07;
  39.     ADCON0 = 0x00;
  40.     ADCON1 = 0x0E;
  41.     INTCON = 0x00;
  42.     INTCON2 = 0x80;
  43.     INTCON3 = 0x00;
  44.     PIE1 = 0x00;
  45.     PIE2 = 0x00;
  46.     PIR1 = 0x00;
  47.     PIR2 = 0x00;
  48.     IPR1 = 0x01;
  49.     IPR2 = 0x00;
  50.     RCON = 0x1F;
  51.    
  52.     TMR1H = 0x80;
  53.     TMR1L = 0x00;
  54.     T1CON = 0x0E;
  55.     sec = 0;
  56.     min = 0;
  57.     hour = 12;
  58.     PIE1bits.TMR1IE = 1;
  59.     T1CONbits.TMR1ON = 1;
  60.     lcd_init();
  61.     lcd_init_cgram();
  62.     INTCONbits.GIE = 1;
  63.  
  64.     while(1) {
  65.         lcd_write_command(ROW1);
  66.  
  67.         write_time(hour);
  68.         lcd_write_string(":");
  69.         write_time(min);
  70.         lcd_write_string(":");
  71.         write_time(sec);
  72.     }
  73. }
  74.  
  75. void write_time(int time) {
  76.     char a[3];
  77.  
  78.     itoa(a, time, 10);
  79.     if (strlen(a) == 1)
  80.         lcd_write_string("0");
  81.     lcd_write_string(a);
  82. }
  83.  
  84. void interrupt isr(void) {
  85.     if (PIR1bits.TMR1IF) {
  86.    /*  #asm
  87.             BTFSC TMR1L, 0
  88.             BRA $-2
  89.             BTFSS TMR1L, 0
  90.             BRA $-2
  91.         #endasm*/
  92.  
  93.         TMR1H = 0x80;
  94.         PIR1bits.TMR1IF = 0;
  95.         sec++;
  96.         if (sec > 59) {
  97.             sec = 0;
  98.             min++;
  99.             if (min > 59) {
  100.                 min = 0;
  101.                 hour++;
  102.                 if (hour > 23)
  103.                     hour = 0;
  104.             }
  105.         }
  106.     }
  107. }

Előre is köszi a segítséget.
(#) Istvanpisti válasza nagzso hozzászólására (») Feb 3, 2013 /
 
Idézet:
„T1CON = 0x0E;”

Ez biztosan jó?
Nem 0x0D kellene?
(#) nagzso válasza Istvanpisti hozzászólására (») Feb 3, 2013 /
 
A TMR1-hez külső 32.768kHz-es kvarcot használok.
(#) nagzso válasza nagzso hozzászólására (») Feb 3, 2013 /
 
Nem hívódik meg a megszakítás, idáig már eljutottam.
(#) Sasmadár válasza nagzso hozzászólására (») Feb 3, 2013 /
 
Ha jól látom IPEN bit 0, tehát nem prioritásos megszakítást használsz.Ekkor kell:
  1. INTCONbits.PEIE = 1;

IPR1 értéke lehet 0.
(#) nagzso válasza Sasmadár hozzászólására (») Feb 3, 2013 /
 
Még így se hívódik meg.
Következő: »»   69 / 153
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