Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   276 / 1210
(#) aroxol hozzászólása Júl 5, 2012 /
 
Sziasztok!

Az lenne a kérdésem hogy lehetne a TIMERT-t megszakitani egy másik bementtel, pl. KAPCSOLO. Megnyomom a gombot, elindul a timer, ledre ugrik. Ha timer közben a kapcsolot megnyomom/kapcsolom, visszaugorjon a gomb figyelésére. Nem tudom mennyire értehetö a megfogalmazásom.

BTFSC GOMB
CALL TIMER
BRA LED

TIMER

movlw .96
movwf T10
movlw 0x00
movwf TMR1H
movlw 0x00
movwf TMR1L
BSF TMR1_START
(#) n_yálastrubadúr válasza Hp41C hozzászólására (») Júl 5, 2012 /
 
Köszi! Igazából a W-reg mentése volt rossz a megszakításban.
(#) Chello.1 hozzászólása Júl 5, 2012 /
 
Sziasztok, lenne egy kerdesem.

Gondoltam elkezdek pic-et tanulni, es beirtam egy peldaprogit a kpen lathato modon.

Kesobb annyit sikerult elernem, hogy elismerte az egyik

fajtat movlw vagy a mov wf et de a masikat hibas szinnel jelezte mindel igy tett.

Mi lehet a hiba?

Mindent beallitottam amirol tudok.
(#) mrobi válasza Chello.1 hozzászólására (») Júl 5, 2012 /
 
Szerintem az lehet a hiba hogy a parancsot és a paramétert nem tabulátorral hanem szóközzel választottad el.
(#) Chello.1 válasza mrobi hozzászólására (») Júl 5, 2012 /
 
Koszi.

Hmm.. az lehet ha lesz turelmem es idom tabolva is megirom.

Mas finomsag amit muszaly tudni de nem latszik ha nm jol csinalom?
(#) Zsora válasza Chello.1 hozzászólására (») Júl 5, 2012 /
 
Az 1. oszlop a címke helye, a parancs a 2. bekezdéstől jöhet. Tegyél a parancsok elé egy tabot! (De a címkék elé ne!)
(#) Zsora válasza aroxol hozzászólására (») Júl 5, 2012 /
 
"Nem tudom mennyire értehetö a megfogalmazásom."

Nem nagyon. Mit is szeretnél megvalósítani?
(#) aroxol válasza Zsora hozzászólására (») Júl 6, 2012 /
 
A timer lefutását megszakitani az idözités alatt egy másik bemenettel (KAPCSOLO), és visszaugorjon a figyelés a gombra.
(#) Zsora válasza aroxol hozzászólására (») Júl 6, 2012 /
 
Ugyanazt leírtad, mint korábban. Ha az ember meg tudja (tudná) korrektül fogalmazni a feladatot, akkor félig már meg is van (lenne) oldva a dolog!
Jó, akkor megpróbálom én kitalálni hogy mit is szeretnél. Tehát:

- ha megnyomsz egy gombot, egy LED világítani kezd, és elindul egy számláló
- ha a számláló lejár elalszik a LED, és kezdődik minden elölről
- ha számlálás közben megnyomsz egy másik gombot akkor is elalszik a LED, és kezdődik minden elölről

Ha mégsem ez a feladat, akkor légyszi írd le, de korrektül!
(#) aroxol válasza Zsora hozzászólására (») Júl 6, 2012 /
 
Ahogy Te megfogalmaztad teljesen jo. A lényeg hogy a számlálot bármikor le lehessen állitani
(#) Zsora válasza aroxol hozzászólására (») Júl 6, 2012 /
 
Vázolom a menetét (ciklikus mód):

1.) Gomb1 megnyomva és LED nem világít ? -> LED bekapcsol, időzítő beállít és indít
2.) Gomb2 megnyomva és LED világít ? -> LED kikapcsol, időzítő leállít
3.) Időzítő lejárt ? -> LED kikapcsol, időzítő leállít
4.) Vissza az 1. sorra
(#) ferkoo hozzászólása Júl 6, 2012 /
 
Sziasztok.
Lenne egy pici problémám amire nem jövök rá hogy a fordító hibája vagy az enyém, konkrétan c-ben írtam egy kis rendőr lámpa vezérlő programot, de a hexet nem futtatja az oshon szimulátora(konkrétabban csak a B0 és B4 kimenetre ad jelet onnan nemlép tovább felteszem a hexet-is.
  1. //Mikrovezérl? definíciók
  2. #include <PIC16F627.h>
  3. //Függvények
  4.  
  5.  
  6.  
  7. #ifdef _BOOSTC
  8. #include <system.h>
  9. #endif
  10. #ifdef HI_TECH_C
  11. #include <system.h>
  12. #pragma CLOCK_FREQ4000000
  13. #endif
  14.  
  15.  
  16. //Bels? függvények
  17.  
  18.  
  19. //Makró deklarációk
  20. void FCM_timer();
  21. void FCM_timer2();
  22.  
  23.  
  24. //Változó deklarációk
  25. short FCV_X;
  26. char FCV_Z;
  27. char FCV_KI;
  28.  
  29.  
  30.  
  31. //Makró implementációk
  32.  
  33. void FCM_timer()
  34. {
  35.  
  36. //Számítás
  37. //Számítás:
  38. //  x = x + 1
  39. FCV_X = FCV_X + 1;
  40.  
  41.  
  42. //Feltételes elágazás
  43. //Feltételes elágazás: x < 330?
  44. if (FCV_X < 330)
  45. {
  46. } else {
  47. //Számítás
  48. //Számítás:
  49. //  x = 0
  50. //  ki = ki + 1
  51. FCV_X = 0;
  52. FCV_KI = FCV_KI + 1;
  53.  
  54.  
  55. }
  56.  
  57.  
  58. }
  59.  
  60.  
  61. void FCM_timer2()
  62. {
  63.  
  64. //Számítás
  65. //Számítás:
  66. //  z = z + 1
  67. FCV_Z = FCV_Z + 1;
  68.  
  69.  
  70. //Feltételes elágazás
  71. //Feltételes elágazás: z = 190?
  72. if (FCV_Z == 190)
  73. {
  74. //Számítás
  75. //Számítás:
  76. //  ki = ki + 1
  77. //  z = 0
  78. FCV_KI = FCV_KI + 1;
  79. FCV_Z = 0;
  80.  
  81.  
  82. }
  83.  
  84.  
  85. }
  86. void interrupt()
  87. {
  88.  
  89. //Handle timer0 interrupt
  90. if( intcon & (1<<T0IF) )
  91. {
  92. clear_bit( intcon, T0IF ); //clear timer 0 interrupt bit
  93. }
  94.  
  95. //Handle timer1 interrupt
  96. if( pir1 & (1<<TMR1IF) )
  97. {
  98. clear_bit( pir1, TMR1IF ); //clear timer 1 interrupt bit
  99. }
  100.  
  101. //Handle timer2 interrupt
  102. if( pir1 & (1<<TMR2IF) )
  103. {
  104. clear_bit( pir1, TMR2IF ); //clear timer 2 interrupt bit
  105. }
  106.  
  107. }
  108.  
  109. main ( void )
  110. {
  111. //Configure port A
  112. trisa = 0x00;
  113. //Configure port B
  114. trisb = 0x00;
  115.  
  116. //Initialize port A
  117. porta = 0x00;
  118. //Initialize port B
  119. portb = 0x00;
  120.  
  121. cmcon = 7; //disable comparators
  122.  
  123. //Set Timer0 mode
  124. set_bit( option_reg, T0CS ); //configure timer0 as a counter
  125. //Set prescaler assignment
  126. clear_bit( option_reg, PSA ); //prescaler is assigned to timer0
  127. //Set prescaler rate
  128. clear_bit( option_reg, PS2 ); //prescaler rate 1:2
  129. clear_bit( option_reg, PS1 );
  130. clear_bit( option_reg, PS0 );
  131. //Set timer0 source edge selection
  132. set_bit( option_reg, T0SE ); //increment on high-to-low transition on RA4/T0CKI pin
  133.  
  134. //Set timer 1 prescaler rate
  135. clear_bit( t1con, T1CKPS1 ); //prescaler rate 1:1
  136. clear_bit( t1con, T1CKPS0 );
  137. //Set timer 1 mode
  138. clear_bit( t1con, TMR1ON ); //disable timer 1
  139.  
  140. //Set timer 2 prescaler rate
  141. clear_bit( t2con, T2CKPS1 ); //prescaler rate 1:1
  142. clear_bit( t2con, T2CKPS0 );
  143. //Set timer 2 postscaler rate
  144. clear_bit( t2con, TOUTPS3 ); //postscaler rate 1:1
  145. clear_bit( t2con, TOUTPS2 );
  146. clear_bit( t2con, TOUTPS1 );
  147. clear_bit( t2con, TOUTPS0 );
  148. //Set timer 2 mode (enable or disable)
  149. clear_bit( t2con, TMR2ON ); //enable timer 2
  150.  
  151.  
  152. //Enable interrupts (Timer0)
  153. intcon = 0xA0;
  154.  
  155.  
  156. //Megszakítás inicializáló kód
  157. option_reg = 0xC0;
  158.  
  159.  
  160. //Ciklus
  161. //Ciklus: Amíg1
  162. while (1)
  163. {
  164. //Többirányú elágazás
  165. //Többirányú elágazás: ki?
  166. switch (FCV_KI)
  167. {
  168. case 1:
  169. {
  170. //Makró hívás
  171. //Makró hívás: timer2
  172. FCM_timer2();
  173.  
  174.  
  175. //Feltételes elágazás
  176. //Feltételes elágazás: z = 0?
  177. if (FCV_Z == 0)
  178. {
  179. //Késleltetés
  180. //Késleltetés: 1000 ms
  181. delay_ms(255);
  182.  
  183.  
  184. //Kimenet
  185. //Kimenet: 0 -> B4
  186. trisb = trisb & 0xef;
  187. if (0)
  188. portb = (portb & 0xef) | 0x10;
  189. else
  190. portb = portb & 0xef;
  191.  
  192.  
  193. //Késleltetés
  194. //Késleltetés: 1000 ms
  195. delay_ms(255);
  196.  
  197.  
  198.  
  199. //Kimenet
  200. //Kimenet: 1 -> B4
  201. trisb = trisb & 0xef;
  202. if (1)
  203. portb = (portb & 0xef) | 0x10;
  204. else
  205. portb = portb & 0xef;
  206.  
  207.  
  208. //Késleltetés
  209. //Késleltetés: 1000 ms
  210. delay_ms(255);
  211.  
  212.  
  213.  
  214. //Kimenet
  215. //Kimenet: 0 -> B4
  216. trisb = trisb & 0xef;
  217. if (0)
  218. portb = (portb & 0xef) | 0x10;
  219. else
  220. portb = portb & 0xef;
  221.  
  222.  
  223. //Késleltetés
  224. //Késleltetés: 1000 ms
  225. delay_ms(255);
  226.  
  227.  
  228.  
  229. //Kimenet
  230. //Kimenet: 1 -> B4
  231. trisb = trisb & 0xef;
  232. if (1)
  233. portb = (portb & 0xef) | 0x10;
  234. else
  235. portb = portb & 0xef;
  236.  
  237.  
  238. //Késleltetés
  239. //Késleltetés: 1000 ms
  240. delay_ms(255);
  241.  
  242.  
  243.  
  244. //Kimenet
  245. //Kimenet: 0 -> B4
  246. trisb = trisb & 0xef;
  247. if (0)
  248. portb = (portb & 0xef) | 0x10;
  249. else
  250. portb = portb & 0xef;
  251.  
  252.  
  253. //Késleltetés
  254. //Késleltetés: 500 ms
  255. delay_ms(255);
  256. delay_ms(245);
  257.  
  258.  
  259. //Kimenet
  260. //Kimenet: 1 -> B1
  261. trisb = trisb & 0xfd;
  262. if (1)
  263. portb = (portb & 0xfd) | 0x02;
  264. else
  265. portb = portb & 0xfd;
  266.  
  267.  
  268. //Késleltetés
  269. //Késleltetés: 500 ms
  270. delay_ms(255);
  271. delay_ms(245);
  272.  
  273.  
  274. //Kimenet
  275. //Kimenet: 0 -> B0
  276. trisb = trisb & 0xfe;
  277. if (0)
  278. portb = (portb & 0xfe) | 0x01;
  279. else
  280. portb = portb & 0xfe;
  281.  
  282.  
  283. }
  284.  
  285.  
  286. break;
  287. }
  288.  
  289. case 2:
  290. {
  291. //Makró hívás
  292. //Makró hívás: timer2
  293. FCM_timer2();
  294.  
  295.  
  296. //Feltételes elágazás
  297. //Feltételes elágazás: z = 0?
  298. if (FCV_Z == 0)
  299. {
  300. //Késleltetés
  301. //Késleltetés: 200 ms
  302. delay_ms(200);
  303.  
  304.  
  305. //Kimenet
  306. //Kimenet: 1 -> B1
  307. trisb = trisb & 0xfd;
  308. if (1)
  309. portb = (portb & 0xfd) | 0x02;
  310. else
  311. portb = portb & 0xfd;
  312.  
  313.  
  314. //Késleltetés
  315. //Késleltetés: 300 ms
  316. delay_ms(255);
  317. delay_ms(45);
  318.  
  319.  
  320. //Kimenet
  321. //Kimenet: 0 -> B2
  322. trisb = trisb & 0xfb;
  323. if (0)
  324. portb = (portb & 0xfb) | 0x04;
  325. else
  326. portb = portb & 0xfb;
  327.  
  328.  
  329. } else {
  330. //Kimenet
  331. //Kimenet: 1 -> B3
  332. trisb = trisb & 0xf7;
  333. if (1)
  334. portb = (portb & 0xf7) | 0x08;
  335. else
  336. portb = portb & 0xf7;
  337.  
  338.  
  339. //Kimenet
  340. //Kimenet: 0 -> B1
  341. trisb = trisb & 0xfd;
  342. if (0)
  343. portb = (portb & 0xfd) | 0x02;
  344. else
  345. portb = portb & 0xfd;
  346.  
  347.  
  348. //Kimenet
  349. //Kimenet: 1 -> B2
  350. trisb = trisb & 0xfb;
  351. if (1)
  352. portb = (portb & 0xfb) | 0x04;
  353. else
  354. portb = portb & 0xfb;
  355.  
  356.  
  357. }
  358.  
  359.  
  360. break;
  361. }
  362.  
  363. case 3:
  364. {
  365. //Késleltetés
  366. //Késleltetés: 700 ms
  367. delay_ms(255);
  368. delay_ms(255);
  369.  
  370.  
  371. //Kimenet
  372. //Kimenet: 0 -> B1
  373. trisb = trisb & 0xfd;
  374. if (0)
  375. portb = (portb & 0xfd) | 0x02;
  376. else
  377. portb = portb & 0xfd;
  378.  
  379.  
  380. //Késleltetés
  381. //Késleltetés: 200 ms
  382. delay_ms(200);
  383.  
  384.  
  385. //Kimenet
  386. //Kimenet: 0 -> B3
  387. trisb = trisb & 0xf7;
  388. if (0)
  389. portb = (portb & 0xf7) | 0x08;
  390. else
  391. portb = portb & 0xf7;
  392.  
  393.  
  394. //Kimenet
  395. //Kimenet: 1 -> B0
  396. trisb = trisb & 0xfe;
  397. if (1)
  398. portb = (portb & 0xfe) | 0x01;
  399. else
  400. portb = portb & 0xfe;
  401.  
  402.  
  403. //Kimenet
  404. //Kimenet: 1 -> B4
  405. trisb = trisb & 0xef;
  406. if (1)
  407. portb = (portb & 0xef) | 0x10;
  408. else
  409. portb = portb & 0xef;
  410.  
  411.  
  412. //Számítás
  413. //Számítás:
  414. //  ki = 0
  415. //  x = 0
  416. //  z = 0
  417. FCV_KI = 0;
  418. FCV_X = 0;
  419. FCV_Z = 0;
  420.  
  421.  
  422. break;
  423. }
  424.  
  425. default:
  426. {
  427. //Makró hívás
  428. //Makró hívás: timer
  429. FCM_timer();
  430.  
  431.  
  432. //on
  433. //Kimenet: 1 -> B0
  434. trisb = trisb & 0xfe;
  435. if (1)
  436. portb = (portb & 0xfe) | 0x01;
  437. else
  438. portb = portb & 0xfe;
  439.  
  440.  
  441. //Kimenet
  442. //Kimenet: 1 -> B4
  443. trisb = trisb & 0xef;
  444. if (1)
  445. portb = (portb & 0xef) | 0x10;
  446. else
  447. portb = portb & 0xef;
  448.  
  449.  
  450. }
  451. }
  452.  
  453.  
  454. }
  455.  
  456.  
  457. mainendloop: goto mainendloop;
  458.  
  459. }

köszönöm a segítséget

Led.hex
    
(#) aroxol válasza Zsora hozzászólására (») Júl 6, 2012 /
 
Gomb1-re ezt gondoltam, a gomb 2-re még semmi ötletem.

GOMB1

BTFSC GOMB ;gomb megnyom led nem világit.
BSF LED
CALL TIMER ;idözités indul
BCF LED
BRA GOMB1

TIMER

movlw .96
movwf T10
movlw 0x00
movwf TMR1H
movlw 0x00
movwf TMR1L
BSF TMR1_STAR
(#) Zsora válasza aroxol hozzászólására (») Júl 6, 2012 /
 
Bocs, de ez nem program, hanem egy zagyvaság. Eleve az utasítások használatával nem vagy tisztában.
Megírtam PIC16F628A-ra az én elgondolásomat; ez kiindulásnak jó.

  1. LIST    p=16F628a
  2. #include "P16F628A.INC"
  3.  
  4. ORG 0
  5. goto kezd
  6.  
  7. ;------------------------
  8. kezd
  9. banksel TRISB
  10. movlw b'11111011' ;LED, _Gomb2, _Gomb1
  11. movwf TRISB
  12. banksel PORTA
  13. bcf PORTA,2 ;LED kikapcsolása
  14. ;------------------------
  15. ell1
  16. btfss PORTB,2 ;LED világít?
  17. btfsc PORTB,0 ;Gomb1 megnyomva?
  18. goto ell2
  19. timer
  20. movlw 0x00
  21. movwf TMR1H
  22. movlw 0x00
  23. movwf TMR1L ;Timer1 kezdőérték
  24. movlw b'00110101'
  25. bcf PIR1,TMR1IF ;Timer1 megszakításjelző törlése
  26. movwf T1CON ;Timer1 beállítása és indítása
  27. bsf PORTB,2 ;LED bekapcsolása
  28. goto vege
  29. ;------------------------
  30. ell2
  31. btfss PORTB,1 ;Gomb2 nincs megnyomva?
  32. goto lekapcs
  33. btfss PIR1,TMR1IF ;Timer1 túlcsordult?
  34. goto vege
  35. lekapcs
  36. bcf T1CON,TMR1ON ;Timer1 megállítása
  37. bcf PORTB,2 ;LED kikapcsolása
  38. ;------------------------
  39. vege
  40. goto ell1
  41. ;------------------------
  42. END
(#) Zsora válasza Zsora hozzászólására (») Júl 6, 2012 /
 
Kapkodok. A 12. és 13. sorban PORTB-t akartam írni.
Mellékelem a (remélem) jó kódot.
(A gombok alaphelyzetben magas állapotúak, megnyomva testre zárnak. PortB-n lehet használni a beépített felhúzóellenállásokat. A LED aktív magas.)

Timer.txt
    
(#) pajti2 válasza Hp41C hozzászólására (») Júl 6, 2012 /
 
Bizony a C nem arra lett kitalálva, hogy attól legyen gyorsabb egy program. Viszont a kód alkalmazás szintű részei cpu verzió függetlenül hordozhatóak lesznek akár arm-ra is, és az azért nem kicsike előny. Ami meg a teljesítmény veszteséget illeti, nos, azért kell egy teljesítmény erősebb pic. Persze ez relatív, függvénye az elvárásoknak. Egy led villogtatáshoz pld bármilyen vacak kicsi pic megteszi a belső gagyi generátorával. LCD vezérléshez már nem biztos, hogy bármi elég lesz az épelméjű sebesség peremfeltételével. Végső soron a kényelem mindig is pénzbe fog kerülni. Ez ellen ugyan hiába hadakozol..
(#) aroxol válasza Zsora hozzászólására (») Júl 6, 2012 /
 
Köszönöm, valami lehet még vele, mert beégetve nem indul el, 4mhz külsö quarz, bemenetek felhuzva, 4.2V táp.
Probáltam a PIC Simulator IDE-vel, ott csak villog az RB2, bemenetekre reagál, de ha jol látom nem gomb nyomásra indul.
(#) vilmosd válasza pajti2 hozzászólására (») Júl 6, 2012 /
 
Itt vegulis nem errol van szo, hanem hogy egy kezdo, nulla elektronikai es programozasi ismeretekkel rendelkezo versenyzo hogyan kezdjen el megmartozni a uC vilagaban. Erre szoktam mondani, hogy egy 12F6xx szintu PIC + ASM az ajanlatos kezdo keszlet. Olcso, keves koltseg, IDE gratisz. Mi kell meg? Persze turelem a versenyzo es a forum kozossege reszerol. De egy ilyen PIC32 + C ajanlat csak megzavarja az amugyis zavaros ismereteket. Lehet hogy aki mar tizen eve gyuri a programozast annak a cel erdekeben egyszerubb egy (atom) eromuvel es valami draga C-vel dolgozni, de o" mar nem azon fog gondolkodni, hogy a LED aramat hogyan korlatozom, es hogyan lehet egy labat kimenetnek vezerelni.
(#) kissi válasza vilmosd hozzászólására (») Júl 6, 2012 /
 
Egyetértek, annyi változtatással, hogy debuggolható típus legyen ( a hibakeresés megtanulásához és gyorsításához ), amire a 12F6xx nem a legjobb/jó ajánlás!

Steve
(#) pajti2 válasza vilmosd hozzászólására (») Júl 6, 2012 /
 
Ami azt illeti, én is pontosan arról beszéltem, csak úgy látszik, a mércéink különbözőek.

Amikor én elkezdtem anno, foggal-körömmel kapartam a falat mire lenyeltem azt a 450valahány oldalas pic doksit olyan szinten, hogy jó a felét kvázi bemagoltam, mire össze tudott állni a kép, hogy mi hogyan. Szerintem híztam közben vagy fél kilót.. Márpedig ha valaki áramköri alapról asm-ben készít egy cuccost, nem igazán kínálkozik más megoldás. De ez egy precizitási elv. A mai "fiatalok" nem szükségszerűen csinálják így.

A C nyelv, és a létező alkalmazás lib-ek nagyon sok mindentől meg tudják kímélni a mai friss indulókat. Össze tudnak rakni úgy alkalmazást, hogy az MC lib-nél lejjebb nem mennek. Az adott eszköz elektronikai konfigját is supportolt include-okból szedi valami alap init a forráskód könyvtárak legmélyén. Nem kíváncsiak rá. Nem akarnak tőle fél kilót hízni. Még a hajszálaikat sem akarják abba beleőszíteni. És az a szitu, hogy én valahol meg is tudom érteni őket. Sokkal könnyebben lehet úgy megszerezni az első sikerélményeket, mintha muszáj lenne egyáltalán bármilyen adatlapot átolvasniuk. De ilyen supportot csak a legújabb pic-ekre kapnak igazán kényelmesen, a régiekre már nem.

Ha meg csak egy ledet megvillogtatni kell, kezdésnek arra is inkább az expressz pickit2 csomag saját paneljét használnám, mert egészben a kezükbe tudják kapni (lépésről lépésre szájbarágós fotókkal illusztrált leírás cakk-pakk mindenről), és részemről ebből a megfontolásból inkább annak a pic-nek az adatlapját javasolnám első továbblépésnek.

Külön dugaszpanelt fogni, huzalozgatni szerintem nyugodtan rá érnek második körben is, ha valaki mégis inkább a precíz teljesítményű dolgokra kíváncsi. Ugyanis nem biztos, hogy arra kíváncsi. A mai "elektroamatőrök" között egyre csak nő azok száma, akik nem is ismerik a papírzacsik illatát. Valaha ilyet el se hittem volna. De az már régen volt. Ilyenné lett a világ. Ha a system on chip feeling irányába menne tovább valaki, akár soha sem lesz szüksége az adatlap kotorászásokra, és inkább egy periféria felszerelt boardot fog szeretni.

Szerintem.
(#) Hp41C válasza pajti2 hozzászólására (») Júl 6, 2012 /
 
Hát igen... Amikor a színre lépett az USB és az Ethernet hálózat miatt a C, egyből megjelentek a kétszer - négyszer nagyobb programmemóriával rendelkező pic -ek... A 18F252 után a 18F2550, 18F2620 stb.

Ha egy nagy rendszered van már készen C -ben, akkor értem, hogy könnyebben portálhatod más kontrollerre, de itt még a kezdetekről van szó. Egy led villogtatásnál nem a portálás a lényeg...
Nem is a C -t elleneztem, hanem a nagyágyúval LED -re lövést. A 16F886, 18F2550 kezdésnek pont jó:
- Kidolgotott tematikus mintapéldasorozat, forrással pl. a mikroelektronika oldalán,
- Sok kész alkalmazás érhető el itt a fórumon és máshol is,
- Debuggolható, szimulálható,
- Elég sok modul van bennük, sok mindent ki lehet próbálni,
- Memória egy darabig elég lesz,
- Assembly, szimulátor, IDE, (többféle) C, Pascal, Basic, stb. fordító ingyen letölthető (csak korlátozott tulajdonságú lehet),
- Nem csak felületszerel tokban kaphatók, nagyáramú kimenetekkel rendelkeznek, 5V -ról táplálhatók
- Egy breadboardon elindíthatók,
- És az áruk is kedvező 500 .. 1500 Ft. Egy véletlen zárlat, túlfeszültség csak ennyit kockáztat, nem tízezreket.
(#) Hp41C válasza pajti2 hozzászólására (») Júl 6, 2012 /
 
Persze a korszakváltások...

Annó egy panelen egy Z80 -ról még azt sem tudhattad a beültetés után, hogy egyáltalán ki tudja olvasni az EEProm memóriáját, azt is le kellett tesztelni, hogy az utasítás megérkezi-e időben a processzorhoz, hogy a megfelelő memória van-e kiválasztva. Egy mikrokontrollernél ezek belső kötések, nem kell ellenőrizni.

Magas szintű programnyelveken (a periféria működését nem ismerő) programozók szokták kérdezni itt a fórumon, hogy miért nem megy az uart vétel az első karakter vétele után? De sokszor írtam ide le, hogy a válasz adása alatt ráfutás történik a vevőben... Ugyanis nem látja, hogy az adás programozottan megvárja az előző karakter elküldését.
(#) mhatalyak hozzászólása Júl 6, 2012 /
 
Szép estét minden kedves fórumozónak!

Meg építettem EZT! az IR vevőt, amit rá lehet tanítani akármilyen távirányító 3 gombjára és be lehet állítani, hogy a relé csak egy pillanatig húzzon be, vagy behúzva maradjon, amelyt az után kell beállítani, hogy a 3 gombot rá tanítottuk. Na most sikeresen rá tanítottam a 3 gombra, de nem lép tovább. Lehet az a gond, hogy nem tettem a kimenetre a szükséges alkatrészeket (relé, tranya, ellenállás), hanem csak egy 3 ledet tettem a 3 kimenetre? Kicsit kacifántosra sikerült, de remélem, hogy azért ki lehet bogozni, hogy mit is akarok.

Előre is köszönöm a válaszokat!
mhatalyak
(#) vicsys válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Biztos, hogy nincs összefüggés. Valami más a gond...
(#) n_yálastrubadúr hozzászólása Júl 6, 2012 /
 
Szép estét!
Sajnos bénáskodom és a probléma újból feljött a táblázatkezeléssel kapcsolatban, amit hittem, hogy megoldottam. Elolvastam a segítségként linkelt olvasmányt, de nem teljesen értem. A programom akárhonnan felvesz egy értéket ami után hívja a táblát dekódolni az adatot és 50 definiált karakterem van. Ezzel a program teljesen hibásan működik. A programban több végtelen ciklus van amit gombbal lehet váltani, és a táblázat a kód érthető kijelzésre van egy 14 szegmenses kijelzőn. A táblázatom retlw utasításokból áll és a kód végén van, olyasmi kellene hogy akárhonnan hívja a táblát egy rutin megoldaná a PC címét és nem össze vissza menne. Vagy hogyan lehetne, kellene minden loopba valami mutató növelő? Kicsit összezavarodtam kivételesen ezzel.
(#) mhatalyak válasza vicsys hozzászólására (») Júl 6, 2012 /
 
Még arra is gondoltam, hogy talán amiatt lehet, hogy más típusú az infra vevő, meg nem 38Khz, hanem 36Khz, de szerintem nem ez a probléma mert érzékeli a távirányítót, egyszerűen csak nem lép tovább. Viszont rajz szerint kötöttem az 1. kimenetre mindent, de így nem is fogadja el a távirányítót, ezért gondoltam, hogy talán nem mindegy mi van a kimenetein.
(#) n_yálastrubadúr válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Meg lehet oldani benne van a kódban hogy momentary meg hasonló és azthiszem van egy boost led amit szintén feleslegesnek tartottam. Azthiszem ez ha nyomod csak akkor magas a kimenet.

200IRx.ASM
    
(#) mhatalyak válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Na jó, de én most ezzel mit kezdjek? Nem értek sajnos a PIC-ekhez, csak vásároltam egy pickit2-t és annyi hogy bele tudom égetni a HEX filet.
(#) n_yálastrubadúr válasza mhatalyak hozzászólására (») Júl 6, 2012 /
 
Többször olvasva rájövök,nem is értem a problémád. Nem lép tovább. Ez mit jelent, mi nem lép hova?
(#) mhatalyak válasza n_yálastrubadúr hozzászólására (») Júl 6, 2012 /
 
Hát annyi a lényeg, hogy van egy nyomógomb, amit ha meg nyomok, akkor világít az 1. LED ami az 1es relé lenne, addig világít még nem értelmezi a jelet a távirányítóból, ha ez meg van, akkor át lép a 2. ra és így tovább a 3. LED ig. ha ezt végig csinálom, akkor egy státusz led, elkezd gyorsan villogni és itt kell valahogyan beállítani, hogy melyik kimeneten mit csináljon a relé, tehát gombnyomásra behúzva marad, még ujból meg nem nyomom a gombot, vagy pedig addig húzzon be, ameddig nyomom a gombot, de nekem itt semmire sem reagál. Angol tudásom sajnos elég szegényes, de ennyit tudtam ki venni a szövegből.
Következő: »»   276 / 1210
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