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   7 / 118
(#) sysy válasza Prinner hozzászólására (») Aug 5, 2007 /
 
Kicsit sűrűre sikerült a program

Nem bántásból mondom, de: úgy látom, hogy C nyelven írsz Basic programot. A C nyelvnek van egy nagyon jó tulajdonsága, a struktúráltsága. Így nagyon nehezen lehet (sehogy) a programodat elolvasni. Amúgy a C általában is nehezen olvasható. Ezért nagyon sűrün kell kommentezni, szinte minden sorát. Ez szinte a túlélés egyik eszköze.

Visszatérve a programodra. Nem voltam képes kihámozni belőle a lényeget. Mi lenne, ha azt csinálnád, hogy a függvény meghívásakor mind a négy oszlopot aktvan meghajtod és a visszatérő 4 sorból eldöntöd, hogy egyáltalán nyomnak-e gombot. Ha nem, akkor void a visszatérési érték. Ha bármelyik sorban úgy látszik, hogy mintha gomb nyomás lenne, akkor leszkenneled azt a sort és oszlopot amelyiket valóban nyomják. A sor és oszlopszámból Pl. egy case utasítással ki lehet hámozni, hogy melyik gomb is volt megnyomva. Ekkor ez lesz a függyvényed visszatérési értéke. Ezzel aztán mindenki azt csinálhat amit akar. Szerintem tized ennyi programból meg lehet valósítani ezt a módozatot.


Ja, és nem kell GOTO utasítások garmadája sem.

sysy
(#) sysy válasza Prinner hozzászólására (») Aug 5, 2007 /
 
Bocs, hogy elmerülök a részletekben, de ezt én egyszerűbben írnám:

CIMKE:
if(PORTD=0B11110000) //var, amig nem valtozik PORTD
GOTO CIMKE;

ennyi elég lenne:
while(PORTD=0xF0); //var, amig nem valtozik PORTD

az utána következő sor nem is igazán kell:
else goto KBREAD;
KBREAD:
(#) brejti válasza sysy hozzászólására (») Aug 5, 2007 /
 
Helló!

Nem akarok kötekedő lenni, de az egy egyenlőség jel az értékadás, a kettő az egyenlőség feltételének viszgálata.
A billentyűzet kezelésnél ki lehet használni a PortB megszakítási lehetőségeket is.
üdv brejti
(#) hummer válasza sysy hozzászólására (») Aug 5, 2007 /
 
Sysy:

Köszi. Igazából eredetileg én is a TC-ben kombináltam (volna) össze, csak eltoltam valamit. Azután rájöttem, hogy mit és a könyv megkerült.
(#) sysy válasza hummer hozzászólására (») Aug 5, 2007 /
 
Na, örülök, hogy sikerült.

sysy
(#) sysy válasza brejti hozzászólására (») Aug 5, 2007 /
 
Igazad van! Dehát a kopipész kényelmessége figyelmetlenné tett.

sysy
(#) tibiiii00 hozzászólása Aug 6, 2007 /
 
hali mindenki

kellene nekem egy olyan leirás ahol fel vannak sorolava a ccs -hez való parancsok.
most ismerkedem a ccs-el.

ha tud valaki segíteni azt köszönöm.

üdv tibiiii00
(#) dpeti válasza tibiiii00 hozzászólására (») Aug 6, 2007 /
 
az bizony benne van a ccs helpjében...
nem ártana egyszer megnézni
(#) MPi-c válasza tibiiii00 hozzászólására (») Aug 6, 2007 /
 
... és a honlapjáról is letölthető.
(#) Prinner válasza sysy hozzászólására (») Aug 8, 2007 /
 
Köszi a tippet!
Megnézegettem amiket írtál, és sikerült összehozni a függvényt. Ez már jobb mint az előző, és müködik is.
Így néz ki:
*
*
*
*
*

A fórum használatának figyelmeztetés ellenére megszegése miatt a hozzászóls egy része törlésre került!
(#) Moderátor hozzászólása Prinner hozzászólására (») Aug 9, 2007
 
Felhívom becses figyelmedet ennek a hozzászólásodnak a végére deguss moderátor által írt kiegészítésre:
Idézet:
„Használjuk a [ c o d e = c ] tagot! [ / c o d e ]. Ezentúl ilyen hosszú, strukturálatlan programrészleteket csatolmányként kérünk illeszteni. Köszönjük. deguss”


Ebből a hozzászólásodból a kód-részt törlöm, legközelebb az egész hozzászólás törölve lesz, és kapod a warn-t is!
(#) sysy hozzászólása Aug 9, 2007 /
 
Helló Prinner!

Tegnap éjjel azért még elolvastam a leveledet! Ez már kezd hasonlítani egy C programra. Csak így tovább!
Viszont nem jöttem rá, hogyan találja ki a programod azt, hogy melyik sor illetve oszlop találkozásánál nyomják a gombot. Szerintem ott valahol akarod megcsinálni, ahol a felső 4 és az alsó 4 bitet megcseréled kimenet illetve bemenet szempontjából.
Sajnos nem tudtam lekövetni, hogy ilyenkor mit is akasz csinálni.

sysy
(#) Prinner válasza sysy hozzászólására (») Aug 9, 2007 /
 
Üdv sysy!
A függvényhívás előtt portb felhúzóellenállásokat bekapcsoltam.
Alaphelyzetben a felső 4 bit bemenet, az alsó 4 kimenet, méghozzá 0 szintű. Egy do while ciklussal kezdődik az egész, csak akkor belőle tud kilépni, ha PORTB nemegyenlő 0xf0-val. (azért do while, mert amíg nem történik kilépés, rotary encodert akarok figyelni).

Ha egy gomb lenyom, akkor kilép a do-while-ból, és PORTB értékét bemásolja "keyb"-regiszterbe. A felső 4 bit valamelyike hordozza az infót, azaz egyik bit 0 értékű. Ezzel megvan az oszlop.
TRISB cseréje után ki kell olvasni a sort:
Mivel most KEYB regiszter alsó 4 bitje 0000, mindegyiket át kell írni 1111-re, hogy ide be lehessen maszkolni PORTB értékét (hozzáadok 0x0f-et).
PORTB felső 4 bitje 0000, ezért, hogy adatvesztés nélkül össze lehessen maszkolni "KEYB"-el, hozzá kell adni 0xf0-át.
Összemaszkolás után a KEYB regiszter felső 4 bitje tartalmazza az oszlop információt, és az alsó 4 a sorokét.
Ezután a switch case utasítássorozattal dekódoltam az oszlop/sor pozíciót hexává, és karakterré.
(#) sysy válasza Prinner hozzászólására (») Aug 9, 2007 /
 
Áhá! Ügyes!
Most már értem. Határozottan fejlődsz.

sysy
(#) sysy hozzászólása Aug 15, 2007 /
 
Tudom, hogy unjátok már az orcámat. De!

Offtopic

Kicsit átírtam egy bootloadert, amit így már lehet használni az MPLAB alatt mint programozót. Semmi nem kell hozzá, csak egy soros port. Azon keresztül lehet betölteni a progit a PIC-be. MPLAB alatt! Csak fel kell installálni az MPLAB alá az AN851 Quick Programmer opciót. Működik 18F452/4520 és 18F4550 MCU-val. Sajnos többet nem tudtam kipróbálni.
Feltettem a MICROCHIP levlistájára az anyagot, onnan a linkeken le lehet szippantani a hozzávalókat. Kapcsolási rajz, boot.hex és fotók.

Link: http://forum.microchip.com/tm.aspx?m=275305

Ontopic

A CCS fordítóval sokat boxoltam mire rá tudtam venni, hogy a bootloader utánra orgolja a programot. Lehet, hogy ez mindenkinek természetes, de nekem valahogy nem ment eddig. Nos, ez most sikerült és a megszakítások is mennek, pedig azokat is remappolni kellett. A reset vektor 0x200 a High Priority Interrupt a 0x208 és a Low Priority Interrupt vektora a 0x218 címre került. A linken letölthető képekben látszik a próbaprogram forráskódjának egy darabja. Abban meg lehet nézni az orgolást, illetve a megszakítások remapját. Végül is rettentően egyszerű a dolog, mindössze két sor az egész. De mire rájöttem!

sysypet
(#) sysy hozzászólása Aug 23, 2007 /
 
Sziasztok!

Már régen dumcsiztunk itt a CCS compilerről. Hátha fel tudom egy kicsit dobni a topic hangulatát. A CCS-es fiúk megküldték nekem a 4.049 verziót. Mindenféle jóval megspékelve. Ugye, értitek! Jóval.
Egy marék kellemetlenséget kijavítottak benne és további új PIC típusokat is támogat.
Ha kedvetek van, akkor inenn letölthetitek.

Link: http://rapidshare.com/files/50649806/CCS4049.RAR

sysy
(#) raron válasza sysy hozzászólására (») Aug 23, 2007 /
 
Köszönjük a sok "Jó"-t
(#) Prinner válasza sysy hozzászólására (») Aug 23, 2007 /
 
Üdv.
5 jegyű BCD számot akarok átalakítani 17bites binárissá, de a ccs-ben nem találtam hasonló célú parancsokat. Akkor ezek szerint írni kellene egy ilyen függvényt, vagy mégis van hozzá valamilyen kiegészítés?
(#) potyo válasza Prinner hozzászólására (») Aug 23, 2007 /
 
Lehet, hogy egy sor miatt nem tesznek előregyártott függvényeket:

  1. eredmeny=A*10000+B*1000+C*100+D*10+E


A, B, C, D és E a BCD számjegyei
(#) Prinner válasza potyo hozzászólására (») Aug 23, 2007 /
 
Köszi
Így már leesett , már két napja ezen rágódtam.
(#) Prinner hozzászólása Aug 28, 2007 /
 
Üdv.
Spi használatához milyen headereket kellenek?
A ccs reference manual-ban azt irták, hogy "Constants are defined in the devices .h file." tehát a pic headerjében már benne van, ami kell.
A setup_spi parancsot viszont nem ismeri fel a fordító:
  1. setup_spi(spi_master |spi_l_to_h | spi_clk_div_16 );

Megnéztem az ex_spi.c-t, abban benne volt a input.c és a 9356spi.c, de ezekkel sem tudta lefordítani.
???
(#) sysy hozzászólása Okt 3, 2007 /
 
Bocs, hogy megzavarom a fórum csendjét, de a CCS fiúk megküldték nekem a legfrissebb compilert, ami a keresztségben 4.057 nevet kapta. Ha nem sértem meg a nagyérdeműt, akkor közkincsé teszem.

Bővebben: Link

Egészségetekre.

sysy
(#) Norberto válasza sysy hozzászólására (») Okt 3, 2007 /
 
Köszönjük!
(#) sirály12 hozzászólása Okt 4, 2007 /
 
Bocs, hogy kötbekotyogok, é tudom, nem szép ilyet kérni, de nem tud valaki

cc5x full-t vagy keil fullt valaki?

Nagyon megköszönném.

Ha baj, hogy ide írtam, akkor egy modi kérem törölje.
(#) sysy válasza sirály12 hozzászólására (») Okt 4, 2007 /
 
Asszem nekem van Keil is és CC5X, de nem tudom, hogy melyik verzió. Valszeg a legfrissebb. Melyik kellene neked?

sysy
(#) sirály12 válasza sysy hozzászólására (») Okt 4, 2007 /
 
Ha lehet mind a kettő.

Elküldenéd az email címemre? npeti12@freemail.hu

Előre is küszönöm.


(akkor mégiscsak lesz mit csinálnom a hétvégén)
(#) sirály12 válasza sysy hozzászólására (») Okt 4, 2007 /
 
De ha valahol a neten megtalálható, akkor elég a cím is.

Köszi.
(#) sysy válasza sirály12 hozzászólására (») Okt 4, 2007 /
 
Hát, nem nagyon található meg. Akkor az ember csak bekalapálja a Gugliba, oszt jónapot. Megkeresem neked a progikat. Valahova learhiváltam őket, de mivel nem ezeket használom meg kell, hogy keressem.

sysy
(#) sirály12 válasza sysy hozzászólására (») Okt 4, 2007 /
 
Köszi.
(#) sirály12 válasza sysy hozzászólására (») Okt 4, 2007 /
 
Nem akarok hálátlannak látszani, de a CC5X-et is elküldöd?

Előre is kösz.


u.i.: kösz a keilt, már fel is raktam.



Következő: »»   7 / 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