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   83 / 118
(#) kissi válasza messer hozzászólására (») Dec 23, 2012 /
 
Szia!

Ha az MPLAB-ban kiválasztod a PIC-et, akkor is írja ...!

Steve
A hozzászólás módosítva: Dec 23, 2012
(#) messer válasza kissi hozzászólására (») Dec 24, 2012 /
 
Azt nem írja, hogy kell-e hozzá header vagy nem.
(#) kissi válasza messer hozzászólására (») Dec 24, 2012 /
 
Szia!
Szerinted itt mire gondol ?! Kellemes ünnepeket !
Steve
Nem kell minden mondat végén 2 enter, úgy is érthető. --moderator
A hozzászólás módosítva: Dec 24, 2012

DEVICE.jpg
    
(#) messer válasza kissi hozzászólására (») Dec 25, 2012 /
 
Köszönöm, neked is kellemes ünnepeket kívánok. Megértem ám kioktató animáció nélkül is
Amúgy köszönöm valóban elkerülte a figyelmemet ezen kicsi ablak tartalma.
(#) vicsys hozzászólása Dec 31, 2012 /
 
Van arra lehetőség (és melyik típusoknál), hogy a PIC User IDs-ét átírjam, szoftverből? Jó lenne nyomon követnem a verzió változataimat.
(#) kissi válasza vicsys hozzászólására (») Dec 31, 2012 /
 
Szia!
Nem próbáltam !
Steve

Vicsys.jpg
    
(#) vicsys válasza kissi hozzászólására (») Dec 31, 2012 /
 
Sajnos, valami gubanc van. Nagyon nem szereti...
(#) kissi válasza vicsys hozzászólására (») Dec 31, 2012 /
 
Milyen PIC-el próbálod és mi a probléma?
szerk.: Most nézem, hogy a CCS topicban vagyunk én az asm-hez írtam ( látszik a kép fejlécén!)!
Steve
A hozzászólás módosítva: Dec 31, 2012
(#) vicsys válasza kissi hozzászólására (») Dec 31, 2012 /
 
PIC18F452 volt kéznél. Expecting an opcode mnemonic __idlocs
(#) vicsys válasza kissi hozzászólására (») Dec 31, 2012 /
 
Végül is találtam megoldást. (automatikus idő/dátum bélyegző)
A main.h-ban:
  1. #org 0x1EE0, 0x1EEF
  2. const char Build_Date[] = __DATE__;
  3. #org 0x1EF0, 0x1EFF
  4. const char Build_Time[] = __TIME__;

és az ellenőrzés:
  1. printf("Build: \%s  \%s\n\r", Build_Date, Build_Time);

Működik, teszteltem. Az elv alapján akár automatikus verzió számláló is írható.
A hozzászólás módosítva: Dec 31, 2012

ver.jpg
    
(#) nagy_david1 hozzászólása Jan 11, 2013 /
 
Üdv!
Szeretném ha valaki elmagyarázná és jópár egyszerűbb mintakódot is küldene beérkező jelek feldolgozására, kibocsájtására. Arra gondolok, hogy hogyan lehet pl 1) egy érkező frekvenciatartományt integer számokká átalakítani, hogy tovább dolgozni lehessen vele vagy 2) egy távirányítótól érkező jeleket feldolgozni vagy küldeni 3) szenzoroktól érkező digitális jelet, stb. Érdekelne a kód felépítése, hogy mik az alaplépések de mivel vizuális típus vagyok ezért még jobban örülnék pár mintakódnak. Igazából arra sem jöttem rá, hogy milyen kulcsszóval kéne keresgéljek. Nagyon szépen köszönöm előre is.
Szép napot!

(#) vilmosd válasza nagy_david1 hozzászólására (») Jan 11, 2013 /
 
A feltelepitett CCS C tartalmaz egy nagy marok mintapeldat. Mire vegigprobalod oket mar tudhatsz mindent.
(#) djsms hozzászólása Jan 16, 2013 /
 
Helló!

16f676-ot szeretnék használni belső osszcillátorral, de nem sok sikerrel... Pic wizard alatt ugyan kiválasztom a belsőt, de lejjebb a konfigjánál már nem lehet bekapcsolni sem... Külsővel működik szépen. Véletlenül 16f677-et választottam ki és úgy be lehetett kapcsolni 4MHz-re a belsőt. Úgy el is indult egy szimpla "hello world" jellegű led villogtatás, de pl soros kommunikáció meg az adc már nem akar működni 4.104-em van, lehet kellene valami újabb verzó?
(#) sysy válasza djsms hozzászólására (») Jan 16, 2013 /
 
Kódrészlet?

Egyébként a 16F676-ban nem lehet szoftveresen be/ki kapcsolgatni a belső oscillátort. (ha jól tudom) Ezért a wizard sem engedi pöcögtetni a nemlétező bitet. Ezt a FUSES bitekkel egyértelműen beállítod és megy, de csak 4MHz-en, nincs választási lehetőség itt sem.!

#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
(#) djsms válasza sysy hozzászólására (») Jan 16, 2013 /
 
  1. #include <16F676.h>
  2. #device adc=8
  3.  
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  6. #FUSES NOPROTECT                //Code not protected from reading
  7. #FUSES NOBROWNOUT               //No brownout reset
  8. #FUSES MCLR                     //Master Clear pin enabled
  9. #FUSES NOCPD                    //No EE protection
  10. #FUSES NOPUT                    //No Power Up Timer
  11. #FUSES BANDGAP_HIGH          
  12. #FUSES RESERVED                 //Used to set the reserved FUSE bits
  13.  
  14. #use delay(clock=4000000)
  15.  
  16. void main()
  17. {
  18.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  19.    setup_adc(ADC_CLOCK_DIV_2);
  20.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  21.    setup_timer_1(T1_DISABLED);
  22.    setup_comparator(NC_NC);
  23.    setup_vref(FALSE);
  24.    // TODO: USER CODE!!
  25. do
  26. {
  27.  
  28. output_bit( PIN_C1, 0);
  29. delay_ms( 1000 );
  30. output_bit( PIN_C1, 1);
  31. delay_ms( 1000 );
  32.  
  33. } while(true);
  34. }


Az user részen kívül mindent a wizard írt be, de már ez sem fut le!
Külső kvarcra téve (és azt beforrasztva) megy csak.
Viszont ha ezt (#include <16F676.h>) átírom 16F677.h-ra akkor működik! Csak hát az ugye nem a saját headerje ezért pl már az A/D-t nem kezeli jól...
Letöltöttem a legfrissebb demót is (4.140) de azzal sem jó csak az előbbi trükkel.
Bekapcsoltam a clockoutot is, de el sem indul a pic! Szkóp nem mutat semmi órajelet...
(#) djsms hozzászólása Jan 16, 2013 /
 
Lenne egy másik projektem is. Egy napelemes rendszernél kellene áramot és feszültséget mérnem, illetve ezeket ip alapon egy pc-n megjeleníteni. Minél egyszerűbbnek kellene lennie és a lehető legkisebb fogyasztásúnak. Mintavétel elég 1 percenként is akár, bár jobban tetszene, ha 1 perces mérések átlagát kérdezhetném le.
A kérdés az lenne, hogy melyik pic-et ajánlanátok, amit ccs-el kezelni is tudok és a lehető legkevesebb külső eszköz kelljen hozzá?
(#) djsms válasza djsms hozzászólására (») Jan 16, 2013 /
 
Ez a probléma meg is oldódott...
Csak egy kicsit gondolkodni kellett rajta és rájöttem, hogy elfelejtettem visszaírni a flash végére a kalibrációs értéket...
(#) sysy válasza djsms hozzászólására (») Jan 16, 2013 /
 
Szerintem bármelyik 18Fxxxx és fölötte tipus megteszi, aminek van 128k flash memóriája vagy több, 3-6kB RAM és legalább 8-10MIPS sebessége. Ha kényelmesen akarsz dolgozni, akkor veszel egy ilyen modulét vagy hasonlót
Bővebben: Link
és az SPI buszon keresztül tudod vezérelni. Vagy egy 18F97J60 + MAGJACK kombó ami használható lehet.
A Microchipnek és a CCS-nek is van TCP/IP stack programja ingyen letölthető, de inkább a Microchipest ajánlanám, mert a legújabb verzióba már sok szolgáltatás van belegyömöszölve.
ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP, TFTP stb.
Ehhez meg Microsoft C fordító is kell, vagy szólsz valamelyik fórumtársnak, akik téglával verik a mellüket az ANSI C kód hordozhatóság oltárán és átírja neked CCS C nyelvre
De elégé izzadságszagú lesz a project már most megmondom.
(#) icserny válasza sysy hozzászólására (») Jan 16, 2013 /
 
Idézet:
„téglával verik a mellüket az ANSI C kód hordozhatóság oltárán és átírja neked CCS C nyelvre”
Pech, de a CCS C nem ANSI C, úgyhogy az átírásra ne várj nagy tolongást.

(#) sysy válasza icserny hozzászólására (») Jan 16, 2013 /
 
Mármint a Microchip (HiTech) C az ANSI.
(#) icserny válasza sysy hozzászólására (») Jan 17, 2013 /
 
Idézet:
„Mármint a Microchip (HiTech) C az ANSI.”
Ez azt jelenti, hogy a HiTech C-ben írt programot könnyű áttenni C18-ba, vagy C30-ba.
(#) sysy válasza icserny hozzászólására (») Jan 17, 2013 /
 
Rátapintottál a lényegre!
Én azt tekintem hordozható kódnak, hogy ha kiemelsz mondjuk egy szoftweres PWM függvényt egy linux kódból, átírod a portokat és lefut a lelkes amateur 10F202 MCU-ból felépített, LED villogtató hardwerén. (ennél egyszerűbb MCU nem jutott hirtelen eszembe)

Manapság a kódot még C-ről C-re átírni is körülményes, hogy finoman fogalmazzak.
A CCS-t (szerintem) azért használják sokan, mint például én is, mert eléggé elkényeztetnek a sok beépített függvényekkel. Sajnos, a kényelemnek meg ára van. Kicsit sárga, kicsit savanyú, de legalább ehhez értünk. Vagy legalábbis ezt hisszük.
Én HiTech C-ről váltottam még 10+ évvel ezelőtt CCS-re, és egy kánaán volt a HiTech után.
Alapvetően mindenki a kisebb ellenállás felé halad, mint tudjuk. De lassan elérkezik az idő és megint válthatok a C18 és C30 irányába, mert a kor lassan megköveteli.

Mi a helyzet a Texas MCU-k és C fordítók terén? Ott csupa napfény és boldogság?
(#) djsms válasza sysy hozzászólására (») Jan 17, 2013 /
 
A lehető legegyszerűbb megoldást szeretném Nem kell több kapcsolatot lekezelni, nem akarok webszervert csinálni a pic-ből csak egyszerűen küldje el a mért értékeket egy (eepromban definiált) ip címre, akár udp-vel is. Bár snmp-nek jobban örülnék azért
Lassan 10 éve piceztem utoljára, azóta kicsit megújult a ccs is! Úgy gondolom már ez is elég jó kis kihívás újrakezdésként
(#) icserny válasza sysy hozzászólására (») Jan 17, 2013 /
 
Idézet:
„Manapság a kódot még C-ről C-re átírni is körülményes, hogy finoman fogalmazzak.”
Programja válogatja. Múltkor egy ATMega168-ra írt programot seperc alatt sikerült átírni MSP430-ra (Ethernet webszerver), anélkül, hogy az ATMEL MCU-kről bármi ismeretem volna. Működésre még ne sikerült bírni, mert az MSP430G2553-ban túl kevés a RAM (a duplája kellene...), de a kód 90 %-ban kompatibilisnek bizonyult (csak a fejléc állományok becsatolását meg az SPI kezelését kellett átírni)
Idézet:
„Mi a helyzet a Texas MCU-k és C fordítók terén?”
Microchip C18 és C30 tapasztalatokkal nem volt különösebb gondom ezekkel sem.
(#) szuperman hozzászólása Jan 28, 2013 /
 
Helló mindenki!

Van egy PIC12F508 -asom. Szeretném használni benne a Timert ,de sehogy sem jön össze. Valaki ki tudna segíteni egy rövid ccs bemutatóval? (500ms -onként kellene meghívódnia)

Előre is köszi!
A hozzászólás módosítva: Jan 28, 2013
(#) sysy válasza szuperman hozzászólására (») Jan 28, 2013 /
 
Pontosítsál egy kicsit. Minek kellene meghívódnia 500ms-onként, a Timernek? Vagy a Timer0-val akarsz időzíteni?
(#) szuperman válasza sysy hozzászólására (») Jan 28, 2013 /
 
Konkrétan egy ledet akarnék 1/2Hz -en járatni.
(#) jani87 válasza szuperman hozzászólására (») Jan 28, 2013 /
 
Gondolom figyelmetlenség volt, az 500 ms az 2 Hz, nem 1/2 Hz. De hogy valami hasznosat is mondjak, ebben a PIC-ben csak egy 8 bites Timer0 modul van. A Timer0 rendelkezik egy előosztóval (prescaler) és egy TMR0 regiszterrel (szintén 8 bites), ezekkel lehet beállítani, hogy milyen időközönként történjen megszakítás.
A képlet elég egyszerű: t=((256-TMR0)*4*prescaler)/fosc, ahol az fosc az órajel frekvenciája, a prescaler pedig lehet 1,2,4,8,16,32,64,128,256. Innentől csak matek az egész. Viszont az 500 ms az jó nagy idő, ezt ha csak kizárólag a Timerrel akarod megcsinálni, akkor jó kicsi órajel kell hozzá.
Másik lehetőség, hogy a Timerrel sokkal kisebb időzítést állítasz elő, és a megszakítás rutinban minden megszakításkor egy változó értékét növeled. Amikor ez a változó eléri a kívánt értéket, nullázod és ezzel párhuzamosan megváltoztatod a PIC azon lábának állapotát, amin a LED van.
(#) szuperman válasza jani87 hozzászólására (») Jan 28, 2013 /
 
A problémám az ,hogy a kódot, ami eddig jól bevált a PIC16Fxxx sorozaton a PIC12Fxxx sorzatnál le se fordul. Sajnos nem értem a hibaüzenetet. Egy példára lenne szükségem.

  1. #include <12f509.h>
  2. #fuses INTRC, NOWDT, NOMCLR
  3. #use delay(clock=4MHz)
  4.  
  5. char megszakitas = 0;
  6. #int_RTCC
  7. void RTCC_isr(void) {
  8.    megszakitas++;
  9.    if(megszakitas > 15){
  10.       //kb 1mp
  11.       megszakitas = 0;
  12.      
  13.       output_toggle(PIN_B0);
  14.    }
  15. }
  16.  
  17. void main(void){
  18.    
  19.    setup_timer_0(RTCC_INTERNAL|RTCC_8_BIT|RTCC_DIV_256);
  20.    enable_interrupts( INT_TIMER0 );
  21.    enable_interrupts( GLOBAL );
  22.    
  23.    while(TRUE){
  24.      
  25.       }
  26.      
  27.       delay_ms(10); //kicsit pihentessük a PIC -et
  28.    }
  29. }
(#) jani87 válasza szuperman hozzászólására (») Jan 29, 2013 /
 
Töröld ki a zárójelet a 25. sorból!
Következő: »»   83 / 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