Fórum témák

» Több friss téma
Fórum » CCS PIC Compiler
 
Témaindító: (Felhasználó 1542), idő: Ápr 3, 2006
Lapozás: OK   73 / 118
(#) whalaky válasza pontazok hozzászólására (») Máj 4, 2012 / 3
 
A #ROM arra való, ha már a program betöltésekor akarsz az EEPROM-ba értéket írni. A #ROM-al megadott adatok a program beégetésekor beíródnak az EEPROM területre.
Ennek allor lesz/van jelentősége ha programparamétereket vagy előre definiált, később módosítható beállításokat stb. akarsz eepromban tárolni, és igényli a kezdőértéket.
(#) pontazok válasza whalaky hozzászólására (») Máj 4, 2012 /
 
Értem. Mostmár világos. Tehát a #rom után tudom állítani az értékeket. Akkor ez olyan mint ha a PICkit programjában az EEPROM területeket átírnám és úgy égetném be a PIC-be.
(#) whalaky válasza pontazok hozzászólására (») Máj 4, 2012 /
 
Pontosan így van.
(#) pontazok válasza whalaky hozzászólására (») Máj 5, 2012 /
 
Köszönöm Szépen!
(#) pontazok hozzászólása Máj 6, 2012 /
 
Lenne még egy kérdésem a CCS-ről.
Ha elindítom a PIC Wizard-ot, akkor a soros kommunikációt bármelyik lábra be lehet állítani.
Ez így szép és jó meg működik is persze, de mégis hogyan? Gondolom szoftveresen megoldja magának a fordító, de nem látok erre utaló header fájlt vagy forrást.
Remélem valaki tudja hogy milyen "trükköt" használ erre a program.
(#) vilmosd válasza pontazok hozzászólására (») Máj 6, 2012 /
 
A fordito a megadott PIC alapjan tudja hogy hol talahato a HW USART. Tehat ha Te nem oda kered akkor SW USART es azt forditja be a LIB-bol.
(#) pontazok válasza vilmosd hozzászólására (») Máj 6, 2012 /
 
Köszönöm a választ. Viszont én PIC16F716 is kihasználtam már ezt, és ezen nincs hardveres USART. Mégis működik a kommunikáció.
Itt az adatlapja:
Bővebben: Link
(#) icserny válasza pontazok hozzászólására (») Máj 6, 2012 /
 
Idézet:
„Mégis működik a kommunikáció.”

Már megkaptad erre is a választ: "akkor SW USART es azt forditja be a LIB-bol."
(#) pontazok válasza icserny hozzászólására (») Máj 6, 2012 /
 
Hopp valóban.
Menet közben alszok....
Elnézést az új felesleges kérdésért és köszönöm az választ!
(#) k hozzászólása Máj 9, 2012 /
 
Mivel a fejlesztőkártyám hardveréhez való demo programjaim ccs c-ben vannak újra itt (is) vagyok.



[code=c]

#include

void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i for(j=0;j<100;j++);
}
void main()
{ unsigned char i,a;
TRISB=0;PORTB=0;
while(1)
{
PORTB=0;
delay(500);
PORTB=0xff;
delay(500);
/* a=0x01;
for(i=0;i<8;i++)
{
PORTB=a;
delay(10);
a<<=1;

};*/
}
}

ez a rövid demo program

a fordításra adott válasz a következő:

error
file can not be opened.

a gondom a következő:
(azon kívül, hogy megint ott vagyok, ahol egy hete, hogy fordításkor nem fordít, hanem bedobja a ccs programot)

- hogyan állítsam be, hogy megtalálja a pic 18.h filet?
egyáltalán azt kell-e beállítanom, vagy a 18f4520 filet?

Úgy érzem, hogy egy hete ugyanitt tartottam >>>>>
(#) vilmosd válasza k hozzászólására (») Máj 9, 2012 / 1
 
  1. #include  // itt hianyzik a file neve,
  2.  
  3. void delay(unsigned int x)
  4. {
  5. unsigned int i,j;
  6. for(i=0;i
  7. for(j=0;j<100;j++);
  8. }
  9. void main()
  10. { unsigned char i,a;
  11. TRISB=0;PORTB=0;
  12. while(1)
  13. {
  14. PORTB=0;
  15. delay(500);
  16. PORTB=0xff;
  17. delay(500);
  18. /* a=0x01;
  19. for(i=0;i<8;i++)
  20. {
  21. PORTB=a;
  22. delay(10);
  23. a<<=1;
  24.  
  25. };*/
  26. }
  27. }
Probald meg a CCS sajat ex_xxxx.c filek mintajara elkezdeni a c forrast.
  1. #include <18F4520.h>
  2. //#device ADC=10
  3. #fuses HS,NOWDT,PROTECT,NOLVP,NOBROWNOUT
  4. #device HIGH_INTS=TRUE
  5. #use delay(clock=8000000)
  6. #include <string.h>
  7. #include "flex_kbd.h"
  8. #include "flexlcd.h"

A kacsacsoros include a PICC include konyvtarbol lesz betoltve, az idezojeles pedig a projekt konyvtarbol. Persze az MPLAB alatt a project beallitasoknal be kell allitani az eleresi utvonalakat. Ez a forditora es az include konyvtarra vonatkozik. Amit kuldtem peldakat abban is lathatoak ezek a dolgok. Ezert nehez egy kesz HW-re elinditani a projektet, mert amit ok adnak, az altalaban mas eleresi utvonallal dolgozott, ezert a Te gepeden nem fogja megtalalni a megfelelo fileket.
(#) whalaky válasza vilmosd hozzászólására (») Máj 9, 2012 / 1
 
Ehhez még annyit, hogy a CCS header-ben a TRISB és a PORTB nincs definiálva, arról külön kell gondoskodni az adatlap alapján.
  1. // 18F2550 esetén
  2. #byte PORTB    = 0xF81
  3. #byte TRISB    = 0xF93
(#) k válasza vilmosd hozzászólására (») Máj 9, 2012 /
 
Köszi nagyon sokat segítettél, én meg sokat hibázok

pl: én is úgy szeretném belinkelni a programrészletet, de az sem ment.

az a hibás sor az eredeti programban a következőképpen nézett ki:
# include

és arra kaptam a hibaüzenetet
(#) k válasza k hozzászólására (») Máj 9, 2012 /
 
ha valamit kacsacsőr közé írok , akkor az eltűnik a hozzászólásból

tehát az include után oda kell képzelni kacsacsőrben pic18.h file nevet

így már talán érthetőbb a kérdésem és az előző hozzászólásom

ettől függetlenül javítom a hibát
(#) icserny válasza k hozzászólására (») Máj 9, 2012 / 1
 
Ha programsorokat idézel, akkor használd a Kód gombot, légy szíves!
(#) vilmosd válasza k hozzászólására (») Máj 9, 2012 / 1
 
Erdekes nekem a kodban ott maradt a kacsacsor. A "Kod" gombot a kod elejen es a vegen is nyomni, akkor nem tunnek el a spec karakterek.
(#) vilmosd válasza whalaky hozzászólására (») Máj 9, 2012 / 1
 
Termeszetesen ez nalm is igy mukodik. Viszont ha a mintapeldaban az include tartalmazza ezeket a deklaralasokat, akkor mar termeszetesen nem kell megegyszer megcsinalni.
(#) k válasza vilmosd hozzászólására (») Máj 9, 2012 /
 
csak a program elején nyomtam a kód gombot, valószínűleg ez volt a hiba
(#) k válasza vilmosd hozzászólására (») Máj 9, 2012 /
 
  1. #include <pic.h>
  2. /*  c7Segment.c - Roll through 10 Digits on 7 Segment LED Display
  3.  
  4. This program will display each of the Decimal 10 digits on a 7
  5.   Segment Common Cathode LED Display.  
  6.  
  7. Hardware Notes:
  8.  
  9. RA5 - Segment a
  10. RC5 - Segment b
  11. RC4 - Segment c
  12. RC3 - Segment d
  13. RC2 - Segment e
  14. RC1 - Segment f
  15. RC0 - Segment g
  16.  
  17. myke predko
  18. 04.11.10


ez egy más helyről küldött példaprogram, de a ccs itt is a titokzatos pic.h filet hiányolja.

hibaüzenet: file can not be opened

ebből számomra az következik, hogy mindegy honnan kapok példaprogramot ugyanaz a file hiányzik, akkor ez most valamit rosszul állítottam be?
(#) icserny válasza k hozzászólására (») Máj 9, 2012 / 1
 
Az így kezdődő programok valószínűleg nem CCS c-hez készültek.
(#) k válasza icserny hozzászólására (») Máj 9, 2012 /
 
köszönöm a választ.

Azért hittem azt, hogy ccs c, mert a 'kínai' is a ccs telepítőjét mellékelte a példaprogramokhoz.
Illetve egy teljesen más helyről is ccs-hez mellékelt példaprogramban találtam ezt.

Kezdőként nem jöttem rá, hogy ez nem ccs-hez való.
talán az is jelezte, hogy könnyebben alakítottam át működővé a programot (microchip) c18-ra
(#) icserny válasza k hozzászólására (») Máj 10, 2012 / 1
 
Nem akarok hülyeséget mondani, de azt hiszem, hogy a Hitech C fordítónál szokott pic.h-val kezdődni a program.

Mindenestre alapvetően elhibázottnak tartom a megközelítésedet (célozva a másik topikban folyó társalgásra is), mert ez így "fenn az ernyő, de nincsen kas" esete. Előbb tanuld meg a C18 és a mikrovezérlő rejtelmeit alaposan, utána próbálkozz a perifériák élesztgetésével, egyenként szép lassan. S szánj erre sok-sok hónapot!

A CCS, Hitech és egyéb programok átírása azt igényelné, hogy minkét (vagy mindhárom) nyelvjárás rejtelmeiben is járatos legyél, ráadásul a perifériák kezelését is ismerd már. S ha véletlenül sikerül, akkor sem ad olyan tudást, mintha az adatlapok forgatása után magad rakod össze a programot. A példaprogramokat tehát tekintsd csak ötletadónak!
(#) k válasza icserny hozzászólására (») Máj 10, 2012 /
 
Egyenlőre nem szeretnék minden perifériát 'feléleszteni', de valamennyi kell a gyakorláshoz:
- ledek alapként
- nyomógombok bevitelre
- lcd összetettebb adatok megjelenítésére

- az is lehet, hogy igazad van - nem szánok rá elég időt
(ez lehet hogy azért van, mert egy hét tanulás után a fenti perifériákon kívül ment az
- AD konverzió (hőmérséklet mérés)
- SPI kommunikáció (hőmérő ic)
- soros port kezelése ( a mért adatokat pc-re küldtem)

továbbra is köszönöm a tanácsaidat, a te példaprogramjaidból tanultam a legtöbbet, csak amikor az oldaladra találtam akkor már úton volt a megrendelt gyakorlópanel, ezért nem az általad javasolt panellel dolgozom.
(#) vilmosd válasza k hozzászólására (») Máj 11, 2012 /
 
Nem tudom hogy volt-e rola szo, de ne kapkodj, mert az nem vezet jora (meg leversz valamit). Mar elmondtuk tobbszor. De... ha CCS C-t akarsz hasznalni, akkor ne a Picula projekt peldait hasznald. Viszont ha a CCS C peldait hasznalod, akkor ne C18-at hasznalj. Kuldtem egy marok mintapeldat ugye. Probald meg szisztematikusan, lepesrol lepesre az elsotol egyenkent vegigprobalni. Persze kezdheted az utolsoval is, de akkor nem fogsz megerteni semmit, es a szintaktikat sem fogod atlatni. Lassan peldankent, olvasva a PIC doksit hidd el gyorsan bele lehet jonni. Mar elszurtal sok napot, es meg nem csinaltal semmit. Ezert mondtam a legelejen, hogy felesleges egy szuper univerzalis panelt megvenni, mert egy kis munkaval, keves penzzel Te magad tudsz kimondottan gyakorlasra valo panelt gyartani. A bonyolult HW-nel belekavarodsz a sok kiegeszitobe, es nem tudod mitol kellene mukodnie. De vegulis ha azt akarod hogy jo legyen, ugy csinalod ahogy neked tetszik, de utana ne sirankozz.
(#) pontazok hozzászólása Máj 22, 2012 /
 
Sziasztok 3x4-es billentyűzetet szeretnék CCS-ben kezelni de valami nem stimmel. A csatolásban benne van a driver.

Egy char változót létrehozok a lenyomott gomb értékének.
Aztán ugye kbd_init(); majd a változó egyenlő kbd_getc();
Mikor a kapott értéket kirakom LCD-re, akkor csak vízszintes vonalak jellennek meg. Tehát egy karakteren belül egy sor aktív egy pedig nem.
Valaki nem tudja mi lehet a probléma?

flex_kbd.c
    
(#) sysy válasza pontazok hozzászólására (») Máj 22, 2012 /
 
Bocsánat, hogy nem elemeztem végig a működését, de ránézésre is van néhány szintaktikai hiba benne:

short int ALL_ROWS (void) (a short utáni int nem kell, mert csak egy visszatérő értéke lehet a függvényeknek és a programból kiderült, hogy a short a jó tipus)

az alábbi két sorban nem byte a változó tipusa, mert olyat nem használ a CCS, hanem int vagy char:

static byte kbd_call_count;
static byte col;

Egyébként lehet, hogy akár működhetne is a program.
(#) _vl_ válasza sysy hozzászólására (») Máj 22, 2012 /
 
A "short" és a "short int" az ugyanaz a típus, csak az egyik a rövidített neve neki.
(#) vilmosd válasza pontazok hozzászólására (») Máj 22, 2012 /
 
A driver tokeletesen mukodo, en is hasznalom. Lenyeges hogy a ROW bemeneteket fel kell huzni 5 V-ra. Ez a driver a lenyomott gomb ASCII kodjat adja vissza, tehat rogton irhatod a LCD-re barmi varazslas nelkul. Ja a masik fontos dolog, hogy
  1. #define KBD_DEBOUNCE_FACTOR 33
helyett
  1. #define KBD_DEBOUNCE_FACTOR 5
legyen, es pl TIMER0 IT-bol periodokusan hivjad, mert maskepp nem fog csinalni semmit, vagyis igen, de nem gyozod kivarni. En 10-20 mS idokozokben hivom, igy 100-200 mS utan adja vissza a kodot.
(#) pontazok válasza vilmosd hozzászólására (») Máj 22, 2012 /
 
Köszönöm a válaszokat.
Este majd letesztelem a javaslatokat!
(#) sysy válasza _vl_ hozzászólására (») Máj 22, 2012 /
 
Igazad van, csak én a rövidített kifejezést használom, azért volt nekem furcsa.
A byte ügyében is ostobaság, amit írtam?
Következő: »»   73 / 118
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