Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   28 / 153
(#) icserny válasza bazs hozzászólására (») Nov 29, 2010 /
 
Lásd pl. itt!
(#) Fittnessz hozzászólása Nov 29, 2010 /
 
Hello,

Egész nap az asszinkron uart adatküldést próbáltam megírni.
Beállítok egy karaktert amit kiszeretnék küldeni és a szimulátorom uart figyelő ablakában teljesen más karakterek jelennek meg. mcc18-al fordítottam a kódot.

  1. void main (void){
  2.  
  3.         serial_setup();
  4.  
  5.         putch('b');
  6.         putch('c');
  7. }
  8.  
  9.  
  10. void serial_setup(void)
  11. {
  12.  
  13.         SPBRG = 12;                     //      Baud Rate beálltása
  14.         TXSTA1bits.BRGH = 1;            //      Nagysebességű adatátvitel
  15.         BAUDCON1bits.BRG16 = 0;         //      8-bit Baud Rate generátor
  16.  
  17.         TXSTA1bits.SYNC = 0;            //      Asszinkron mód
  18.         RCSTA1bits.SPEN = 1;            //      Sorosport pin-ek engedélyezése
  19.         RCSTA1bits.CREN = 1;        
  20.         RCSTA1bits.SREN = 0;
  21.  
  22.         PIE1bits.TXIE = 0;                              // Küldési megszakítás engedélyezése
  23.         PIE1bits.RCIE = 0;
  24.        
  25.         TXSTA2bits.TX9 = 0;             //      9 adat bit
  26.         RCSTA1bits.RX9 = 0;
  27.        
  28.         TXSTA1bits.TXEN = 0;            // Adás engedélyezése
  29.         TXSTA1bits.TXEN = 1;            // Adás engedélyezése
  30.        
  31. }
  32.  
  33. /* Karakter írása a sorosportra */
  34. void putch(unsigned char c)
  35. {
  36.         while(!PIR1bits.TXIF);                  //TXREG kiürül -> TXIF 1-be áll
  37.  
  38.         TXREG1=c;
  39. }


Fogalmam sincs hol hibázok.
Nagyon örülnék, ha tudnátok ötletel adni, mit rontottam el.
Köszi előre is!!
(#) watt válasza Fittnessz hozzászólására (») Nov 30, 2010 /
 
Én a TRMT-t szoktam figyelni, de egyébként a konfig jónak tűnik.
A megszakításokat is be szoktuk állítani, akkor is, ha nem használjuk.

Próbálj meg az első elküldött karakter utáni sorra break pontot állítani, a TXREG1-ben ott kéne lennie az elküldött karakternek(ez egyébként független a Baud Rate beállításaitól is). Soros portot még nem szimuláltam küldésre, de valami rémlik, hogy nem biztos, hogy jól kezeli a szimulátor...

Megjegyzem, hogy erre vannak beépített függvények!
pl.
  1. #include "usart.h"

  1. OpenUSART (USART_TX_INT_OFF  &
  2.            USART_RX_INT_OFF      &
  3.            USART_ASYNCH_MODE &
  4.            USART_EIGHT_BIT   &
  5.            USART_CONT_RX     &
  6.            USART_BRGH_HIGH, 12);

  1. while (BusyUSART());
  2. WriteUSART(13);

Attól eltekintve, hogy sok gyári ajánlásban is látható a while(BusyUSART()); megoldás, ebbe simán elakadhat a program, tehát itt hibakezelést kell beiktatni, pl. 10..100 kísérlet után hibával visszatérő ciklust, ha valami miatt az USART nem szabadulna fel. A gyári rutinok felépítését a usart.h-ban lehet megnézni...
(#) Fittnessz válasza watt hozzászólására (») Nov 30, 2010 /
 
Szia watt!

Köszönöm a válaszod! Teszteltem a te kódodat is.
Szerintem a szimulátorral lesznek a gondok a TXREG1-be gyakorlatilag nem kerül semmi adat. Ennek ellenére kiküld néhány érdees karaktert. Egyébként a PIC18 Simulator IDE-vel szimulálom 4 Mhz-en.

Van pár kérdésem, melyek válaszát sejtem, de szeretnék megerősítést kapni
Miért szokták a megszakításokat beállítani?
A BusyUSART-ban miért akadhat el a program?
Illetve a WriteUSART(13)-sor miért 13??

Köszi mégegyszer a válaszod!!!
(#) watt válasza Fittnessz hozzászólására (») Nov 30, 2010 /
 
-Biztonságból. Nem garantálja semmi, hogy a reset után biztosan beállnak a regiszterek. Egy számítástechnikai eszköz nem garancialevél.
-Mert, ha nem szabadul fel puffer, akkor nem teljesül a feltétel. Igazából ez inkább a vételnél kritikus, adásnál nem annyira, miután fura lenne, ha nem menne ki minden bit a hardveren, de ki tudja...
-13? Enter...
(#) kkrisz75 hozzászólása Nov 30, 2010 /
 
Sziasztok.

Eddig Parsiccal, modulrendszerű... al programoztam a pic-et. Nagyon jó is volt. Sok mindent sikerült megoldani.

Most bele szaladtam egy olyan dologba amihez C kell, mert parsicban nem lehet megoldani.

Sose programoztam még, illetve anno commodore 16on basicban

Szóval tudnátok tanácsot adni, hogyan induljak, nulláról kezdve?

Kaptam egy Pic c compilert (PCWH compiler), egy ismerőstől, azt mondja ő azt használja.

Aztán már csak leírás, ismeret anyag,, és ha lehet magyarul. Az angolom annyiban kifúj, hogy nem veszek el a világban.

Üdv mindenkinek.
(#) watt válasza kkrisz75 hozzászólására (») Dec 1, 2010 /
 
Válasz inkább gyári fordítót, letölthetőek(microchip Hi-Tech, illetve C18, C30. stb.).
Azokhoz rengeteg példa és leírás van, igaz angolul, de ezt nem kerülheted meg, legalább hasznodra lesz ez is. Nem látom értelmét mindenféle mások által kreált fordítókörnyezet használatának, mert ha elakadsz, alig lesz valaki, aki segítsen...
Javaslom a kereső használatát, miután sok linket adtunk már hasonló kérdésekre, szerintem nemrég is volt, lehet, nem ebben a topicban, nézz körül és találni fogsz hivatkozásokat. Az ilyen témájú topicokat egyébként is el kéne olvasni.
Ha a Basic jól ment, akkor más nyelv is jól fog menni, a logika ugyanaz, csak a szintaktika más...
(#) cassis hozzászólása Dec 1, 2010 /
 
Mi a különbség a HI-TECH fordítók esetében a
PICC (picc.exe)
PICC-18 (picc18.exe)
között?
Gondolom a PICC-18 a 18-as sorozatra irt programokat tudja fordítani, de akkor mit tud a PICC?
(#) lidi válasza cassis hozzászólására (») Dec 1, 2010 /
 
Logikusan a 16, 12, 10 -es sorozatra épülőket.
(#) kkrisz75 válasza watt hozzászólására (») Dec 1, 2010 /
 
Le szedtem egy oldalról a Hi-Tec programját.
Bővebben: Link
A baj, hogy fel is telepítettem, csak éppen nincs indítható file. Csak pdf, és egy uninstall állomány. Hol kell ebben írni a programot?

Ez után kerestem tovább, és találtam egy PICC Bővebben: Link programot, amit ha felteszek, elindítok akkor a program elindul, de szinte bármire kattintok, hozzáférési hibakóddal kidob. Még a help, contents-nél is lefagy a program. Ha rendszergazdai, vagy xp kompatibilis módban indítom akkor is.

Az MPLAB IDE és a PICKit2 v2.61 jól működik.

Kerestem itt az oldalon is, de direkt linket nem igen találtam, csak azokat amiket én magam is megtaláltam.
(#) icserny válasza kkrisz75 hozzászólására (») Dec 1, 2010 /
 
Idézet:
„Hol kell ebben írni a programot?”
Notepad editorban. Ha felrakod az MPLAB IDE plugin-t is, akkor az MPLAB-ban is írhatod.

Figyelembe kellene venni, hogy te egy fordítót telepítettél, nem editort, mégkevésbé fejlesztői környezetet. A fordító egy parancssorból futtatható jószág, mint ahogy a C18 is az. Az MPLAB plugin segít abban hogy az MPLAB IDE együttműködjön az új fordítóval.
(#) kkrisz75 válasza icserny hozzászólására (») Dec 1, 2010 /
 
Ok.

Alapban számomra úgy természetes, hogy meg szerkesztem és le is fordítom egyből.

Akkor máshogy keresek a neten. Kell egy editor vagy fejlesztő környezet és a fordító.

Ahhoz, hogy ne csak gépelni tudjak, hanem meg tanulni is megírni a programot. Vagy rosszul gondolom?
(#) potyo válasza kkrisz75 hozzászólására (») Dec 1, 2010 /
 
Idézet:
„Alapban számomra úgy természetes, hogy meg szerkesztem és le is fordítom egyből.”


Elolvastad amit icserny írt? Pontosan erre való a Hi-Tech fordítóhoz való MPLAB plugin. MPLAB-ban megnyitod a fájlt, szerkeszted, stb. aztán kattintasz a Build ikonra és fordít, majd másik ikonra kattintva be is égeti vagy épp szimulálja.
(#) watt válasza kkrisz75 hozzászólására (») Dec 2, 2010 /
 
Látod ilyenkor megy el az ember kedve. Azt írtam, hogy gyári programok, még a microchip-et is odaírtam, hogy egyértelmű legyen. Erre te fene tudja honnan töltögetsz! Nem állítom, hogy nem a Hi-TechC-t szedted le, de ha igen ,akkor nem a megfelelő telepítő környezettel, mindenesetre én nem vagyok meggyőzve, hogy jót szedtél le!
Ha egyszer gyári a program, akkor próbáld meg a gyártó oldaláról leszedni(figyelj, hogy milyen oprendszered van!)!
Segítek!
www.microchip.com
  1. Ott: Design / Development Tools
  2. Ott a Development Tools Features ablakban vannak a fejlesztő programok, letöltöd...
  3. Telepítéskor, ha van olyan kérdés, hogy épüljön-e be az MPLAB-ba, akkor azt kiválasztod!
(#) kkrisz75 válasza watt hozzászólására (») Dec 2, 2010 /
 
Jót, a gyárit szedtem le elsőre, mint ahogy írtad.(figyeltem rád)

Vártam is hogy valamit feldobjon telepítéskor de a könyvtárnéven kívül semmit. (Csak a lenti fileok mentek fel)

De átnéztem a programokat amik fent vannak már a gépen és amit kaptam lemezen MPLAB telepítő csomag, automatikusan fel tette a Hi-tec programot is, meg pár dolgot egyszerre.

Így természetesen nem dobott fel semmit mikor külön akartam fel tenni, hanem magára tette ugyan azon beállításokkal.

Szóval a MPLAB alatt eddig is tudtam volna szerkeszteni, fordítani írni. Csak eddig nem használtam az íráson kívül semmit belőle.

Közben szereztem egy programozzunk C nyelven könyvet. Nem tudom annak van-e értelme, de alapozásnak talán jó?
(#) watt válasza kkrisz75 hozzászólására (») Dec 2, 2010 /
 
Nekem sem jutott eszembe, hogy ez feltelepszik magától.
Persze, mindegyik C könyv jó, és a neten is sok van, csak keresgélni kell, még magyarul is lehet találni, pl. keress rá a C jegyzetek-re.
(#) icserny válasza kkrisz75 hozzászólására (») Dec 2, 2010 /
 
Ezt az oldalt is érdemes nézegetni.
(#) kkrisz75 válasza icserny hozzászólására (») Dec 2, 2010 /
 
Keresgéltem ahogy írtátok, és a címszavakból már érthető mire jók a példák.

Sok olyat találtam már így is amiből kelleni fog nekem ahhoz amit csinálok...

Köszi...
(#) Jossz hozzászólása Dec 2, 2010 /
 
Sziasztok!
Úgy alakult, hogy a CCS C mellett meg kell tanulnom az MCC18 és MCC30 C nyelvet is, ill. ezekkel a compilerekkel (PIC18F és dsPIC30 MCU) kell többet dolgoznom a jövőben. Azt kérdezném, hogy tudtok-e ezekhez a nyelvekhez is olyan letölthető mintaprogram gyüjteményt valahol, mint amilyen a CCS C-hez van mellékelve? Ez anno nagy segítség volt amikor tanultam a nyelvet, ill. az MCU specifikus feladatokat elemezgettem. Ja és nem az ANxxxx dokumentációra gondolok a MicroChip-nél.
Előre is köszönöm a segítséget.

Üdv: Jossz
(#) icserny válasza Jossz hozzászólására (») Dec 2, 2010 /
 
Olyat nem tudok, de a honlapomon (PICula, PICCOLO, PIC-kwik) találsz példaprogramokat. Az utóbbi szoftver mellékletében egy csomó olyat is találsz, amelyeket átvettem, de még nem volt időm foglalkozni velük. Bővebben: C30 példaprogramok
(#) Jossz válasza icserny hozzászólására (») Dec 2, 2010 /
 
Hóóó, Icserny, nagyon köszönöm, ez szinte minden lényegeset tartalmaz!!!
Gondolom, ezek mind mennek dsPIC30-al is, igaz? Persze, nyilván a megfelelő helyeken a MCU típust átírva értem...
(#) frecsko hozzászólása Dec 2, 2010 /
 
Sziasztok.
MPlabhoz letöltöttem a Hitech plugint. Feltelepítettem, meg is tudom nyitni a c nyelven írt programot, de ha beleírok akkor nem tudom lefordítani. Kell még valamilyen progi? Vagy én vagyok béna
(#) watt válasza frecsko hozzászólására (») Dec 2, 2010 /
 
Ha nem írsz bele, akkor le tudod? Ha nem akkor írd meg mi a hibaüzenet!
(#) frecsko válasza watt hozzászólására (») Dec 2, 2010 /
 
A build gombra se tudok rákattintani. Szürke marad hiába van megnyitva a fájl.
(#) icserny válasza Jossz hozzászólására (») Dec 2, 2010 /
 
Idézet:
„Gondolom, ezek mind mennek dsPIC30-al is, igaz?”
Ott is hasonlóan mennek a dolgok, de a Mississippi Állami Egyetem oktatói által kidolgozott támogatói programkönyvtár elsősorban a PIC24HJ és dsPIC33 típusokat támogatja. Arra számíts, hogy az Explorer 16-os demókhoz hasonlóan lesznek kisebb eltérések a "fősodortól", főleg az oszcillátor bekonfigurálásánál.

De ez az első öt fejezetnél nem fog gondot okozni, mert azokat szigorúan az MPLAB szimulátorában kell végigcsinálni!!!
(#) potyo válasza frecsko hozzászólására (») Dec 2, 2010 /
 
Projektet kell csinálni, ahhoz hozzáadni a fájlt és akkor rá lehet majd kattintani.
(#) icserny válasza frecsko hozzászólására (») Dec 2, 2010 /
 
Idézet:
„Kell még valamilyen progi?”
Ha az MPLAB IDE, a Hitech MPLAB plugin és a Hitech C fordító is fenn van (ez utóbbiról nem írtad, hogy fenn lenne), akkor nem kell más program. Viszont be kell konfigurálni a nyelvi eszköz elérési útvonalait, és nemelég egy C programot beírni, hanem egy projektet is létre kell hozni.
(#) frecsko válasza icserny hozzászólására (») Dec 2, 2010 /
 
HI-TECH PICC-lite V9.60PL1 van fent még.

Megcsináltam a projektet, nem tudom hogy jót választottam e a "active toolsuite" -nál. Én hagyta, a Hi-tech ansi C compileren. Hozzáadtam is a fájlt és tényleg már kattintható a Build-re, de ezt a hibát dogta ki: Build C:\Nulláról a robotokig próba programok\1\w for device 16F877A
Using driver C:\Program Files\HI-TECH Software\PICC\LITE\9.60\bin\picl.exe

Make: The target "C:\Nulláról a robotokig próba programok\1\maximus1.obj" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\LITE\9.60\bin\picl.exe" -C "C:\Nulláról a robotokig próba programok\1\maximus1.c" -q --chip=16F877A -P --runtime=default --opt=default -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error [141] C:\Nulláról a robotokig próba programok\1\maximus1.c; 8.20 can't open include file "16f877A.h": No such file or directory

********** Build failed! **********
(#) potyo válasza frecsko hozzászólására (») Dec 2, 2010 /
 
pic.h-t includold, akkor a Select Device alatt kiválasztott chipnek megfelelő header fájlt automatikusan ki fogja választani.

A másik, hogy elérési útban SOSEM használunk szóközt, ékezetes betűt, bármit, ami az angol abc betűitől, számoktól és aláhúzásjeltől eltér, illetve nem tanácsos túl hosszú elérési utat sem használni. Tehát a "Nulláról a robotokig próba programok" mappát nevezd át pl. "proba" névre. Ha majd így működik, akkor kisérletezhetsz a beszédesebb elérési utakkal, de egyelőre minden hibalehetőséget ki kell zárni.
(#) frecsko válasza potyo hozzászólására (») Dec 2, 2010 /
 
pic.h hol találom?
Az elérési utat beraktam a gyökérkönyvtárba, a legrövidebb elérési útvonal, ahogy mondtad.
Következő: »»   28 / 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