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   75 / 118
(#) vilmosd válasza szuperman hozzászólására (») Máj 25, 2012 /
 
Nezd csak! Talalsz egy par demo panel doksit. Pl a 20 labas jo a 8, 14 es 20 labashoz. Van rajta gomb, led, 7 szegmenses kijelzo, tap, ICSP. Es keves penzbol megcsinalhatod.
(#) szuperman válasza _vl_ hozzászólására (») Máj 25, 2012 /
 
Ilyenem van ,csak ilyen PIC em nincs itthon. Megírom a kódot, esetleg megnéznéd utána ,hogy jó e? Elég egyszerű, csak színeket szeretnék kevergetni egy db rgb leddel.
(#) szuperman válasza _vl_ hozzászólására (») Máj 25, 2012 /
 
Erre a kis egyszerü progira gondoltam:

  1. #include <12f615.h>
  2. #use delay (clock=4000000)
  3. #fuses NOWDT,NOPROTECT,NOPUT,BROWNOUT, NOMCLR
  4. #fuses INTRC_IO
  5.  
  6. #include <STDLIB.H>
  7.  
  8. #define RED PIN_A0
  9. #define GREEN PIN_A1
  10. #define BLUE PIN_A2
  11.  
  12. void main (void){
  13.    unsigned char r = 12, g = 12, b = 12, i; // 0<r<20; 0<g<20; 0<b<20;
  14.    long j=0;
  15.    
  16.    while (TRUE) {
  17.      
  18.       //ha a j eléri a 6000 -et akkor új véletlen szín generálódik
  19.       //ez kb. 5-10mp
  20.      if(j >= 6000){
  21.          r = rand() % 20;
  22.          g = rand() % 20;
  23.          b = rand() % 20;
  24.          j=0;
  25.      }
  26.    
  27.       for (i = 0; i < 20; i++) {
  28.             if (r > i) { output_high(RED);}
  29.             else {output_low(RED);}
  30.            
  31.             if (g > i) { output_high(GREEN);}
  32.             else {output_low(GREEN);}
  33.            
  34.             if (B > i) { output_high(BLUE);}
  35.             else {output_low(BLUE);}
  36.            
  37.             delay_us(50);
  38.       }
  39.       j++;
  40.    }
  41. }


Szerintetek működni fog beégetés után?
(#) _vl_ válasza szuperman hozzászólására (») Máj 26, 2012 /
 
Ha nincs ilyened otthon (nekem sincs, minek is lenne, ez egy meglehetősen korlátozott tudású PIC), akkor viszont inkább 12F1501-et vennék erre a feladatra. Vagy egy 16F1503-at (az van raktáron a magyarországi disztribútornál).
Azok HW-ből tudnak 4 db PWM kimenetet, csak feltöltöd a regiszterekbe a kívánt értéket, és ennél sokkal precízebben megcsinálja erőfeszítés nélkül.
(#) _vl_ válasza szuperman hozzászólására (») Máj 26, 2012 /
 
Két megjegyzés:

A számlálót ne 0-tól 6000-ig használd, hanem fordítva: az elején raksz bele 6000-et, és 0-áig csökkented. Így nullával kell hasonlítani, ami sokkal gyorsabb, mint 6000-rel. Ezen felül nem tudom, hogy kell-e "long" oda, szerintem egy "short" is elég.

A másik, hogy a "b" változó meg a "B" változó, az két külön változó. Szóval ez így nem fordulna le, a változókat mindenhol ugyanúgy kell nevezni (kis-nagybetű számít).

Ettől eltekintve elsőre működőképesnek tűnik nekem.
(#) szuperman hozzászólása Máj 26, 2012 /
 
Azért választottam ezt a PIC -et, mert ahol én szoktam vásárolni ezt tartják. Köszönöm a helpet. Kijavítottam a nagy B -t. Véletlen került bele, de a fordító valamiért nem jelezte. Meg a számlálót is átírtam.

Még egyszer köszi!
(#) sysy válasza _vl_ hozzászólására (») Máj 27, 2012 /
 
Mindenképpen long (16bit) változó kell, mert csak abba fér bele a 6000. A short csak 1bit!
(#) _vl_ válasza sysy hozzászólására (») Máj 27, 2012 / 1
 
Nem mondjátok komolyan, hogy a CCS compiler odáig merészkedett, hogy a standard C típusok neveit megváltoztatta????

Ez van a C szabványban:
char = a legkisebb, a gép által címezhető terület mérete, ez gyakorlatilag mindenhol pontosan 8 bit
short = minimum 16 bit
int = minimum 16 bit
long = minimum 32 bit
és sizeof(short) <= sizeof(int) <= sizeof(long)>>
(#) pontazok válasza _vl_ hozzászólására (») Máj 27, 2012 /
 
Reméljük csak a hajnali fáradtság miatt írták el
(#) szuperman hozzászólása Máj 27, 2012 /
 
Helló mindenki!

Pár hete dolgozok egy órán. Ma végre össze tudtam rakni a hardvert ,de nem működik. Méricskéltem és feszültséget kap a PIC, viszont egyik lábára sem kapcsol semmit, szóval gondolom el sem indul a szoftver rajta. Egyszerüen nem tudok rájönni mi a gond.

Az MCLR -t kikapcsoltam, ennek megfelelően nincs is sehova kötve. 12Mhz es kvarz adj az órajelet. A kódot csatolom ,mert elég nagy. Én proteusban teszteltem a szoftvert. Ott tökéletesen működik. De valóságban el sem indul.

Remélem valaki tud segíteni.
Előre is köszi!

Óra.zip
    
(#) BIP válasza szuperman hozzászólására (») Máj 27, 2012 /
 
Ha a MCLR nincs bekötve sehová, akkor az a gond.
Kösd rá egy 10K-s ellenállással a VDD-re.
Javaslom nézd át a vilmosd által mutatott demo paneleket, ott találsz megoldásokat.
(#) szuperman válasza BIP hozzászólására (») Máj 27, 2012 /
 
De ki van kapcsolva! Mindig ki szoktam kapcsolni ,meg a belső órajelet szoktam használni. És működnek...
(#) BIP válasza szuperman hozzászólására (») Máj 27, 2012 /
 
Bocsi, kicsit kapkodtam.
(#) capaizee válasza szuperman hozzászólására (») Máj 27, 2012 /
 
12 Mhz kvarc mellé nem kéne egy:
#fuses HS

oszcilátor beállítást elrontod akkod könnyen előfordul hogy nem indul a microcontroller....
(#) szuperman válasza capaizee hozzászólására (») Máj 27, 2012 /
 
Azt nem is tudom mire való.

Mire való?
(#) _vl_ válasza szuperman hozzászólására (») Máj 27, 2012 /
 
Arra, hogy elinduljon a 12MHz-es kvarccal az oszcillátor
(#) sysy válasza _vl_ hozzászólására (») Máj 27, 2012 /
 
Úgy látom te sem sokat használtad ezt a fordítót...
(#) capaizee válasza szuperman hozzászólására (») Máj 27, 2012 /
 
HS = 4 Mhz nagyobb kristályoknál illetve kerámia rezonátoroknálhasználjuk
XT = 4 Mhz vagy annál kissebb ....

általában a C fordítóknál is egy lehet hivatkozni
CCS C nél tuti

itt egy pic adatlapjából kivágott oscilátor beállítások:

1. EC ? External clock with I/O on OSC2/CLKOUT.
2. LP ? 32 kHz Low-Power Crystal mode.
3. XT ? Medium Gain Crystal or Ceramic Resonator
Oscillator mode.
4. HS ? High Gain Crystal or Ceramic Resonator
mode.
5. RC ? External Resistor-Capacitor (RC) with
FOSC/4 output on OSC2/CLKOUT.
6. RCIO ? External Resistor-Capacitor (RC) with I/
O on OSC2/CLKOUT.
7. INTOSC ? Internal oscillator with FOSC/4 output
on OSC2 and I/O on OSC1/CLKIN.
8. INTOSCIO ? Internal oscillator with I/O on
OSC1/CLKIN and OSC2/CLKOUT.
(#) sysy válasza szuperman hozzászólására (») Máj 27, 2012 /
 
Ügyes vagy szuperman!

Már majdnem jó a project, de...

Amit capaizee kolléga ajánlott, azt tedd bele a fusesok közé, mert nem fog elindulni az oscillator. XT beállítás kell 4MHz-ig, ez fölött pedig HS (High Speed) ajánlott. Mindenkinek mondom, hogy bátran olvasgassa az alkalmazott PIC leírását, mert abban minden le van írva, amitől működik az eszköz. A trükkösebb részek keretezve, sőt, a gyengébbek kedvéért be is van kicsit árnyékolva, hogy meglássák.

Nem nyálaztam át az egész programot, mert bár elég rövid, de nem eléggé struktúrált. A C egyébként is nehezen olvasható szöveg, de a nem kellő odafigyelés és lustaság (persze a jelenlevők mindig kivételek) még kevésbé teszi olvashatóvá. Majd te is meg fogod tapasztalni, hogy ha néhány hét múlva előveszed ezt a programot ismét, mert kitaláltál valami új dolgot bele, akkor nem fogsz már te sem eligazodni benne.

Amit viszont láttam (vagy látni véltem) két gondolat erejéig:

A halálpontos timer soha nem fog csinálni semmit, mert nincs engedélyezve a megszakítása. Persze, így könnyű halálbiztos progikat írni. Ha viszont engedélyezve lenne, akkor az EEPROM döglik ki a PIC-ből szerencsésebb esetben kevesebb, mint négy hónap alatt, mert ha másodpercenként írsz bele (nem is értettem, hogy miért kell) akkor nagyon hamar eléred az EEPROM maximális írhatóságának a határát és egyszer csak többé nem lehet írni, vagy olvasni azt a címet. A végeredmény szempontjából ugyanaz lesz a hatása.
Az adatlap szerint min: 1.000.000 tipikusan: 10.000.000 írást garantálnak az EEPROM-ra. Ha nincs szerencséd, akkor két hét alatt eléri ezt az értéket.
(#) vilmosd válasza _vl_ hozzászólására (») Máj 27, 2012 /
 
Szoval az eszkozspecifikus C es egyeb forditok nem mindig kovetik az ANSI eloirasokat, inkabb az eszkoz felepitesere, szohosszara vannak kihegyezve. Ez a CCS C mar csak ilyen. Amellett jol hasznalhato, mert jo beepitett funkciojai vannak.
(#) capaizee válasza sysy hozzászólására (») Máj 27, 2012 /
 
illetve B változatként lehet máshogy is rávenni a froditót hogy beállítsa a HS -t (vilmosd által linkelt manuál alapján):

  1. #use delay (xtal=12,000,000)
  2. // vagy  
  3. #use delay(crystal=12Mhz)
  4. // vagy  
  5. #use delay(clock=12M, crystal)
(#) szuperman hozzászólása Máj 27, 2012 /
 
Én ezt most így nem tudom követni. Valaki leírná a program fejlécét rendesen, mert nem tudom már mit írjak át?

Csak azért nem indul el mert szimplán megadtam ,hogy 120000000 az oszcillátorom?

Előre is köszi!
(#) capaizee válasza szuperman hozzászólására (») Máj 27, 2012 /
 
  1. #fuses NOWDT,NOPROTECT,NOPUT,BROWNOUT,NOLVP, NOMCLR, HS


írd át => Fordítsd => égesd => teszteld => mond el az eredményét (kösz működött, nem működött)
(#) szuperman válasza capaizee hozzászólására (») Máj 27, 2012 /
 
Semmit nem csinál a PIC.
(#) szuperman hozzászólása Máj 27, 2012 /
 
Csináltam egy ilyet:

  1. #include <16f628a.h>
  2. #use delay(crystal=12Mhz)
  3. #fuses NOWDT,NOPROTECT,NOPUT,BROWNOUT,NOLVP, NOMCLR, HS
  4.  
  5. main(){
  6.  
  7.    while(TRUE){
  8.       output_toggle(PIN_B3);
  9.       delay_ms(1000);
  10.    }
  11. }


Az történik ,hogy felhúzza magas szintre az adott lába és ott is tartja. Ez mitől lehet? Elindulna a program aztán megfagy?

Sikerült megállapítanom ,hogy a delay_ms -nél fagy meg. Ez mitől lehet?
(#) szuperman hozzászólása Máj 27, 2012 /
 
Egyszerűen nem tudom rávenni ,hogy a külső kristállyal csináljon bármit is.

Valakinek van valami ötlete?

Köszi!
(#) capaizee válasza szuperman hozzászólására (») Máj 27, 2012 /
 
Mivel programozod fel?
programozó felülírhatja a config biteket mármint nem a hexben lévő használja fel ...
(illetve icd, pickit esetén debuggolás sok segítséget jelenthet)
(#) szuperman válasza capaizee hozzászólására (») Máj 27, 2012 /
 
CCS Compillerben írom a progit és azzal fordítom le. Majd PICKIT 2 vel égetem be. Nem tudom erre gondoltál e?
(#) capaizee válasza szuperman hozzászólására (») Máj 27, 2012 /
 
és áramkörben programozod vagy kiveszed programozás PIC-et
lehet érdemes lenne MPLAB-ot belőni CCS fordítóra és debuggolni lépésenként végrehajtani a programot
mert pickit 2 lehet is ....
(#) szuperman válasza capaizee hozzászólására (») Máj 27, 2012 /
 
Fixen be forrasztottam a PIC et. Van ICSP.

Hogy lehet Debugolni?
Következő: »»   75 / 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