Fórum témák

» Több friss téma
Fórum » PIC C compiler
 
Témaindító: Pavel, idő: Dec 29, 2005
Lapozás: OK   1 / 2
(#) Pavel hozzászólása Dec 29, 2005 /
 
Hali!

Egy kis segítséget kérnék! C ben szeretnék PIC-et programozni! Eddig Basic - ben progiztam, de az ne igazán vált be, kivéve a 18 - as sorozatot(ahoz találtam használható szoftvert)! Az lenne a kérdésem ki milyen C fordítót használ, és mik a tapasztalatok?

A segítségeteket előre is köszi!

ui: és hol lehet hozzájutni?
(#) mspike válasza Pavel hozzászólására (») Dec 29, 2005 /
 
Mplab C 18-at használok és nagyon király, én neten gubiztam egy xarwaret aztán gubiztam tovább... és tudod, hogy van ez.
(#) mspike válasza Pavel hozzászólására (») Dec 29, 2005 / 4
 
Küldtem 10Mb-ás emailt... remélem kitalálod
(#) Pavel válasza mspike hozzászólására (») Dec 29, 2005 /
 
Nagyon szépen köszönöm a segítséged, és az e-mailt!! Azt hiszem ez jó lesz nekem is!! (sőt biztos)
(#) mspike válasza Pavel hozzászólására (») Dec 29, 2005 /
 
persze, hogy, bár nem a legújabb de legalább nem az agyon herélt student... ha meg bárki kérdi nekünk úgysincs számítógépünk
(#) Pavel válasza mspike hozzászólására (») Dec 29, 2005 /
 
:yes:
(#) mspike válasza Pavel hozzászólására (») Dec 29, 2005 /
 
elfeledtem mondani, de alighanem rájöttél ez csak a 18Xxxxxx szóval csak a 18-as picekhez van... van C30 is de azt nem is tom mire jó... én most nagyon bódog vagyok ezzel, azóta nem is írok csak C-ben
(#) Pavel válasza mspike hozzászólására (») Dec 29, 2005 /
 
Köszi! Igen feltünt, hogy csak 18 - as sorhoz való!! Tényleg 16 - os pic hez nem tudsz valami jó compilert, mertz még van itthon egy pár darabom, és fel kéne őket használni v.mire! De ahoz fel kell progizni Most teszteletem a c18 - at! Ez tényleg király
(#) Pavel válasza Pavel hozzászólására (») Dec 29, 2005 /
 
Én eddig a Pic Basic Compilert használtam. Ezzel csak az a bajom, hogy csak subrutinokat lehet csinálni, eljárásokat, és függvényeket nem!!!:no:
(#) miklosch hozzászólása Márc 13, 2007 /
 
Hello!

Meg tudnátok mondani, hogy honnan tudom letölteni a C18-at? Mert ami a microchip oldalán van, az csak frissítés, mert magában azt nem lehetett telepíteni.
(#) bbatka válasza miklosch hozzászólására (») Márc 13, 2007 /
 
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nod...006011
A Student verzió ! Az upgrade-t nehogy rátelepítsd.
(#) miklosch hozzászólása Márc 13, 2007 /
 
köszi, de eddig én is eljutottam, de itt csak upgrad van, és ezt nem engedi telepíteni...
(#) bbatka válasza miklosch hozzászólására (») Márc 13, 2007 /
 
Ok, de a Student verzió az ingyenes. Ott van az Upgrade alatt.
Bár lehet hogy csak én látom, mert regisztráltam magam.
(#) zsoltee0001 hozzászólása Aug 19, 2009 /
 
sziasztok

C-be szeretnék PICet programozni ezért föltelepítettem a C-18 compilert, viszont mikor megnyitom az MPLAB-ot és kijelölném a megfelelő fordítót (C-18-at, nincs piros X, tehát, tudja, hogy létezik) ezt a hibaüzenetet produkálja, holott az elérési út is stimmel.
Mi lehet a gond?
(#) potyo válasza zsoltee0001 hozzászólására (») Aug 19, 2009 /
 
Hát a hibaüzenet elég egyértelműen leírja, hogy mi a gondja. Nem csak egy fájlból áll egy fordító, hanem kell a compiler, linker, libraryan, assembler. Aminél nincs piros X, azt a fájlt ismeri, de ahol van piros X, azokhoz be kellene állítani az elérési útvonalat. Azt tudom elképzelni, hogy a C18 telepítésekor nem pipáltad be a pipadobozokat, és azért nincsenek az elérési tutak beállítva.
(#) zsoltee0001 válasza potyo hozzászólására (») Aug 20, 2009 /
 
szia

Újra telepítettem, bejelöltem az összes jelölőnégyzetet ahogy mondtad, és így már működik, köszi
üdv
(#) morgan666 hozzászólása Nov 6, 2009 /
 
Hello,

egy progit akarok compilalni C18 compilatorral, pic18F452 eszkozre. A problemam abbol adodik, hogy a kovetkezo hiba uzenetet kapom:

Executing: "D:\Program Files\Microchip\MCC18\bin\mplink.exe" /l"D:\Program Files\Microchip\MCC18\lib" "18f452.lkr" "main2.o" "serial\serial.o" "ParTest\ParTest.o" "..\..\Source\tasks.o" "..\..\Source\queue.o" "..\..\Source\list.o" "..\..\Source\portable\MemMang\heap_1.o" "..\Common\Minimal\flash.o" "..\..\Source\portable\MPLAB\PIC18F\port.o" /u_CRUNTIME /z__MPLAB_BUILD=1 /m"rtosdemo2.map" /aINHX8M /o"rtosdemo2.cof"
MPLINK 4.22, Linker
Copyright (c) 2008 Microchip Technology Inc.
Error - section '.udata_heap_1.o' can not fit the section. Section '.udata_heap_1.o' length=0x00000400
Errors : 1

Link step failed.

Ebben az esetben a 18F452.lkr a kovetkezokeppen nez ki:

LIBPATH .

FILES c018i.o
FILES clib.lib
FILES p18f452.lib

CODEPAGE NAME=page START=0x0 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED

ACCESSBANK NAME=accessram START=0x0 END=0x7F
DATABANK NAME=gpr0 START=0x80 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF
DATABANK NAME=gpr5 START=0x500 END=0x5FF
ACCESSBANK NAME=accesssfr START=0xF80 END=0xFFF PROTECTED

SECTION NAME=CONFIG ROM=config

STACK SIZE=0x100 RAM=gpr5

Arra rajottem, hogy ha modositom ezt a .lkr filet akkor a programom szepen compilalodik:

// $Id: 18f452.lkr,v 1.4 2003/03/13 05:02:23 sealep Exp $
// File: 18f452.lkr
// Sample linker script for the PIC18F452 processor

LIBPATH .

FILES c018i.o
FILES clib.lib
FILES p18f452.lib

CODEPAGE NAME=vectors START=0x0 END=0x39 PROTECTED
CODEPAGE NAME=page START=0x3A END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED

ACCESSBANK NAME=accessram START=0x0 END=0x7F
DATABANK NAME=BIG_BLOCK START=0x80 END=0x5FF
ACCESSBANK NAME=accesssfr START=0xF80 END=0xFFF PROTECTED

SECTION NAME=CONFIG ROM=config

STACK SIZE=0x60 RAM=BIG_BLOCK

A kerdesem az lenne, hogy ezzel a modositassal valojaban en mit csinaltam, hogy lefordult a program?

A mikrokontroller minden DATABANK-ot el fog erni, tovabbra is vagy csak az elso 0xFF-et?

koszi elore is a valaszokat
(#) icserny válasza morgan666 hozzászólására (») Nov 6, 2009 /
 
Szerintem nem a linker állományt kellene elbabrálni, hanem vagy a forráskódot, vagy a fordítási beállításokat rendberakni. A RAM ugyanis csak lapozással kezelhető. Ha becsapod a linkert, akkor lehet, hogy lefordul a program, de mit fog csinálni?

Az .udata_heap_1.o' length=0x00000400 mérete nagyon soknak tűnik... Nagyméretű tömböket definiáltál, vagy mitől lett ez ekkora?
(#) trudnai válasza morgan666 hozzászólására (») Nov 6, 2009 /
 
Ezzel a szoftver stack-edet szepen racsaptad a heap teruletere -- nem hinnem, hogy ez jo otlet! (bar lehet ettol meg a linker eleg okos es azt a hex 60-as meretet figyelembe veszi -- en biztos ami zicher meghagynam kuon teruletnek)

Amugy igazandibol ugy szoktak csinalni, hogyha van nagyobb tombod, akkor annak kulon teruletet jelolnek ki PROTECTED-el es szekcio deklaracioval, es mikor a tombod definialod akkor #pragra-val megadod neki, hogy azt a tombot szepen arra a szekciora helyezze. A tobbi valtozo es heap marad valtozatlan -- de ha mar heap szoba kerult, lehetoseg szerint kerulni kell a dinamikus memoria foglalast microcontrolleres kornyezetben. Ugy kell megtervezni az algoritmusokat, hogy azok statikus ill overlayed teruletekre keruljenek.
(#) morgan666 hozzászólása Nov 6, 2009 /
 
Valojaban amit en compilalni akarok az egy Demo, amit a netrol toltottem pontosabban a www.freertos.org cimrol.
Ez egy valos ideju operacios rendszer, amelynek van nehany taskja, az en esetemben ledeket pillogtatok kulonbozo frekvenciakon, mas mas task felugyelve rajuk.
A Demo compilalhato, a pic18f452.lkr fileban pedig a DATABANKok egy BiG_Block nak vannak deklaralva, mint ahogy az elobb mutattam.
Sosem lattam ilyet, ezert kicsereltem ezt a C18 kompilator pic18f452.lkr re es azzal probaltam kompilalni, de sajna akkor mar a fennti hibauzenete adta.

Jelenleg nincs fejlesztolapom, amin ki tudnam probalni, ezert kerdeztem, hogy mi a kulonbseg, s vajon menne elesbe?
(#) icserny válasza morgan666 hozzászólására (») Nov 6, 2009 /
 
"A Demo compilalhato, a pic18f452.lkr fileban pedig a DATABANKok egy BiG_Block nak vannak deklaralva"
Én sem láttam még ilyet.

Elvileg szimulátorban is futtathatod a lefordított programot. Ha DEBUG beállításban futtatod, még az RTOS Viever is használható hozzá. (Az MPLAB IDE Tools menüjében).
(#) morgan666 hozzászólása Nov 6, 2009 /
 
Vegul is ezt hasznalom es mukodik, a memoria foglalast ugy oldottam meg, ahogy Trudnai javasoltta, kijeloltem egy teruletet es a tomb definialasanal pragmat hasznaltam. Koszi mindenkinek!

// File: 18f4620.lkr
// Sample linker script for the PIC18F4620 processor

LIBPATH .

FILES c018i.o
FILES clib.lib
FILES p18f4620.lib

CODEPAGE NAME=page START=0x0 END=0xFFFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF003FF PROTECTED

ACCESSBANK NAME=accessram START=0x0 END=0x7F
DATABANK NAME=gpr0 START=0x80 END=0xFF
DATABANK NAME=heapregion START=0x100 END=0x5FF PROTECTED
DATABANK NAME=gpr6 START=0x600 END=0x6FF
DATABANK NAME=gpr7 START=0x700 END=0x7FF
DATABANK NAME=gpr8 START=0x800 END=0x8FF
DATABANK NAME=gpr9 START=0x900 END=0x9FF
DATABANK NAME=gpr10 START=0xA00 END=0xAFF
DATABANK NAME=gpr11 START=0xB00 END=0xBFF
DATABANK NAME=gpr12 START=0xC00 END=0xCFF
DATABANK NAME=gpr13 START=0xD00 END=0xDFF
DATABANK NAME=gpr14 START=0xE00 END=0xEFF
DATABANK NAME=gpr15 START=0xF00 END=0xF7F
ACCESSBANK NAME=accesssfr START=0xF80 END=0xFFF PROTECTED

SECTION NAME=CONFIG ROM=config
SECTION NAME=heap_section RAM=heapregion
STACK SIZE=0x60 RAM=gpr13

(#) icserny válasza morgan666 hozzászólására (») Nov 6, 2009 /
 
PIC18-ra egyébként létezik a Micrium OS/II-nek is egy implementációja , továbbá van egy PICOS18 is. Szerintem ezekre is érdemes egy pillantást vetni.

Kooperatív multitaszkos rendszerből meg annyi van, mint csillag az égen...
(#) morgan666 hozzászólása Nov 6, 2009 /
 
En idaig csak a FreeRTos-t tanulmanyoztam, s probaltam ki Atmel uCre, s gondoltam keszitek egy alkalmazast PIC18 ra is. De most ahogy irtad, lehet PICOS18 at fogok hasznalni, jobban dokumentalt es ez csak PICekre van. Hasznaltad icserny te a PICOS18at?
(#) icserny válasza morgan666 hozzászólására (») Nov 7, 2009 /
 
Idézet:
„Hasznaltad icserny te a PICOS18at?”

Nem én, s egyelőre még próbafordítást sem csináltam belőle, pedig kíváncsi lennék, hogy mennyit eszik meg a memóriából.

A FreeRTOS-nál viszont elborzasztott, hogy az első demó megette a ROM nagyobbik felét, a RAM-nak meg a 80 %-át (PIC18F452-ra csináltam tegnap egy próbafordítást).
(#) mark.budai hozzászólása Feb 5, 2015 /
 
Sziasztok!
CCS C Compiler 5.037-es verziójában programozok jelenleg. Kezdő vagyok a PIC programozás területén, ezért kérdeznék tőletek.
Egy programomban szeretném a PIC egyik portját bemenetnek definiálni. Vegyünk egy példát, legyen ez a bemenet az A2-es láb, amire SW1 néven szeretnék hivatkozni. Ezt ugye a TRIS regiszterrel kéne megoldani.
Beírom még a program elejére, hogy "#define SW1 TRISA2=1". A Compile gomb megnyomása után olyan hibával jön elő, hogy a "TRISA2" egy nem meghatározott változó (undefined identifier). Miért nem fogadja el a TRIS regisztert? A súgóban ír is valamit, hogy probléma van vele, de nagyon hiányos az angol tudásom, és fogalmam sincs, hogy hogy kéne megválasztanom bemenetnek az "SW1" hivatkozást. Ez csak egy példa, egy jóval bonyolultabb programról van szó, ami kész is lenne, ha tudnám definiálni ezeket a hivatkozásokat, több is van belőle. Nagyon fontos lenne! Köszönöm előre is!
(#) pbalazs válasza mark.budai hozzászólására (») Feb 5, 2015 /
 
Nézd meg, hogy a header file-ban megvan-e a TRIS regiszter.
(#) steelbird válasza mark.budai hozzászólására (») Feb 5, 2015 /
 
Definiáltad az SW1 -et és értéknek egy olyan változó értékét akarod neki adni, ami még előzőleg nem lett definiálva. Hivatkozol TRISA2 -re, de az még nincs létrehozva.
A CCS kézikönyvében az van, hogy a regisztereket getter/setter függvényekkel lehet lekérdezni és írni.
  1. //Example Code:  
  2. #use fast_io(b)
  3. ...
  4. Int8 Tris_value= 0x0F;
  5. int1 Pin_value;
  6. ...
  7. set_tris_b(Tris_value);  //Sets B0:B3 as  input and B4:B7 as output
  8. output_high(PIN_B7);  //Set the pin B7 to High
  9. If(input(PIN_B0)){  //Read the value on pin B0, set B7 to low if pin B0 is high
  10. output_high(PIN_B7);}
A hozzászólás módosítva: Feb 5, 2015
(#) steelbird válasza steelbird hozzászólására (») Feb 5, 2015 /
 
Bocsánat, megnéztem jobban a példakódot, a regisztereket a setter függvénnyel konfigurálod, hogy ki, vagy bemenetként funkcionáljanak és a konfigurációt a getter függvénnyel tudod lekérdezni.

A kézikönyvből kiollózott mintakód 7. sorában a set_tris_b() függvény állítja be a B0....B3 regisztereket inputra, a B4...B7 regisztereket pedig outputra, a Tris_value változó értékének megfelelően.

A kód 8. sorában kiküld egy H szintet a B7 outra a program, a 9. sorban pedig az input(PIN_B0) függvénnyel lekérdezi a B0 bemeneten lévő értéket.
A hozzászólás módosítva: Feb 5, 2015
(#) vilmosd válasza mark.budai hozzászólására (») Feb 5, 2015 /
 
Lehet elore definialni neveket a regisztereknek, es utana ezen a neven hivatkozni ra.
  1. #BYTE port_a = 5
  2. #BYTE port_b = 6
  3. #BYTE port_c = 7
  4. #BYTE option_r = 0x81
  5. #BYTE tris_a = 0x85
  6. #BYTE tris_b = 0x86
  7. #BYTE tris_c = 0x87
  8. #BYTE wpu_b = 0x115
  9. #BYTE ioc_b = 0x116
  10. #BIT  Led2 = port_c.3
  11. #BIT  Led1 = port_b.7
  12. #BIT  ssr = port_a.2
  13. #BIT  Bt1 = port_b.5
  14. #BIT  Bt2 = port_b.6
  15. #BIT  Bt3 = port_b.4
  16. #BIT  rbpu = option_r.7

Utana igy hivatkozhats ra:
  1. port_a=0;
  2.         port_b=0;
  3.         port_c=0;
  4.         tris_a=0b11111111;
  5.         tris_b=0b01111111;
  6.         tris_c=0b00000000;
  7.         wpu_b = 0b01110000;
  8.         ioc_b = 0b01110000;
  9.         rbpu=0;
Következő: »»   1 / 2
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