Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   3 / 153
(#) MPi-c válasza Prinner hozzászólására (») Nov 24, 2007 /
 
A CCS Reference Manual-ban nézd meg az sprintf() függvényt! A printf-nél használható formázással tudsz közvetlen tömbbe írni vele karaktereket:
  1. float data;
  2.         static char homerseklet[5];
  3.         sprintf(homerseklet,"%4.1f",data);
(#) Prinner hozzászólása Jan 7, 2008 /
 
hitech c fordítóval úgy kellene fordítanom, a kódot, hogy a programmemória 0x00-0x7ff-ig tartó tartományára ne fordítson semmit, a reset vektort a 0x800-ra, és a megszakításokat a 0x808, 0x818-ra tegye. A manualban találtam megfelelő pre proc. utasítást, de fordításnál szintaktikai hibának nézi ezeket.
picc 18pro manual 164. oldal:
hexmate
167.o
The -FILL option is used for filling unused memory locations with a known value. The usage of this
option is:
-FILL=Code@Start-End[,data]

Van utána example is, amiből értelemszerű, hogy miként kell ezt használni. Ez egyébként 18f4550 usb bootloaderhez kellene.
(#) pipi hozzászólása Feb 6, 2008 /
 
Sziasztok!
pic18f8722-vel építettem egy külső memóriás kapcsolást, Bővebben: Link mchip C18-ban szeretném programozni, de a c18 leírásában nem sok infót találtam. Be lehet valahogy a linker fájlba rakni ezt a memória területet is, esetleg van rá kész függvény/macro az írására/olvasásra?
A weboldalon sincs kinn minta progi, az emil-re meg nem válaszoltak.
Használt már igy valaki picet?
Köszi
(#) cassis hozzászólása Feb 17, 2008 /
 
sziasztok!

Eddig csak assembly -t fordítottam .hex formátumra az MPLAB v8.00 val.

Most C -t kellene használnom, de nem bírom átállítani az MPLAB ot. Odáig már eljutottam ,hogy letöltöttem és felraktam a gépre a MPLAB-C18-StudentEdition-v3_12.exe -t.
Aztán project/set language Tool nál a Microchip C18 ban executables -nél az MPLAB C18C Compilerben megerestem a feltelepített mcc18.exe -t. Jól tettem ezt, kellett egyáltalán????
Aztán tovább nem boldugulok vele tovább.

Segítsetek nekem, mert azthiszem végleg elakadtam.
(#) pipi válasza cassis hozzászólására (») Feb 17, 2008 /
 
nem írtad hol akadtál el... hibaüzi?
(#) cassis válasza pipi hozzászólására (») Feb 18, 2008 /
 
Most éppen nincs előttem, de valami olyasmi volt a hibaüzenet, hogy nincs a képernyőn fókusz ablakban asm kód.
És valóban nem volt, mert c kód volt megjelenítve.
(#) pipi válasza cassis hozzászólására (») Feb 18, 2008 /
 
zárd be a munkaterületet (fájl-close workspace), utána a használd a project wizzard-ot, nem szokta elrontani...
(#) ccs hozzászólása Feb 19, 2008 /
 
Sziasztok !

Kerestem, kutattam, de nem találtam:

16F628A-s PIC-el szeretnék magyar ékezetes betűket kiiratni
EW162G0YMY
típusú LCD-re.
Van erről valakinek CCS C-ben valamilyen forrásanyaga ?

Köszönettel.
(#) proli007 válasza ccs hozzászólására (») Feb 19, 2008 /
 
Nekem nincs, de
- a karakter generátor első 8db helyére, felhasználói karaktereket tölthetsz le, és aztán azokat használhatod.
- Persze oda csak a legszükségesebbek férnek el.

üdv! proli007
(#) potyo válasza cassis hozzászólására (») Feb 19, 2008 /
 
A Project-->Select Language Toolsuite vagy ilyesmi alatt a C18 van kiválasztva?
(#) proli007 válasza proli007 hozzászólására (») Feb 19, 2008 /
 
Hitachi katalógusban, megtalálod, hogy hogyan kell a felhasználói karaktereket betölteni.

És hogy ne maradj "szárazon", alul a bináris kódok.

üdv! proli007

ASCII-Hu.jpg
    
(#) MPi-c válasza ccs hozzászólására (») Feb 19, 2008 / 1
 
Szia!
Valóban egyszerre csak 8 karakter képét lehet eltárolni és megjeleníteni, de ügyesen, az éppen a kijelzőre kerülő karaktereket a kijelzés előtt betöltve, vagyis váltogatva a karakterkészletek, minden karakter kijelezhető.
A mellékelt kódban az lcd_init_custom_chars függvénnyel tölthetők be a paraméterként megadott karakter készletek. Nincs minden karakter "megalkotva", de kiindulásnak biztos jó lesz.

s_LCD.c
    
(#) ccs válasza MPi-c hozzászólására (») Feb 20, 2008 /
 
Köszönöm MPi-c neked és proli007-nek is.

Működik, tökéletes.

Üdv: ccs
(#) cassis válasza potyo hozzászólására (») Feb 20, 2008 /
 
Select Language Toolsuite nem volt aktív. Nem bírtam kiválasztani semmit. Csupán a set language Tool ban tudtam beállítani a c18. exe helyét mint ahogy azt fent írtam.

Mellesleg ezt nem kelett volna neki autómatikusan megtennie telepiítés autá az MPLAB ban?
(#) pipi válasza cassis hozzászólására (») Feb 20, 2008 /
 
előszor mplab, majd utána mcc18 telepit
(#) potyo válasza cassis hozzászólására (») Feb 20, 2008 /
 
Idézet:
„Mellesleg ezt nem kelett volna neki autómatikusan megtennie telepiítés autá az MPLAB ban?”


Elvileg igen, ha a C18 telepítése közben bepipálod, hogy ezeket állítsa be. Viszont valami nem volt az igazi akkor sem vele, lehet, hogy az újabb verziókban már javítottak ezen.


A Select Language Toolsuite csak akkor lesz aktív, ha van egy projekted megnyitva. Lehet az egy üres projekt is, de legyen.
(#) Fixer_SH hozzászólása Márc 7, 2008 /
 
Hello srácok!

C-ben szeretném folytatni PIC-es fejlesztéseimet, ezért kicsit körbejártam a kérdést. Találtam C18-at (student), HI-TECH-et meg CCS-t.
Egy 16F887-esen szeretnek probalkozni. Ez máris kizárta a C18-at és a CCS-t, mert azt irja, hogy "nemjo.. hianyzik a PCM fordito a geprol" naigen, valoszinuleg, mert csak a demo van fent

Marad a HI-TECH.
Meg is irtam a PIC-es "Hello world"-ot:


#include itt kacsacsor htc.h kacsacsor van, csak a forumban ez nem latszik.


__CONFIG(MCLREN & UNPROTECT & WDTDIS & INTIO);

void main()
{
TRISD=0;
PORTD=0b01010101;

for (;;

}

Noss... lefordul, meg van a .hex, betolom a PIC-be egy PICkit2-vel, azt mondja minden OK, de megsem kapcsolnak be a LED-ek amik a PORTD-n vannak (egy PICkit2 debug express kis egyuttest vettem, azon van par LED).

Találtam a build option-ök között a "global"-ban egy ilyen beallitasi lehetoseget, hogy "Format hex file for download". No, ezt probaltam bekapcsolni is, meg kikapcsolni is. Egyik verzioval sem vilagotottak a LED-ek.
Mar elolvastam par "hogyan kezdjunk C-ul PIC-et programozni" leirast, de nekem az jon ki, hogy ennek a kodnak jonak kell lennie.

Valakinek valami otlete?

Koszi,
Fixer
(#) potyo válasza Fixer_SH hozzászólására (») Márc 8, 2008 /
 
Nyisd meg a hex fájlt MPLAB-ban, és nézd meg, hogy a konfig bitek a fejlesztőpanelhez megfelelően vannak-e beállítva. Pl. ahogy nézem, az LVP nincs letiltva.
(#) Fixer_SH válasza potyo hozzászólására (») Márc 8, 2008 /
 
ááááá köszi!! tényleg az LVP volt a ludas, nem allitottam disabled-re.

most visszaneztem megint regebbi ASM-s progimat, ott is LVP_OFF volt... hát kész....

Köszi mégegyszer!
(#) potyo hozzászólása Aug 24, 2008 /
 
Valakinek sikerült az SDCC fordítót beizzítania windows alatt? Elmondhatná hogyan kell, mert nekem nemigazán sikerült működőképeset alkotni. Pedig szimpatikus fordító lenne...

Írtam egy egyszerű c fájlt. Ezt "c:\sdcc\bin\sdcc.exe" -S -mpic14 -p12f675 test.c paranccsal átkorvertáltam asm fájllá, ami tartalmazza is azt, amit a C fájlban leírtam, tehát úgy néz ki, hogy idáig rendben van. Ezután jön a "c:\program files\microchip\mpasm suite\mpasmwin.exe" /q /o test.asm parancs, ami szintén látszólag lefut, viszont a .ERR fájlba bekerül egy No code generated bejegyzés. Ezután jönne a "c:\Program Files\Microchip\MPASM Suite\mplink.exe" /o test.hex "c:\test.O" 12f675.lkr parancs, ami viszont már nemis fut le, Error - could not find definition of symbol '_ADCON0_bits' in file 'c:\test.O'. üzenettel áll le (véleményem szerint azért, mert az előző parancs nem generált kódot).

Ötlet?
(#) potyo válasza potyo hozzászólására (») Aug 28, 2008 /
 
Felhozom a témát, hátha valakinek szemet szúr...
(#) lidi válasza potyo hozzászólására (») Aug 28, 2008 /
 
Ezzel esteleg nem próbáltad? SDCC Plugin for MPLAB
(#) potyo válasza lidi hozzászólására (») Aug 28, 2008 /
 
Ezt megtaláltam én is, fel is raktam, de valami elérési utakat meg kell neki adni, és nem sikerült rájönnöm, hogy oda mit vár. Azt hiszem a linker script hiányzott... De ha hétvégén otthon leszek, megpróbálom megint.

De ettől függetlenül amúgy is mennie kellene, és mégse megy.
(#) potyo válasza lidi hozzászólására (») Aug 30, 2008 /
 
Na megnéztem, beállítottam minden elérési utat rendesen, és az MPLAB ezt produkálja az Output ablakban:

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\SDCC\bin\sdcc.exe" teszt.c -c -mpic14 -p12F675 -l"C:\SDCC\lib\pic" -I"C:\SDCC\include\pic"
A megadott nevet (gpasm) a rendszer nem ismeri fel belső vagy külső parancsként, futtatható programként vagy kötegfájlként.
BUILD FAILED: Sat Aug 30 10:53:46 2008

---------------------

Aki linuxon használ sdcc-t, és megy neki, kérném, hogy töltsön már fel nekem egy komplett projektet (c fájlt, generált fájlokat, stb., szóval mindent), ami szépen lefordul. Lehet az bármi egyszerű, akár az a C fájl is, amit kicsit előbb feltöltöttem, csak hogy lássam, hogy néz ki egy működő projekt.
(#) potyo válasza potyo hozzászólására (») Szept 1, 2008 /
 
Sikerült gatyába rázni a dolgokat, sikerült működőképes hex fájlt produkálni. Feltöltöttem a komplett "projektet", ha valaki mást is érdekel. A GPUtils-t és az SDCC-t a teszt.bat fájlban megadott útvonalra kell telepíteni, hogy a bat fájl lefusson.
(#) Tibus hozzászólása Szept 16, 2008 /
 
Sziasztok!

Épp egy PIC16F88-at programozok és egy elég érdekes dologgal szenvedek. CCS 4.057 verziójú fordítót használok az MPLAB 8.10-es verzióval.

Egy sima 'IF'-es feltétellel 3 állapotot különböztetek meg. Van egy 'STATE' változó és ez 0,1 és 2 értékeket(állapotokat) vesz fel és 3 'IF' feltétel ezeket választja szét. A 0-ás állapotnál nincs is gond, ha 0 a 'STATE', akkor belép és végrehajtja amit kell, ha nem 0, akkor meg átlépi ugye.

De az 1-es és 2-es feltételnél gubanc van a lefordított assembly kódban.
Assemblyben az 1-es állapotot így oldja meg a fordító:

DECFSZ 2B,W
GOTO 0DA

A '0x2B' a 'STATE' változó címe. Tehát ha csökkenti egyel és 0 lesz az értéke, akkor 1 volt az eredeti érték. Ezzel az a baj, hogy a GOTO utasítás az 'IF' függvénybe mutat, vagyis a '0x0DA' cím az 'IF' feltétel "belsejének" első sora. Tehát ha teljesül a feltétel ha nem, belép a függvénybe.
Ugyanígy a 2-es állapotnál is hiba van:

MOVF 2B,W //STATE változót az akkuba másolja
SUBLW 02 //kivon az akkuból kettőt
BTFSC 03.2 //megnézi hogy a 'Zero bit' 1-e
GOTO 117 //ez ismét az 'IF' belsejének első sora...

Itt meg ha jól értem, ha a kivonás után a 'Zero bit' 1, vagyis 2 volt a 'STATE', akkor nem ugorja át a

'GOTO'-t, pont hogy akkor lépne ki a függvényből, feltéve ha jó lenne a 'GOTO' címe. Szóval itt még nagyobb a kavarodás...

Nem vagyok egy profi programozó, de szerintem nem egy bonyesz C programot írtam, még én is lefordítom assembly-be... mi lehet a gond?

Köszi előre is bárkinek!

Tibus
(#) potyo válasza Tibus hozzászólására (») Szept 16, 2008 /
 
Mutasd meg azt a programot! Legalább az if-es részt!
(#) Tibus hozzászólása Szept 16, 2008 /
 
Jó ötlet, csatoltam. Nagyon nincs kommentezve, de a kérdéses rész szerintem érthető, de ha nem tiszta, akkor telikommentezem

köszi!
(#) Tibus hozzászólása Szept 16, 2008 /
 
Bocs mindenkitől, megtaláltam a hibát, ami az enyém volt. Az IF és a feltétele után rögtön kettőspontot tettem, hát szegény fordító persze, hogy azt hittem, hogy ott vége az IF-nek. Még jó, hogy nem szidtam meg vádoltam semmit/senkit Gondoltam rá, hogy én vagyok a béna

Most minden működik! Majd kipróbálom élesben is, mert eddig csak szimuláltam.

Azért köszönöm, ha lesz még valami, majd írok

Tib
(#) pipi válasza Tibus hozzászólására (») Szept 16, 2008 /
 
nagyon szereted a ;-t
a }; -ben felesleges a ; (hibát itt nem okoz)
Következő: »»   3 / 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