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   113 / 118
(#) Lamprologus válasza icserny hozzászólására (») Jan 27, 2016 /
 
USB aljzat kontakthiba!
Szétvágtam egy USB kábelt és beforrasztottam direkte, azóta jó! kopp-kopp-kopp
(#) messer hozzászólása Feb 3, 2016 /
 
Sziasztok szeretném egy mérlegnek a jeleit pic-el feldolgozni itt a link ami az alapot szolgálja.
Bővebben: Link

A checksum számításnál akadtam el szeretném c-ben megírni és megérteni, de elakadtam.
A cikk írója feltett egy kódot de python amit nem értek:

Idézet:
„# input bytes
bytes = [0xAA, 0x00, 0x00, 0x00]

checksum = 0
for n in bytes:
checksum += n
checksum %= 0xFF

# set last bit to zero
checksum &= ~1”


Tudnátok ebben segíteni nekem?
(#) Hp41C válasza messer hozzászólására (») Feb 3, 2016 /
 
Mi is itt a kérdés?
A műveletek leírása a Python -ban és a C -ben egyezik: + összeadás, % maradék képzés, & logikai és, ~ bitenkénti negálás.
(#) messer válasza Hp41C hozzászólására (») Feb 3, 2016 /
 
Alapban nem értem a matematikáját amivel képzik a négy bájtból az ötödiket nem jól értelmezem vagy nem tudom esetleg rá néznél a cikkre?
(#) Hp41C válasza messer hozzászólására (») Feb 3, 2016 / 1
 
A 4 byte -ot összeadja, veszi az eredmény 255 -te osztás maradékát és az alsó bitjét 0 -ra állítja, mert az kommunikáció az ellenőrző összeg felső 7 bitjét viszi csak át.
Idézet:
„Note that the last byte only has 7 bits (total data length of each burst is 39 bits).”


Már értem: A probléma a
  1. for n in bytes:

sorral van

C
  1. char bytes = [0xAA, 0x00, 0x00, 0x00];
  2.  
  3. int checksum = 0;
  4. for (n = 0; n < 4; n++) checksum += bytes[n];
  5. checksum %= 0xFF;
  6.  
  7. # set last bit to zero
  8. checksum &= 0xFE;
A hozzászólás módosítva: Feb 3, 2016
(#) messer válasza Hp41C hozzászólására (») Feb 3, 2016 /
 
Jól értem amit írtál?
Összeadom a négy májtor majd elosztom 255-el ez ad valamennyi egészet vagy 0-át
ami marad maradék annak az alsó bitjét nullára állítom és ez az eredmény lesz a checksum?
(#) Hp41C válasza messer hozzászólására (») Feb 3, 2016 /
 
Igen.
(#) messer válasza Hp41C hozzászólására (») Feb 3, 2016 /
 
Mert valamiért nem jön ki így .

AB 00 00 00 AA
AB 80 00 4B 76
AB 80 00 57 82
AB 80 00 6B 96
AB 80 00 91 BC
AB 80 01 03 30

Ezek jó bájt sorozatok és nem jön ki a számítással nem értem mit bénázok el....
(#) Hp41C válasza messer hozzászólására (») Feb 3, 2016 /
 
Pedig kijön:
AB 00 00 00 AA -- Összeadva 0xAB --: 255 -tel vett maradéka 171 -- 0xAB -- 0 bit törölve: 0xAA
AB 80 00 4B 76 -- Összeadva 0x176 --: 255 -tel vett maradéka 119 -- 0x77 -- 0 bit törölve: 0x76
...
AB 80 01 03 30 -- Összeadva 0x48 --: 255 -tel vett maradéka 48 -- 0x30 -- 0 bit törölve: 0x30
(#) messer válasza Hp41C hozzászólására (») Feb 3, 2016 /
 
Akkor kezdjük az alapoknál mert ott vesztem el.....
AB 80 01 03 30

0xAB+0x80+0x01+0x03=0x12F nem 0x48

Mit bénázik el?
(#) Hp41C válasza messer hozzászólására (») Feb 3, 2016 /
 
Igazad van, elírtam 0xAB+0x80+0x01+0x03=0x12F, már a moduló eredményét írtam ide is.
(#) messer válasza Hp41C hozzászólására (») Feb 3, 2016 /
 
Köszönöm szépen a segítségedet megvilágosodtam
(#) Istibácsi hozzászólása Feb 9, 2016 /
 
Sziasztok!

Szeretnék egy kis segítséget kérni.
Egy tetszőleges távirányító (TV/VIDEO/STB..) jelét szeretném venni, illetve egy változóban eltárolni,
hogy a későbbiekben egy adott funkciót adott gombhoz tudjak rendelni.
Arra gondoltam, azzal kezdem, hogy a kapott értéket (ha sikerült vennem) kiírom egy kijelzőre.
Mivel már készítettem hőmérőt, nem okoz gondot a kijelző kezelése, illetve a soros kommunikáció, viszont nem tudom hogy "vegyem" rá a kontrollert, hogy feldolgozza az SFH-506 által fogott jelet.

Köszi előre a segítséget/ötleteket.
(#) kissi válasza Istibácsi hozzászólására (») Feb 9, 2016 / 1
 
Szia!

2 lehetőség van: vagy tárolós szkóppal/logikai analizátorral "visszafejted", hogy a gombnak megfelelően mennyi ideig kell '0'-t vagy '1'-et adni és akkor a PIC ezt játssza le, vagy ha tudod, hogy a távirányítód legrövidebb impulzusa pl. 1 ms, akkor egy timert felprogramozol 100 us-os időre és a jeladás kezdetétől a jeladás végéig ennyi időnként megnézed, ill. elmented a tényleges jelet, majd kérésre visszajátszod 100 us-ként a lementett jelet ( esetleg annyival lehet ezt javítani, hogy csak a változások időpontját mented le ! ) !
(#) Istibácsi hozzászólása Feb 12, 2016 /
 
Szia!

Köszönöm, nézegetem már ezeket az USB szkópokat, mert egyre gyakrabban kellene.
Akkor azzal elméletileg vissza tudom majd fejteni.
Visszajátszania nem kell a picnek, csak venni a jelet.
Most pl egy dimmert dobtam össze, ami érintős és távirányítós, viszont így bármelyik gombot használom a távirányítón, ugyan úgy működik mint érintésre, arra gondoltam jó lenne szétválasztani a funkciókat, pl 4 gombra (ki,be,fényerő növelés, fényerő csökkentés).
Mondjuk az igazat megvallva, ehhez nem igazán szükséges szétválasztanom a gombokat, de később máshoz még jól jöhet, én meg szeretek új dolgokat tanulni.

Köszi!
(#) Hp41C válasza Istibácsi hozzászólására (») Feb 12, 2016 / 1
 
Mikrokontrolleres világban ezzel többre jutsz...
(#) messer hozzászólása Feb 13, 2016 /
 
Sziasztok.

Kérdésem annyi volna, hogy van nekem ez a sorom.

char bytes[4] = {0xAB, 0x84, 0x00, 0x41};

Az állandók helyére változókat szeretnék pl

char bytes[4] = {data1, data2, data3, data4};

Mi ennek a szintaktikája?
(#) Gyimate válasza messer hozzászólására (») Feb 13, 2016 /
 
Szia
Így megtudod oldalni:

char bytes[4];
bytes[0] = data1;
bytes[1] = data2;
bytes[2] = data3;
bytes[3] = data4;
(#) messer válasza Gyimate hozzászólására (») Feb 13, 2016 /
 
Köszönöm egysoros megoldás lustáknak nincs?
(#) zenetom hozzászólása Feb 16, 2016 /
 
Sziasztok!
Kipróbáltam ezt a CCS fordítót, egyelőre csak az MPLAB-ban, mert elegem lett a Microchip C fordítójából, mindig kalapálni kell rajta valamit..
Szóval jónak is tűnhetne ez a CCS, azonban nekem zavaró, hogy ne látok bele a háttérbe. Szóval a C fájlból rögtön szinte hex lesz. Persze a disassembly-ben lehet látni hogy mi lett a kódból, de a Microchip C fordítónál jobban lehetett követni pl. a függvényeket is, bele lehetett nézni. Meg mindtha a COF fájl is tömörebb lenne..
Az optimalizációt low-ra véve se lesz áttekinthetőbb.
Ez ilyen, meg kell szokni, vagy a saját IDE-ben jobban lehet látni a háttért a fordításnak?
Előre is köszönöm!
(#) messer hozzászólása Feb 16, 2016 /
 
Sziasztok!

Mplab 8.92
ccsc:5.044
16f877 nem tudom debuggolni ...
ezt a hiba üzenetet kapom

Idézet:

PK3Err0040: The target device is not ready for debugging.
Please check your configuration bit settings and program
the device before proceeding.

Stepping target failed


A kódom eleje

  1. #include<16F877.h>
  2.  
  3.  
  4.  
  5. #fuses HS,nowdt,noprotect,noput,nolvp,debug //Fuses
  6. #use delay(clock=20000000)
  7. #use rs232(baud=9600,parity=N, xmit=PIN_C6,rcv=PIN_C7,bits=8)
  8.  
  9. unsigned int8 i,data1,data2,data3,data4,data5,call;
  10.  
  11. #define adat PIN_A4
  12. #define RI      PIN_B0                                                                                          //ezen a lábon jelez a mobil (M72)
  13.  
  14. #BIT    data10  = data1.0
  15. #BIT    data11  = data1.1


Van ötletetek mit bénázok?
(#) Gyimate válasza zenetom hozzászólására (») Feb 17, 2016 /
 
Szia,
gyorsan írtam egy rövid programot és bemásolom ide neked a C/asm file-t amit generált. Remélem, hogy ez valamennyit segít eldönteni, hogy mit ad eredményül.
  1. CCS PCH C Compiler, Version 5.011, 5967               17-febr.-16 22:56
  2.  
  3.                Filename:   K:\Zoli_Vevo\vevo.lst
  4.  
  5.                ROM used:   280 bytes (1%)
  6.                            Largest free fragment is 32484
  7.                RAM used:   23 (1%) at main() level
  8.                            24 (1%) worst case
  9.                Stack used: 1 locations (0 in main + 1 for interrupts)
  10.                Stack size: 31
  11.  
  12. *
  13. 0000:  GOTO   00B2
  14. *
  15. 0008:  MOVWF  04
  16. 000A:  MOVFF  FD8,05
  17. 000E:  MOVFF  FE0,06
  18. 0012:  MOVLB  0
  19. 0014:  MOVFF  FE9,0C
  20. 0018:  MOVFF  FEA,07
  21. 001C:  MOVFF  FE1,08
  22. 0020:  MOVFF  FE2,09
  23. 0024:  MOVFF  FD9,0A
  24. 0028:  MOVFF  FDA,0B
  25. 002C:  MOVFF  FF3,12
  26. 0030:  MOVFF  FF4,13
  27. 0034:  MOVFF  FFA,14
  28. 0038:  MOVFF  00,0E
  29. 003C:  MOVFF  01,0F
  30. 0040:  MOVFF  02,10
  31. 0044:  MOVFF  03,11
  32. 0048:  BTFSS  F9D.0
  33. 004A:  GOTO   0054
  34. 004E:  BTFSC  F9E.0
  35. 0050:  GOTO   0096
  36. 0054:  MOVFF  0E,00
  37. 0058:  MOVFF  0F,01
  38. 005C:  MOVFF  10,02
  39. 0060:  MOVFF  11,03
  40. 0064:  MOVFF  0C,FE9
  41. 0068:  MOVFF  07,FEA
  42. 006C:  BSF    07.7
  43. 006E:  MOVFF  08,FE1
  44. 0072:  MOVFF  09,FE2
  45. 0076:  MOVFF  0A,FD9
  46. 007A:  MOVFF  0B,FDA
  47. 007E:  MOVFF  12,FF3
  48. 0082:  MOVFF  13,FF4
  49. 0086:  MOVFF  14,FFA
  50. 008A:  MOVF   04,W
  51. 008C:  MOVFF  06,FE0
  52. 0090:  MOVFF  05,FD8
  53. 0094:  RETFIE 0
  54. .................... #include <vevo.h>
  55. .................... #include <18F25K50.h>
  56. .................... //////// Standard Header file for the PIC18F25K50 device ////////////////
  57. .................... #device PIC18F25K50
  58. ....................  
  59. .................... #list
  60. ....................  
  61. .................... #FUSES NOWDT, WDT128, NOBROWNOUT, NOLVP, NOXINST
  62. .................... #use delay(internal=48MHz)
  63. ....................  
  64. .................... #define TER1   PIN_A0
  65. .................... #define TER2   PIN_A1
  66. .................... #define TER3   PIN_A2
  67. .................... #define LED1   PIN_A3
  68. .................... #define LED2   PIN_A4
  69. ....................  
  70. .................... #use rs232(uart1, baud=1200, bits=8)
  71. ....................  
  72. ....................  
  73. .................... #ZERO_RAM
  74. ....................  
  75. .................... int counter;
  76. ....................  
  77. .................... #INT_TIMER1
  78. .................... void  TIMER1_isr(void)  
  79. .................... {
  80. ....................    set_timer1 (5536);
  81. 0096:  MOVLW  15
  82. 0098:  MOVWF  FCF
  83. 009A:  MOVLW  A0
  84. 009C:  MOVWF  FCE
  85. ....................    counter++;
  86. 009E:  INCF   16,F
  87. ....................    if (counter == 10)
  88. 00A0:  MOVF   16,W
  89. 00A2:  SUBLW  0A
  90. 00A4:  BNZ   00AC
  91. ....................    {
  92. ....................       counter = 0;
  93. 00A6:  CLRF   16
  94. ....................       output_high (PIN_B0);
  95. 00A8:  BCF    F93.0
  96. 00AA:  BSF    F8A.0
  97. ....................    }
  98. 00AC:  BCF    F9E.0
  99. 00AE:  GOTO   0054
  100. .................... }
  101. ....................  
  102. ....................  
  103. .................... void main()
  104. 00B2:  CLRF   FF8
  105. 00B4:  BCF    FD0.7
  106. 00B6:  BSF    07.7
  107. 00B8:  MOVLW  FE
  108. 00BA:  MOVWF  00
  109. 00BC:  MOVLW  08
  110. 00BE:  MOVWF  01
  111. 00C0:  MOVLW  02
  112. 00C2:  MOVWF  FE9
  113. 00C4:  MOVLW  00
  114. 00C6:  MOVWF  FEA
  115. 00C8:  CLRF   FEE
  116. 00CA:  DECFSZ 00,F
  117. 00CC:  BRA    00C8
  118. 00CE:  DECFSZ 01,F
  119. 00D0:  BRA    00C8
  120. 00D2:  MOVLW  70
  121. 00D4:  MOVWF  FD3
  122. 00D6:  CLRF   FD2
  123. 00D8:  CLRF   F9B
  124. 00DA:  BSF    FB8.3
  125. 00DC:  MOVLW  0F
  126. 00DE:  MOVWF  FAF
  127. 00E0:  MOVLW  27
  128. 00E2:  MOVWF  FB0
  129. 00E4:  MOVLW  A6
  130. 00E6:  MOVWF  FAC
  131. 00E8:  MOVLW  90
  132. 00EA:  MOVWF  FAB
  133. 00EC:  MOVF   FC1,W
  134. 00EE:  ANDLW  F0
  135. 00F0:  MOVWF  FC1
  136. 00F2:  MOVLW  00
  137. 00F4:  MOVLB  F
  138. 00F6:  MOVWF  x5B
  139. 00F8:  MOVWF  x5C
  140. 00FA:  MOVWF  x5D
  141. 00FC:  CLRF   F9A
  142. 00FE:  CLRF   F99
  143. 0100:  CLRF   F98
  144. .................... {
  145. ....................    setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);      //43,7 ms overflow
  146. 0102:  MOVLW  17
  147. 0104:  MOVWF  FCD
  148. 0106:  CLRF   FCC
  149. ....................    enable_interrupts(INT_TIMER1);
  150. 0108:  BSF    F9D.0
  151. ....................    enable_interrupts(GLOBAL);
  152. 010A:  MOVLW  C0
  153. 010C:  IORWF  FF2,F
  154. ....................    int i = 0;
  155. 010E:  CLRF   17
  156. ....................    while(TRUE)
  157. ....................    {
  158. ....................       i++;
  159. 0110:  INCF   17,F
  160. ....................       output_a (i);
  161. 0112:  CLRF   F92
  162. 0114:  MOVFF  17,F89
  163. 0118:  BRA    0110
  164. ....................    }
  165. ....................  
  166. .................... }
  167. 011A:  SLEEP
  168.  
  169. Configuration Fuses:
  170.    Word  1: C823   PLL3X PLLEN NOCPUDIV LS48MHZ INTRC_IO PRIMARY_SW FCMEN IESO
  171.    Word  2: 1C58   PUT NOBROWNOUT BORV19 NOLPBOR NOWDT WDT128
  172.    Word  3: D300   CCP2C1 PBADEN T3CKC0 SDOB3 NOMCLR
  173.    Word  4: 0081   STVREN NOLVP NOXINST NODEBUG
  174.    Word  5: C00F   NOPROTECT NOCPB NOCPD
  175.    Word  6: E00F   NOWRT NOWRTC NOWRTB NOWRTD
  176.    Word  7: 400F   NOEBTR NOEBTRB
(#) zenetom válasza Gyimate hozzászólására (») Feb 17, 2016 /
 
Szia,
Köszönöm. Gondolom ezt a saját IDE-ből való. Csábító, hogy nagyon gyorsan lehet vele haladni, és ahogy nézem, egész ügyesen optimalizál.
(#) Gyimate válasza zenetom hozzászólására (») Feb 18, 2016 /
 
Szia,
Igen, a saját környezetében van egy olyan menüpont, hogy "view" és azon belül éred el a "C/asm list"-et, "call tree"-t és egyéb statisztikai adatot, mint például memóriahasználatot.
(#) zenetom hozzászólása Feb 19, 2016 /
 
Na, első projekttel sikerült is kiakasztanom, rögtön, elsőre. Vagy én szúrtam el valamit, vagy kuka számomra a CCS is.

ccs fail.png
    
(#) zenetom válasza zenetom hozzászólására (») Feb 19, 2016 /
 
Najó, lehet nem dobom el ilyen hamar. A projektvarázsló rakja bele ezt a sort a header fájlba:
  1. #define RS485_USE_EXT_INT #define RS485_RX_PIN PIN_B1

Ezen akad ki a fordító az include-nál.
Ellenben az RS485 példaprogram lefordul rendesen (feltéve, hogy a varázslóban csak a PIC-et választom ki és a perifériákhoz nem nyúlok), MPLAB-ban is.
A hozzászólás módosítva: Feb 19, 2016
(#) zenetom válasza zenetom hozzászólására (») Feb 19, 2016 /
 
Na közben rájöttem, ...hát azért ez a CCS se hibátlan, de azért használható.
(#) __Chris__ hozzászólása Feb 22, 2016 /
 
Üdv!

Egy PicKit3 beszerzését fontolgatom mostanában. Hiányzik a mikrokontroller programozás, és hobbi szinten szeretném tovább űzni. Anno a suliban a CCS compiler-el tanultuk az MCU-k programozását, ezért ezzel a környezettel vagyok a leginkább tisztában. A baj az, hogy 350$ az ára, én viszont egy kis hétvégi programozgatásért nem szeretnék ennyi pénzt adni. Ennek a csomagnak azonban elérhető egy ingyenes demo változata is, annak azonban sehol sem tudtam utána nézni, hogy ez milyen limitációkat tartalmaz a fizetőshöz képest. Talált valaki valaha valami ezzel kapcsolatos leírást, vagy esetleg akad valaki, aki CCS-t használ, méghozzá az ingyenes változatot? Az a valaki megoszthatná velem hogy milyen formában limitálják a funkcionalitást, ha lejár a 45 nap.

(Tudom hogy a Microchip ad ingyenes fejlesztőkörnyezetet a programozáshoz, de Netbeans alapú, és ha lehet kerülném a Java-t, persze ha nincs más, kénytelen leszek használni)
(#) Buvarruha válasza __Chris__ hozzászólására (») Feb 22, 2016 /
 
A CCSC is beszerezhető alternatív útvonalakon, hobbiprogramozáshoz jó.
(#) zenetom válasza __Chris__ hozzászólására (») Feb 22, 2016 /
 
Szia!
Nem idő, hanem méretkorlátozás van benne, ami 2k. Az egyszerűbb programok simán beleférhetnek. De azért erre alapozni szerintem nem érdemes, hamar betelik a 2k, hiába az optimalizáció (amit bár meg kell hagyni, egész ügyes néha). Esetleg annak kéne utána nézni, hogy az MPLAB-ba beépülő plugin (csak fordító) tartalmazza-e ezt a korlátozást: Bővebben: Link.
Bár gondolom igen, túl szép is lenne...
A hozzászólás módosítva: Feb 22, 2016
Következő: »»   113 / 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