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   84 / 118
(#) sysy válasza jani87 hozzászólására (») Jan 29, 2013 /
 
Mielőtt nagyon beleélnétek magatokat a hiba felderítésébe, közlöm, hogy a 12F508-ban nincs megszakítás.
Ha a Timer0-t akarjátok használni, akkor javaslom a MAIN hurokban a Timer0 legfelső bitjét figyelni, hogy mikor vált állapotot és azt számlálni a megfelelő időzítés elérése érdekében.
Egyébként sokkal praktikusabb lenne másik PIC-et választani, amiben van megszakítás.
Még a 10F322 is jobb alternatíva az ő 190HUF árával a 12F508-al szemben.
(#) szuperman válasza sysy hozzászólására (») Jan 29, 2013 /
 
Esetleg tudnál írni egy példát ,hogy oldható ez meg?
(#) sysy válasza szuperman hozzászólására (») Jan 29, 2013 /
 
Melyik porton van a LED, amit villogtatni akarsz?
Belső oscillátort használsz, vagy külső kvarcot?
Az MCLR lábat portként használod vagy reset funkcióra?
(#) szuperman válasza sysy hozzászólására (») Jan 29, 2013 /
 
PIN_B1 -en van a led. A belsó oszcillátort használom. Az MCLR lábon pedig egy gomb van.
(#) sysy válasza szuperman hozzászólására (») Jan 29, 2013 /
 
  1. /********************************************************************
  2.             LED villogtató  PIC12F508  CCS 4.140
  3. ********************************************************************/
  4.  
  5. #include <12F508.h>
  6.  
  7. #FUSES NOWDT                  // No Watch Dog Timer
  8. #FUSES INTRC                  // Internal RC Osc
  9.  
  10. #use delay(int=4MHz)
  11.  
  12. /********************************************************************/
  13.  
  14. #byte          GPIO        =        0x06
  15. #bit           Gomb        =        GPIO.3             // nyomogomb port
  16. #bit           LED         =        GPIO.1             // LED port
  17.  
  18. int            Cnt         =        0;                 // számláló
  19. int            Buff        =        0;                 // általános buffer
  20. int            Tmp;                                    // Timer0.7 átmeneti tároló
  21.  
  22. /********************************************************************
  23.                         Prototypes
  24. ********************************************************************/
  25.  
  26. void           Button         ();
  27.  
  28. /********************************************************************/
  29. void
  30. main()
  31. {
  32.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit); // 65.5 ms overflow
  33.    set_tris_b(0b001000);            // összes port kimenet, kivéve az MCLR
  34.        
  35.    while(1)                         // mindörökké
  36.    {
  37.       Tmp=get_timer0()&0x80;        // kinyerjük a Timer0 legfelső bitjét
  38.       if(Buff!=Tmp)                 // ha a Timer0 legfelső bitje változott
  39.       {
  40.          Buff=get_timer0()&0x80;    // Timer0 legfelső bit állapotát mentjük
  41.          if(++Cnt>14)               // változott már 15x a Timer0 legfelső bitje?
  42.          {
  43.             Cnt=0;                  // ha igen kinullázzuk a számlálót és a
  44.             LED^=1;                 // LED állapotát az ellenkezőre változtatjuk
  45.          }  
  46.       }
  47.       if(!Gomb)                     // ha nyomják a gombot (input Low)
  48.          Button();                  // ugrás a függvényre
  49.    }  
  50. }
  51.  
  52. /********************************************************************/
  53. void
  54. Button()
  55. {
  56.    ;  /* ide lehet megírni a gombot kezelő függvényt, ha kell */  
  57. }
A hozzászólás módosítva: Jan 29, 2013

Flash_LED.c
    
(#) szuperman válasza sysy hozzászólására (») Jan 29, 2013 /
 
Köszönöm a segítséget!
(#) messer hozzászólása Feb 7, 2013 /
 
Sziasztok.Egy rfm01-es modult szeretnék éleszteni a gyártó a modul adatlapján pic-hez adott is forrást, viszont én szeretném átültetni ccsc-re.Mert ezt értem meg
Be teszem ide a kódot tudtok az átírásban segíteni?Amúgy ez milyen c-ben van írva?

  1. Sziasztok.Egy rfm01-es modult szeretnék éleszteni a gyártó a modul adatlapján pic-hez adott is forrást, viszont én szeretném átültetni ccsc-re.Mert ezt értem meg:)
  2. Be teszem ide a kódot tudtok az átírásban segíteni?Amúgy ez milyen c-ben van írva?
  3. [code=c]/**********************************************************
  4. copyright (c) 2010
  5. Title: RF01 simple example based on PIC C
  6. Current version: V1.2
  7. Function: Package receive Demo
  8. Processor PIC16F73
  9. Clock: 10MHz Crystal
  10. Operate frequency: 434MHz
  11. Data rate: 4.8kbps
  12. Package size: 23byte
  13. Author: BaiGuang
  14. Company: Hope microelectronic Co.,Ltd.
  15. Contact: +86-0755-82973806
  16. E-MAIL: rfeng@hoperf.com
  17. Date: 2010-07-14
  18. ********************************************************/
  19. #include "pic.h"
  20. typedef unsigned char uchar;
  21. typedef unsigned int uint;
  22. #define SDI RB5
  23. #define SCK RB4
  24. #define SDO RB2
  25. #define nIRQ RB1
  26. #define nSEL RB7
  27. #define LED RA0
  28. #define LED_OUT() TRISA0=0
  29. #define nIRQ_IN() TRISB1=1
  30. #define SDI_OUT() TRISB5=0
  31. #define SCK_OUT() TRISB4=0
  32. #define SDO_IN() TRISB2=1
  33. #define DATA_IN() TRISB1=1
  34. #define nSEL_OUT() TRISB7=0
  35. void RF1_Init( void );
  36. void Write0( void );
  37. void Write1( void );
  38. void Delayus( uint us );
  39. void WriteCMD( uint CMD );
  40. uchar RF01_RDFIFO(void);
  41. void Delays(void);
  42. __CONFIG(0x3FF2);
  43. bank1 uchar RF_RXBUF[19];
  44. void RF1_Init( void )
  45. {
  46. nSEL=1;
  47. SDI=1;
  48. SCK=0;
  49. nSEL_OUT();
  50. SDI_OUT();
  51. SDO_IN();
  52. nIRQ_IN();
  53. SCK_OUT();
  54. LED_OUT();
  55. LED=0;
  56. }
  57. void main()
  58. {
  59. uchar i=0,j=0;
  60. uint CheckSum;
  61. Delays();
  62. RF1_Init( );
  63. WriteCMD(0x0000);
  64. WriteCMD(0x898A);//433BAND,134kHz
  65. WriteCMD(0xA640);//434MHz
  66. WriteCMD(0xC847);//4.8kbps
  67. WriteCMD(0xC69B);//AFC setting
  68. WriteCMD(0xC42A);//Clock recovery manual control,Digital filter,DQD=4
  69. WriteCMD(0xC240);//output 1.66MHz
  70. WriteCMD(0xC080);
  71. WriteCMD(0xCE84);//use FIFO
  72. WriteCMD(0xCE87);
  73. WriteCMD(0xC081);//OPEN RX
  74. while(1)
  75. {
  76. while(!nIRQ)
  77. {
  78. RF_RXBUF[i++]=RF01_RDFIFO();
  79. if(i==17)
  80. {
  81. i=0;
  82. WriteCMD(0xCE48);
  83. WriteCMD(0xCE87);
  84. CheckSum=0;
  85. for(j=0;j<16;j++)
  86. CheckSum+=RF_RXBUF[j]; //add 0x30-----0x3F
  87. CheckSum&=0x0FF;
  88. if(CheckSum==RF_RXBUF[16])
  89. {
  90. LED=1;
  91. }
  92. Delayus(1);
  93. LED=0;
  94. }
  95. }
  96. }
  97. }
  98. void Write0( void )
  99. {
  100. SDI=0;
  101. SCK=0;
  102. NOP();
  103. NOP();
  104. NOP();
  105. NOP();
  106. NOP();
  107. NOP();
  108. NOP();
  109. NOP();
  110. NOP();
  111. NOP();
  112. NOP();
  113. NOP();
  114. NOP();
  115. NOP();
  116. NOP();
  117. NOP();
  118. SCK=1;
  119. NOP();
  120. }
  121. void Write1( void )
  122. {
  123. SDI=1;
  124. SCK=0;
  125. NOP();
  126. NOP();
  127. NOP();
  128. NOP();
  129. NOP();
  130. NOP();
  131. NOP();
  132. NOP();
  133. NOP();
  134. NOP();
  135. NOP();
  136. NOP();
  137. NOP();
  138. NOP();
  139. NOP();
  140. NOP();
  141. SCK=1;
  142. NOP();
  143. }
  144. void WriteCMD( uint CMD )
  145. {
  146. uchar n=16;
  147. SCK=0;
  148. nSEL=0;
  149. while(n--)
  150. {
  151. if(CMD&0x8000)
  152. Write1();
  153. else
  154. Write0();
  155. CMD=CMD<<1;
  156. }
  157. SCK=0;
  158. }
  159. uchar RF01_RDFIFO(void)
  160. {
  161. uchar i,Result;
  162. SCK=0;
  163. SDI=0;
  164. nSEL=0;
  165. for(i=0;i<16;i++)
  166. { //skip status bits
  167. SCK=1;
  168. NOP();
  169. NOP();
  170. SCK=0;
  171. NOP();
  172. NOP();
  173. }
  174. Result=0;
  175. for(i=0;i<8;i++)
  176. { //read fifo data byte
  177. Result=Result<<1;
  178. if(SDO)
  179. {
  180. Result|=1;
  181. }
  182. SCK=1;
  183. NOP();
  184. NOP();
  185. SCK=0;
  186. NOP();
  187. NOP();
  188. }
  189. nSEL=1;
  190. return(Result);
  191. }
  192. void Delayus( uint us )
  193. {
  194. uint i;
  195. while( us-- )
  196. {
  197. i=1000;
  198. while( i-- )
  199. {
  200. NOP();
  201. }
  202. }
  203. }
  204. void Delays(void)
  205. {
  206. uchar i=10;
  207. while(i--)
  208. {
  209. Delayus(1);
  210. }
  211. }
[/code]

Előre is köszönöm.
(#) sysy válasza messer hozzászólására (») Feb 8, 2013 /
 
Ha hasonlít az RFM12 modulra, akkor tudok segíteni neked.
Pontosan milyen beállításban szeretnéd üzemeltetni a modulkát? Nagyon fontos. Milyen frekin, milyen baudrate kell, analog/digitális szűrő legyen-e, FIFO megszakítást kérsz, vagy pollingozni akarod, hány byte-os csomagok lesznek az átvitelben, bitenként, vagy byte-onként akarod kiolvasni a vett adatokat stb...
Egyébként ha eltalálod a beállításait, nagyon prímán működik.
Transzparens (analog) üzemmódban kell kezdeni a beállításokat és egy szkóp kell a vevő kimenetére. Ezzel látni lehet a sávszélesség - baud rate és a belső szűrő beállításait, ami szorosan összefügg egymással. Utána lehet a szépségeit kihasználni.
Van egy jól használható beállítási segédlet hozzá (RFM12).
De érzésem szerint ugyanaz a chip van mindkettőben. (Integration IA4420)
(#) messer válasza sysy hozzászólására (») Feb 8, 2013 /
 
Ahogy nézem hasonlít egyenlőre még nem jutottam el odáig, hogy a beállításokat számba vegyem ehhez nyitottam egy topikot
Idézet:
RFM01-rfm02 élesztése”
majd ott akarom kivesézni.Egyenlőre a pic része érdekel az spi élesztése működése, és ennek megvalósítása ccsc-n belül.Azért volna jó a beillesztett kódot amit a gyártó írt át írni ccsc-re mert ott szoftveres spi van és jól megérteném hagyan is kell küldeni az adatokat, ha van ccsc-s forrásod az rfm-12-höz szívesen megnézném első ránézésre ugyan úgy kell konfigurálni.
(#) efiscp válasza messer hozzászólására (») Feb 8, 2013 /
 
Szoftveres SPI-t te magad is tudsz írni. Nézz át az rfm12b topicba, ott van működő ccsc kód, amiben saját sw SPI van.
(#) sysy válasza messer hozzászólására (») Feb 8, 2013 /
 
Itt van két függvény, amivel lehet küldözgetni parancsokat (16bit) és adatokat (8bit).
Ha nem világos valami, akkor szóljál.
  1. void
  2. WriteCMD(long CMD)
  3. {
  4. int n=16;                                                                                                                                                                
  5.  
  6.         SCK=0;
  7.         nSEL=0;                                                                                                                                                          
  8.         while(n--)
  9.         {
  10.                 if(CMD&0x8000)                                                                                                                                   
  11.                         SDI=1;                                                                                                                                           
  12.                 else                                                                                                                                                             
  13.                         SDI=0;                                                                                                                                           
  14.                 SCK=1;                                                                                                                                                   
  15.                 SCK=0;
  16.                 CMD<<=1;                                                                                                                                                         
  17.         }
  18.         SCK=0;
  19.         nSEL=1;                                                                                                                                                          
  20. }
  21.  
  22. /*****************************************************/
  23. void
  24. WriteFSKbyte(int DAT)
  25. {
  26. int     Cnt=8;                                                                                                                                                   
  27.  
  28.         while(Cnt--)
  29.         {
  30.                 if(DAT&0x80)                                                                                                                                     
  31.                         SDI=1;                                                                                                                                           
  32.                 else                                                                                                                                                             
  33.                         SDI=0;                                                                                                                                           
  34.                 SCK=1;                                                                                                                                                   
  35.                 SCK=0;
  36.                 DAT<<=1;                                                                                                                                                         
  37.         }
  38. }
A hozzászólás módosítva: Feb 9, 2013
(#) messer válasza sysy hozzászólására (») Feb 8, 2013 /
 
Köszönöm, hogy időt szakítasz rám!

Tudnád olyan formában is küldeni, hogy megegye a ccsc?

  1. #include<16F877.h>
  2. #device adc=10
  3. #fuses xt,nowdt,noprotect,noput,nolvp,debug //Fuses
  4. #use delay(clock=4000000)
  5. #use rs232(baud=9600,parity=N, xmit=PIN_C6,rcv=PIN_C7,bits=8)
  6.  
  7. typedef unsigned char uchar;
  8. typedef unsigned int uint;
  9.  
  10. #define SDI     pin_C4
  11. #define SCK     pin_C3
  12. #define SDO             pin_C5
  13. #define nIRQ    pin_B1
  14. #define nSEL    pin_A5
  15. #define LED     pin_A0
  16.  
  17.  
  18.  
  19. //-----------------------------------------------------------
  20. void main()
  21. {
  22.  
  23.     void
  24.     WriteCMD(long CMD)
  25.     {
  26.     int n=16;                                                                                                                                            
  27.      
  28.             SCK=0;
  29.             nSEL=0;                    
  30.             while(n--)
  31.             {
  32.                     if(CMD&0x8000)                                  
  33.                             SDI=1;                                    
  34.                     else                                                                                
  35.                             SDI=0;                                    
  36.                     SCK=1;                                      
  37.                     SCK=0;
  38.                     CMD<<=1;                                                                                                                                                        
  39.             }
  40.             SCK=0;
  41.             nSEL=1;                    
  42.     }
  43. }


Mert szeretnék soronként végig menni rajta.

Bocs ha bénázok de mindig tanulok újat...
(#) sysy válasza messer hozzászólására (») Feb 9, 2013 /
 
Itt van egy kibelezett kódrészlet, nem fordítottam le, így nem tudom, hogy szintaktikailag helyes maradt-e. Ez adónak húzza fel a modulét. Kicsit szétdült a tagolás. 3tab a behúzás.
  1. Fusesok... blah blah blah...
  2.  
  3. #use                    delay(int=4MHz)
  4.  
  5. #case
  6.  
  7. /***************************************************************/
  8.  
  9. #define                 Tx_FREQ(freq)   ((freq-430.0)/0.0025)                                                    
  10.  
  11. /***************************************************************/
  12.  
  13. #byte           PORTA   =               0x05   
  14. #byte           PORTB   =               0x06
  15. #byte           PORTC   =               0x07
  16. #byte           PORTD   =               0x08
  17. #byte           PORTE   =               0x09
  18.  
  19. #byte                   INTCON  =               0x8B
  20. #bit                    INTF            =               INTCON.1
  21.  
  22. #bit                    SCK             =               PORTA.1
  23. #bit                    SDI             =               PORTA.2
  24. #bit                    SDO             =               PORTA.4
  25. #bit                    nIRQ            =               PORTA.5
  26. #bit                    Button  =               PORTB.0
  27. #bit                    DIPup           =               PORTB.1                                                                                          
  28. #bit                    DATA            =               PORTB.2
  29. #bit                    LED             =               PORTB.3
  30. #bit                    nSEL            =               PORTB.4
  31.  
  32. /***************************************************************
  33. *                                                                                                                                                                                                                                                       *
  34. *                                                                                                       MAIN                                                                                                            *
  35. *                                                                                                                                                                                                                                                       *
  36. ***************************************************************/
  37. void
  38. main()
  39. {
  40.  
  41.         setup_oscillator(OSC_4MHZ);
  42.         set_tris_a(0b00111001);
  43.         set_tris_b(0b00000001);
  44.         set_tris_c(0b11111111);
  45.         nSEL=1;
  46.         LED=1;
  47.         delay_ms(100);
  48.  
  49.         while(1)
  50.         {
  51.                 PWR_Down();
  52.                 WriteCMD(0x8201);
  53.                 Init_RFM12();
  54.                 WriteCMD(0x8221);
  55.                 delay_ms(1);
  56.                 Dat_Send();
  57.         }
  58. }
  59.  
  60. /**********************************************/
  61. void
  62. Dat_Send()
  63. {                
  64.  
  65.         WriteCMD(0x8221);
  66.         SCK=0;
  67.         nSEL=0;
  68.         WriteFSKbyte(0xB8);
  69.         WriteFSKbyte(0xAA);
  70.         while(!SDO);
  71.    WriteFSKbyte(0xAA);
  72.         while(!SDO);
  73.    WriteFSKbyte(0x2D);
  74.         while(!SDO);
  75.    WriteFSKbyte(0xD4);
  76.         while(!SDO);
  77.         WriteFSKbyte(IDD);              //adat
  78.         while(!SDO);
  79.         WriteFSKbyte(SZAM);             //adat
  80.         while(!SDO);
  81.         delay_us(2500);
  82.    nSEL=1;
  83.         WriteCMD(0x8201);
  84. }
  85.  
  86. /**************************************************/
  87. void
  88. Init_RFM12(void)
  89. {
  90.  
  91.         nSEL=1;
  92.         SDI=1;
  93.         SCK=0;
  94.  
  95.         WriteCMD(0x8097);//EL,EF,433band,12.0pF                                                                 Configuration Settings
  96.         WriteCMD(0x8219);//!er,!ebb,ET,ES,EX,!eb,!ew,DC         Power Management
  97.         WriteCMD(0xA000+Tx_FREQ(430.48));//                                                                                     Frequency Settings
  98.         WriteCMD(0xC647);//4800bps                                                                                                      Data Rate 0xC647 4.8bps 0xC6C7 600bps
  99.         WriteCMD(0x9800);//!mp,15kHz,MAX OUT            Tx Configuration
  100.         WriteCMD(0x8201);
  101. }
  102.  
  103. /***************************************************/
  104. void
  105. WriteCMD(long CMD)
  106. {
  107. int n=16;
  108.  
  109.         SCK=0;
  110.         nSEL=0;
  111.         while(n--)
  112.         {
  113.                 if(CMD&0x8000)
  114.                         SDI=1;
  115.                 else
  116.                         SDI=0;
  117.                 SCK=1;
  118.                 SCK=0;
  119.                 CMD<<=1;
  120.         }
  121.         SCK=0;
  122.         nSEL=1;
  123. }
  124.  
  125. /***************************************************/
  126. void
  127. WriteFSKbyte(int DAT)
  128. {
  129. int     Cnt=8;
  130.  
  131.         while(Cnt--)
  132.         {
  133.                 if(DAT&0x80)
  134.                         SDI=1;
  135.                 else
  136.                         SDI=0;
  137.                 SCK=1;
  138.                 SCK=0;
  139.                 DAT<<=1;
  140.         }
  141. }
  142.  
  143. /***************************************************/
A hozzászólás módosítva: Feb 9, 2013
(#) szuperman hozzászólása Feb 10, 2013 /
 
Helló mindenki!

RS 232 -es kommunikációval próbálkozom, de nem akar össze jönni. Ez lenne a kódom:
  1. #include <16f628a.h>
  2. #use delay (clock=4MHz)
  3. #fuses NOWDT,NOPROTECT,NOPUT,BROWNOUT,NOLVP, NOMCLR
  4. #fuses INTRC_IO
  5.  
  6. #use rs232(baud=9600, xmit=PIN_B0,rcv=PIN_B1)
  7.  
  8.  
  9. void main(void){
  10.    while(TRUE){
  11.       printf("Online");
  12.    }
  13. }


Valamiért nem az jelenik meg a terminálon ,hogy Online, hanem számomra olvashatatlan szöveg. Végig próbálgattam egyesével a betűket és mindegyikre valami mást ad, szóval valahol a karakterek kódolásánál lehet a gond. Valaki meg tudná mondani mi van rosszul beállítva? Vagy lehet a hardvernél van a gond?

Előre is köszi!
A hozzászólás módosítva: Feb 10, 2013

hardver.GIF
    
(#) vicsys válasza szuperman hozzászólására (») Feb 10, 2013 /
 
Ha kihagyod a szintillesztőt akkor jó? Beállítottad a terminálon is a kommunikációs paramétereket?
(#) szuperman válasza vicsys hozzászólására (») Feb 10, 2013 /
 
Mi az a szintillesztő? A beállítások jók.
(#) vicsys válasza szuperman hozzászólására (») Feb 10, 2013 /
 
Max232 IC
(#) szuperman válasza vicsys hozzászólására (») Feb 10, 2013 /
 
Anélkül az ég világon semmit nem csinál a terminál.
(#) vicsys válasza szuperman hozzászólására (») Feb 10, 2013 /
 
Nálam okés.
(#) szuperman válasza vicsys hozzászólására (») Feb 10, 2013 /
 
Most már nálam is. Pedig először úgy csináltam és nem volt hajlandó működni. Köszönöm és elnézést a bénázásomért.
(#) Gyimate válasza vicsys hozzászólására (») Feb 10, 2013 /
 
Üdv mindenkinek!
Megtudnád mondani, hogy milyen szimulátort használsz? Mostanáig ha tesztélni akartam valamit, mindig próbapanel elő, összedrótoztam és hajrá, csak néha jó lenne egy ilyen program, ha nincs kéznél a felszerelés.
(#) szuperman válasza Gyimate hozzászólására (») Feb 10, 2013 /
 
Proteus a program neve. Talán az egyik legjobb áramkör szimuláló program a maga korlátain belül.

Megint elakadtam egyébként:
Raktam le egy virtuális COM csatlakozást és föltettem mellé a VSPE nevű progit, amivel a soros port összekötetését lehet szimulálni. Így rá tudok csatlakozni a Hyperterminálal és össze köthetem a virtuális áramkörömet a gépemmel. Innen a határ a csillagos ég. Érdekes módon két terminál tud kommunikálni. Ha PIC -et kihagyom szintén működik a dolog, viszont a PIC el semmi nem jelenik meg a gépemen lévő Hypertemrinálon. Nem tudom mennyire volt érthető. Felteszem összecsomagolva a projektet. CCS, Proteus, Mplab -al dolgoztam.
(#) szuperman válasza szuperman hozzászólására (») Feb 10, 2013 /
 
Megtaláltam a hibát.
(#) Gyimate válasza szuperman hozzászólására (») Feb 10, 2013 /
 
Kösz a választ, kipróbálom.
Üdv Máté
(#) szuperman hozzászólása Feb 14, 2013 /
 
Üdv!

Adott ez a kód:
  1. for (i = 31; i >= 0; i--) {
  2.       send_bit ( (kep[sor]&pow(2,i)) >> i);
  3.    }

A probléma az ,hogy a pow csak float -ot fogad el a for meg csak int -et. Legalábbis a compiler ezt a hibát dobja. Próbáltam cast -olni ,de nem változtat a hiba üzeneten valamiért. Hogy lehetne ezt a problémát megoldani?

Előre is köszi!
(#) _vl_ válasza szuperman hozzászólására (») Feb 14, 2013 /
 
A
  1. pow(2,i)
helyett használd a
  1. (1 << i)
kifejezést. Az első floating point művelet (irgalmatlan lassú egy 8-bites PIC-en), a második pedig pár utasításra fordul le.
A hozzászólás módosítva: Feb 14, 2013
(#) potyo válasza szuperman hozzászólására (») Feb 14, 2013 /
 
Ez gyorsabb lenne szerintem azon felül, amit _vl_ írt:
  1. for (i=2147483648; i; i>>=1)
  2. {
  3.         send_bit(kep[sor]^i?1:0);
  4. }
(#) potyo válasza potyo hozzászólására (») Feb 14, 2013 /
 
Rosszul írtam, nem ^ jel kell, hanem & jel.

Az i változód milyen típusú? unsigned long kellene, de CCS-ben ez nem biztos, hogy 32 bites, ezért talán int32-vel kellene próbálkozni.
(#) szuperman válasza potyo hozzászólására (») Feb 14, 2013 /
 
Most valahogy a teljes kód elromlott és 1 napi munkám oda lett. A fapados kód sem megy már, nem értem miért.
(#) potyo válasza szuperman hozzászólására (») Feb 14, 2013 /
 
Akkor valahol máshol lesz a hiba, ha az sem megy, ami eddig ment. Esetleg kontakthiba?
Következő: »»   84 / 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