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   179 / 1210
(#) Balagemann2031 hozzászólása Nov 27, 2011 /
 
Sziasztok!
Lenne egy olyan kérdésem, hogy hogyan lehet megoldani, D/A átalakítást 16F877A-n? Valamiért nem találok róla infót Akinek van pár perce rám, annak előre is köszi!
(#) icserny válasza Balagemann2031 hozzászólására (») Nov 27, 2011 /
 
Mivel nincs D/A átalakítója, csak teljesítményszabályozást lehet vele játszani a PWM egységgel (kitöltési tényező változtatása). Ha feszültségjel kell, a PWM kimenő impulzusait integrálni kell, legegyszerűbb esetben egy RC taggal.

A másik lehetőség: DAC IC illesztése (SPI, I2C vagy párhuzamos porton).
(#) trudnai válasza Balagemann2031 hozzászólására (») Nov 27, 2011 /
 
Vagy ellenallas letraval is csinalhatsz:

Bővebben: Link
(#) Balagemann2031 válasza icserny hozzászólására (») Nov 27, 2011 /
 
Helló! Végülis, nekem az lenne a lényeg, hogy egy adott 8 bites értékre, 0 és 5V közötti feszültségszinteket tudjak kicsikarni valamelyik lábon...SPI és I2C hez még nem értek sajnos, most kezdtem tanulmányozni a PWM-et, de azt hittem nem egy bonyolult, dolog amit szeretnék....Köszi azért! Üdv! Balázs
(#) Balagemann2031 válasza trudnai hozzászólására (») Nov 27, 2011 /
 
Az ellenállás létra elég macerásnak tűnik fizikailag, és a fejlesztőkörnyezetem adott, és ebben próbálkoznék De azért köszi! Üdv! Balázs
(#) vicsys válasza Balagemann2031 hozzászólására (») Nov 27, 2011 /
 
Vagy használj valamilyen kommunikációs busszal ellátott külső D/A átalakítót. Bővebben: Link
(#) icserny válasza Balagemann2031 hozzászólására (») Nov 27, 2011 /
 
Idézet:
„azt hittem nem egy bonyolult, dolog amit szeretnék....”
Szerintem egyáltalán nem bonyolult. PIC12F629-hez írtam az első PIC programomat, ami 16 bites DAC-ot hajtott meg SPI-vel. Szoftveresen oldottam meg a kiküldést: csak sorban ki kell forgatni a biteket.
(#) Balagemann2031 válasza icserny hozzászólására (») Nov 27, 2011 /
 
Szerintem ezt a d/a átalakítást, inkább hagyom egyenlőre, mert mint írtam, a fejlesztőkörnyezetemben lévő lehetőségeket szeretném előszőr megtanulni és használni, viszont külső eprom van a uC-re kötve SPI részre. Erről is tanulnom kell majd, de mivel még nem néztem utána, ezért nem terhelnék senkit a kérdéseimmel.. Üdv! Balázs
(#) peze hozzászólása Nov 27, 2011 /
 
Sziasztok!

Figyelem,bugyuta kérdés következik....
De az én szintemen ez még nagy feladatnak tűnik.
Adva van egy egyszerű nyomógomb kezelő programocska,és egy lcd vezérlő program,mely csak simán egy sort kiír a kijelzőre.Külön-külön mind a kettő
működik,de szeretném azt elérni,hogy "egymáshoz legyenek rendelve". Az az,ha megnyomom a gombot ,megjelenik a szöveg a kijelzőn.Hogy tudnám a gomb vizsgálatához hozzá rendelni az lcd programját?
Odáig értem,hogy ugye létezik a "BTFFS és BTFSC"utasítás..Ja mert,hogy assemblerben próbálkozok...Előre is köszönöm!
(#) bbalazs_ válasza peze hozzászólására (») Nov 27, 2011 /
 
Nem egeszen ertem, hogy hogy erted azt, hogy kulon mukodik a nyomogomb program. Ahhoz, hogy azt ellenorizd, valamit kell mukodtetnie, nem?
Szoval egyszeruen azt csereld ki az LCD progi hivasaval

Tegyk fel, hogy kezdokhoz meltoan a bemenet le van huzva es te pozitivot adsz ra a gomb megnyomasaval. Mondjuk legyen a portb6-on a bemenet.
Akkor

btfsc portb,6
call LCD_rutin
tovabbfut:

Ha az lcd rutin utan mashova kell ugranod, akkor

btfss portb,6
bra tovabbfut
call LCD_rutin
bra mashova
tovabbfut:
(#) peze válasza bbalazs_ hozzászólására (») Nov 27, 2011 /
 
Köszönöm a válaszodat!

Igen ilyesmiről van szó.Azt hiszem,értem..
A nyomógomb program most egy ledet működtet az egyik lábon rendesen.Azt őt "bekapcsoló" sort kicseréltem én is az általad leírt call utasításra.
Egyébként pont a portb6-on van a kapcsoló..
A gáz az,hogy az lcd programrésznek igazából nem látom,
hogy melyik részét kéne meghívnom.Azt hogyan tudnám elérni,hogy az lcd több részből álló programját egy egésznek tekintse? A végére "return"kell tennem,ugye?
(#) bbalazs_ válasza peze hozzászólására (») Nov 28, 2011 /
 
Szerintem ha bemasolod, linkeled, akkor latjuk mi is.
Ugye az LCD kezeles tobb reszbol all.
Eloszor is inicializalni kell a kijelzot, ez maga is tobb lepeses. Ezt csak egyszer kell megtenni, a program legelejen.

Aztan ahhoz, hogy adatot irhass ra, kulonbozo dolgokat kell csinalni, pl. tudatni vele, hogy irni szeretned (R/W lab), beirni az adatot (data labak), tudatni vele, hogy ez most parancs vagy adat (d/c lab) vegul, hogy ervenyes az adat (Enable/Valid).
Ez a legalacsonyabb szint, egy db adat vagy parancs kivitele (sot, 4 bites modban csak a fele).

Szoval tanulmanyoznod kellene a programot. Altalaban a neve utal ra, hogy a rutin mit csinal (pl. BYTE_OUT)
Igen, a call altal meghivott rutint return-el illik befejezni.

De a kerdeseidet latva nem biztos, hogy egybol az LCD-vel kellene kezdened...
(#) tirisztortetróda hozzászólása Nov 28, 2011 /
 
Sziasztok. Egy GPS modult szeretnék pic-el soros porton keresztül használni. A GPS modul nem tartalmaz RS-232 szint illesztőt de erre nem is lenne szükség elvileg. Viszont a szint illesztő kimenete invertált lenne, ezért az lenne a kérdésem, hogy kell e invertálnom a GPS-től érkező adatot mielőtt a pic-be küldöm. Válaszotokat előre is köszönöm.
(#) Hp41C válasza tirisztortetróda hozzászólására (») Nov 28, 2011 /
 
RS232 szintillesztő biztosan nem kell. Mekkora tápfeszültségről jár a kontroller és a GPS modul? Ha a modul és a kontroller ugyan arról a tápfeszültségről üzemel, akkor nem kell illesztés. Ha a kontroller 5V -tal megy, de a GPS alacsonyabbról, akkor logikai szintillesztés kell.
(#) peze válasza bbalazs_ hozzászólására (») Nov 28, 2011 /
 
Köszönöm! És tudom,hogy egy kicsit erőn felül vállaltam..
Itt van a program,most csak úgy "össze ollózva" a nyomógomb,illetve az lcd kezelő részek...Ugye itt most a PORTD 1 es lábán levő led van ki-be kapcsolgatva..
Ami önállóan működik is.Gondolom a "BSF PORTD,1"
utasítás helyén kéne meghívnom az lcd-t.
Előre is köszönöm,ha foglalkozol vele..
(#) tirisztortetróda válasza Hp41C hozzászólására (») Nov 28, 2011 /
 
Szia. Köszönöm a gyors válaszodat. A kontroller 5v-ról a gps 3.3-v ról megy. Én is erre tippeltem, amit te mondtál, csak nem értem, hogy miért invertál akkor a szint illesztő ? És ha invertál, akkor hogy kapok helyes adtbyte-okat pl ha terminállal nézném a gps kimenetét. Vagy rosszúl tudom, és nem invertál a max-232 ?
(#) Hp41C válasza tirisztortetróda hozzászólására (») Nov 28, 2011 /
 
A TTL - RS232 konverterek (max232 és társai, a mc1488 és mc1489 75150, 75154 stb.) " invertálnak", azaz a logikai magas szintjük -12 ..-3V, a logikai alacsony +3..+12V. A GPS magas szintje majdnem 3.3V az alacsony szintje 0V. A pic minimális bemeneti szintje az Rx lábon 5.0V táp mellett 4.0V. Ide mindenképen kell egy illesztés. a kimeneti szintje a Tx lábon majdnem 5V, ide elég egy feszültségosztó. A témával egy egész topik foglalkozik...
(#) tirisztortetróda válasza Hp41C hozzászólására (») Nov 28, 2011 /
 
Köszönöm, meg fogom nézni a topikot, a szintillesztés része teljesen világos a dolognak, az adatok "invertálását" nem értem.
(#) Georgee hozzászólása Nov 28, 2011 /
 
Üdv mindenkinek, kicsit elakadtam a PIC-es témában, adott egy 16f628-as PIC amit a céláramkörben szeretnék majd programozni, illetve későbbiekben az eszközt frissítés céljából nem akarom szétszedni, illetve az IC-t kiszedni. A B porton van 8 BIT-es módban egy LCD, de itt van a PGC és a PGD láb is. Ha rácsatlakozok a programozóval, akkor a szoftver azt irja ki, hogy ismeretlen tipus, ha az LCD-t lehúzom róla viszont egyből kiírja, hogy PIC16F628A. Hogy lehetne megoldani, hogy az LCD-t ne keljen leszednem minden programozásnál? A válaszokat előre is köszönöm.
(#) nedudgi válasza Georgee hozzászólására (») Nov 28, 2011 /
 
A legegyszerűbb megoldás lenne az LCD-t 4 bites módban üzemeltetni, a PORTB alsó 4 bitjéről. Ehhez a kábelt kellene módosítani.
A program elejére, a PGC és PGD lábak outputra történő állítása elé tegyél késleltetést, hogy a PICKIT kezelésbe tudja venni a kontrolleredet.
(#) Georgee válasza nedudgi hozzászólására (») Nov 28, 2011 /
 
Köszi a segítséget. Még egyelőre marad a 8bit most kóstolgatom a PIC-ek világát.
(#) Poostmaster válasza peze hozzászólására (») Nov 28, 2011 /
 
Alapvetően jól működhet, de van egy-két hiba.
Nem tudom, miért van kétszer a PORTB törlése, de ez nem is sokat számít, csak fölösleges.
Ahhoz, hogy működjön, a setportot emeld ki, és tedd a program elejére.Az ANSELH után.
Csak sebtében futottam át, de talán így működik. Ami gondot jelenthet, az az, hogy a PORTB6-ot az LCD RS vezetékének definiáltad, és részt vesz a gombkezelésben is. Egyébként jól gondoltad, a PORTD1-re való hivatkozásnál kellene meghívni az LCD írás rutinját.
Most ennyi. Biztos mások is kiegészítik még.
Jól haladsz.
(#) alap hozzászólása Nov 29, 2011 /
 
Sziasztok
Tudna nekem valaki segíteni a PIC --hez jól működő égetőt, kapcsolási rajzot küldeni.
Előre köszönöm.
(#) icserny válasza alap hozzászólására (») Nov 29, 2011 /
 
Kapcsolások, PIC szekció. Van több is, szolgáld ki magad!
(#) csaba7575 hozzászólása Nov 29, 2011 /
 
Sziasztok.
Segítséget szeretnék kérni. Most kezdtem igazán soros porton programozni pic basicben.Küldök egy adatot, ami így néz ki. +000 mikor a negyedik értéket megnézném, akkor lefagy az egész de +00 ig tökéletesen működik a lent megadót kóddal. Mi lehet a probléma. Az adatott egy 7szegmenses kijelzőre írom ki, egymás után. Mi a baj? Lehet az egész program semmit nem ér? Kérlek, segítsetek. Előre is köszönöm.
Oshon basic programozóval készítem a programot és ott is PC' serial port terminálban nézem a soros vonalat.

  1. programom: AllDigital
  2. 'az oshon basic - nek nagyon jó a segítsége, és is azzal használtam.van benne demópélda is soros port kezelésre.
  3. Define CONF_WORD = 0x3f72
  4. Define CLOCK_FREQUENCY = 20
  5. Dim i As Byte
  6. Dim j As Byte
  7. Hseropen 9600  'port állítás
  8. WaitMs 2000
  9. '-7 szegmens teszt-
  10. teszt:
  11. High PORTC.2
  12. High PORTC.3
  13. Low PORTB.0
  14. WaitMs 100
  15. High PORTB.0
  16. WaitMs 5
  17. Low PORTB.1
  18. WaitMs 100
  19. High PORTB.1
  20. WaitMs 5
  21. Low PORTB.2
  22. WaitMs 100
  23. High PORTB.2
  24. WaitMs 5
  25. Low PORTB.3
  26. WaitMs 100
  27. High PORTB.3
  28. WaitMs 5
  29. Low PORTB.4
  30. WaitMs 100
  31. High PORTB.4
  32. WaitMs 5
  33. Low PORTB.5
  34. WaitMs 100
  35. High PORTB.5
  36. WaitMs 5
  37. Low PORTB.6
  38. WaitMs 100
  39. High PORTB.6
  40. WaitMs 5
  41. Low PORTB.7
  42. WaitMs 100
  43. High PORTB.7
  44. WaitMs 5
  45. '-soroport teszt hiper terminálban látszik'-
  46. For i = 2 To 0 Step -1
  47. Hserout " ", #i, CrLf
  48. WaitMs 100
  49. Next i
  50. '-adatfigyelés-
  51. adatfi:
  52. Low PORTC.2  'Low PORTC.4
  53. Low PORTC.3  'Low PORTC.1
  54. Low PORTD.0  'Low PORTC.0
  55. Low PORTD.1  'Low PORTC.2
  56. Hserin i
  57. If i = 43 Then Goto plussz
  58. 'If i = 52 Then Goto negy
  59. 'If i = 53 Then Goto ott
  60. 'If i = 54 Then Goto hat
  61. 'If i = 55 Then Goto het
  62. 'If i = 56 Then Goto nyolc
  63. 'If i = 57 Then Goto kilenc
  64. High PORTD.1
  65. WaitMs 200
  66. Low PORTD.2
  67. WaitMs 100
  68. Goto adatfi
  69. '-+jel kiírás-
  70. plussz:
  71. Hserout "adat: ", i, CrLf
  72. High PORTC.3
  73. Low PORTB.6
  74. WaitMs 200
  75. High PORTB.6
  76. Low PORTC.3
  77. WaitMs 2
  78. Goto most
  79. '-0-
  80. most:
  81. For j = 1 To 3
  82. Hserin i
  83. If i = 48 Then Goto null
  84. If i = 49 Then Goto egy
  85. If i = 50 Then Goto kett
  86. If i = 51 Then Goto har
  87. null:
  88. Hserout "adat: ", i, CrLf
  89. High PORTC.3
  90. Low PORTB.0
  91. Low PORTB.1
  92. Low PORTB.2
  93. Low PORTB.3
  94. Low PORTB.4
  95. Low PORTB.5
  96. WaitMs 200
  97. High PORTB.0
  98. High PORTB.1
  99. High PORTB.2
  100. High PORTB.3
  101. High PORTB.4
  102. High PORTB.5
  103. Low PORTC.3
  104. WaitMs 2
  105. Goto mostt
  106. '-1-
  107. egy:
  108. Hserout "adat: ", i, CrLf
  109. High PORTC.3
  110. Low PORTB.1
  111. Low PORTB.2
  112. WaitMs 200
  113. High PORTB.1
  114. High PORTB.2
  115. Low PORTC.3
  116. WaitMs 2
  117. Goto mostt
  118. '-2-
  119. kett:
  120. Hserout "adat: ", i, CrLf
  121. High PORTC.3
  122. Low PORTB.0
  123. Low PORTB.1
  124. Low PORTB.3
  125. Low PORTB.4
  126. Low PORTB.6
  127. WaitMs 200
  128. High PORTB.0
  129. High PORTB.1
  130. High PORTB.3
  131. High PORTB.4
  132. High PORTB.6
  133. Low PORTC.3
  134. WaitMs 2
  135. Goto mostt
  136. '-3-
  137. har:
  138. Hserout "adat: ", i, CrLf
  139. High PORTC.3
  140. Low PORTB.0
  141. Low PORTB.1
  142. Low PORTB.3
  143. Low PORTB.2
  144. Low PORTB.6
  145. WaitMs 200
  146. High PORTB.0
  147. High PORTB.1
  148. High PORTB.3
  149. High PORTB.2
  150. High PORTB.6
  151. Low PORTC.3
  152. WaitMs 2
  153. mostt:
  154. Next j
  155. Goto adatfi
(#) csaba7575 válasza (») Nov 29, 2011 /
 
Rendben. Elnézést. Köszi.
(#) bbalazs_ válasza peze hozzászólására (») Nov 29, 2011 /
 
Ez egy egyszer lefuto program lenne?
Mert ha egyszer kint van az LCD-n, akkor mi a kovetkezo lepes?
En ugy csinalnam, hogy amig nyomod a gombot, addig kint van, utana torli.

Egybkent minden OK, egyedul meg a START elott kellene az inicialast meghivni, a tobbi maradhat.
Ahogy latod, retlw-vel ter vissza, ahelyett lehet sima returnt is irni, mert a visszateresi ertek most nem kell (KIVEVE a hexchar PCL-es reszt, ott fontos szerepe van!).
(#) Firefighter1 hozzászólása Nov 30, 2011 /
 
Szaisztok!
Volna egy gondom. Adott a mellékletben csatolt áramkör.
x2,x3,x4-en nyomógombok csatlakoznak a ledek villogását változtatják, Tökéletesen fut a progi ugy ahogy kell.
Viszont ha x2-re rászeretnék kötni egy másik pic kimenetét tehát hogy nyomógomb helyet a pic vezérelje akkor azt úgy kéne megoldanom ha jól tippelek hogy 200 OHm-os ellenálláson keresztül össze kötöm a két picet és a vezérlő pic kimenete folyamatosan logikai magason van, amikor meg váltani szeretnék akkor logikai alacsonyra vált.
Vagy pedig inkább műveleti erősítőként valamilyen tarnyóval csináljam?
Köszönöm

pic16F627.sch
    
(#) csaba7575 válasza Firefighter1 hozzászólására (») Nov 30, 2011 /
 
Szia.
Nekem egy 16f877 pic volt összekötve egy pic 16f84a ?val és semmit nem tettem közé és most már 3 éve így működnek kint több darab. 16f877 3 lábat kötöttem össze a 16f84a a 3lábával. nagy Pic indítottam a kis Pic-et. Sajnos a fájlodat nem tudtam megnyitni.
Rakd ki a program részletet és megpróbálok segíteni.
(#) kissi válasza Firefighter1 hozzászólására (») Nov 30, 2011 /
 
Teljesen jó az általad leírt módszer ( még az ellenállást is kihagyhatod, ha biztos vagy magadban ! ) , csak ne felejtsd el visszaváltani a szintet ( a gombot sem tartod folyamatosan lenyomva! ) .

A rajzodat én sem láttam, legközelebb képet tegyél fel, nem mindenki ugyanazt a szoftvert használja!

Steve
Következő: »»   179 / 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