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   187 / 1211
(#) Amjad hozzászólása Dec 26, 2011 /
 
Sziasztok. Továbbra is hiába nézem, nem jövök rá, hogy miért villog az az istenverte led. Ha a főprogramban bekapcsolom, és a megszakításban ki szeretném kapcsolni akkor is ugyan úgy villog, csak akkor bekapcsolva marad, és világít folyamatosan, amíg nem nyomkodom a távirányítót. Meg tudná mondani valaki, hogy miért?
  1. LIST P= 16F627
  2. #INCLUDE "P16F627.INC"
  3. ERRORLEVEL 0, -302
  4.  
  5. __CONFIG _CP_OFF&_WDT_OFF&_LVP_OFF&_INTRC_OSC_NOCLKOUT
  6.  
  7. CBLOCK 0X70
  8. W_TEMP
  9. STATUS_TEMP
  10. ENDC
  11.  
  12. ORG 0x00
  13. GOTO MAIN
  14.  
  15. ORG 0x04
  16. MOVWF W_TEMP
  17. SWAPF STATUS,W
  18. MOVWF STATUS_TEMP
  19. BTFSC INTCON,INTF
  20. GOTO MEGSZ_RB0
  21. RETFIE
  22.  
  23. MEGSZ_RB0
  24. BCF INTCON,INTF
  25. BSF PORTA,1
  26. GOTO MEGSZKILEP
  27.  
  28. MAIN
  29. MOVLW 0x07
  30. MOVWF CMCON
  31. CLRF PORTA
  32.  
  33. BANKSEL TRISA
  34. MOVLW 0x00
  35. MOVWF TRISA
  36. MOVLW 0x01
  37. MOVWF TRISB
  38. MOVLW B'11000000'
  39. MOVWF OPTION_REG
  40.  
  41. BANKSEL PORTA
  42. BSF INTCON,INTE
  43. BSF INTCON,GIE
  44.  
  45. LOOP
  46. NOP
  47. GOTO LOOP
  48.  
  49. MEGSZKILEP
  50. SWAPF STATUS_TEMP,W
  51. MOVWF STATUS
  52. SWAPF W_TEMP,F
  53. SWAPF W_TEMP,W
  54. RETFIE
  55.  
  56. END
(#) Hp41C válasza Amjad hozzászólására (») Dec 26, 2011 /
 
Idézet:
„__CONFIG (DEBUG_ON & LVP_OFF & FCMEN_OFF & IESO_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_ON & WDTE_OFF & FOSC_INTRC_NOCLKOUT & BOR4V_BOR21V);”


Nem jó gyakorlat a config szóban a DEBUG_ON szerepeltetése. A ICD, PICKit -tell való nyomkövetéshez Debug, az önnálló működéshez Release módú fordítás kell.
(#) Hp41C válasza Hp41C hozzászólására (») Dec 26, 2011 /
 
Az előző hozzászólásom inkább Speeddump -nak szólt...
(#) Amjad válasza Amjad hozzászólására (») Dec 26, 2011 /
 
Működik végre, csak azt kéne megoldanom, hogy kicsit stabilabb legyen, mert most nem minden gombnyomásra reagál ugyan úgy, a jelsorozat hosszából adódóan gondolom.
Erre más ötletem nincs, csak késleltetés a megszakításba (jujj), hogy addig ne térjen vissza, amíg vissza nem áll a bemenet.
(#) speedbump válasza Hp41C hozzászólására (») Dec 26, 2011 /
 
Speeddump höhö...
(#) fatti.tomtom hozzászólása Dec 26, 2011 /
 
Sziasztok! PIC programozásban jártas kollegát keresek egy-egy kisebb program elkészítéséhez... Most sokan azt kérditek, hogy miért nem én írom meg ezeket? Áramkörök tervezését és kivitelezését megcsinálom (elektronikai műszerész a szakmám), de programozáshoz láma vagyok. Jó pár irodalmat elolvastam, példákkal is teletűzdelve, de én már pár led villogtatásánál is simán elakadtam. Alap fogalmak magyarázatával is hadilábon állok (soha nem tanultam programnyelveket, számítógépeket hardwer szinten javítok és szoftver szinten használok, már több mint 25 éve), így maradt az, hogy "nem veszek egy tehenet csak azért, mert tejet szeretnék inni". Van prog-matos ismerősöm is, aki pc-re cél orientált programrendszereket ír, de mikor kiejtem a PIC programozás szavakat, csak a száját húzza! Biztosan boldogulnék, ha valaki segítene megértenem ezt az egészet, de mivel ez szinte kivitelezhetetlen, ezért így lenne egyszerűbb és gyorsabb megoldani a feladatot.
Szóval... Ha valaki tudna segíteni egy-két egyszerű feladaton át célt érni, nagyon örülnék neki! Megköszönve figyelmeteket... Maradok a témával kapcsolatos fórumok további lelkes, de kicsit sikertelen olvasója... Üdv!
(#) vilmosd válasza fatti.tomtom hozzászólására (») Dec 27, 2011 /
 
Ajanlanam a konyvespolcomat. Talalsz alapveto konyveket, mintapeldakat, gyakorlo panelokat, es meg sokminden mast is. Be kell szerezni valami programozo eszkozt, es csinalni egy demo panelt. A talalhato mintapeldakkal el lehet kezdeni gyakorolni akar HW nelkul is a MLAB SIM segitsegevel. A programozot tudnam ajanlani a PK2 gyarit, vagy utanepitettet. Itt a forumon talalsz kulon temat errol.
(#) morzsa15 hozzászólása Dec 27, 2011 /
 
Sziasztok!

Egy dvd olvasóból kiszedet 3 kivezetésű motort lehet pic-el vezérelni??
(#) fatti.tomtom hozzászólása Dec 27, 2011 /
 
Köszönöm a lelkesítő és segítőkész leveleket! Hogy mindenki értse, hogy mit is agyaltam ki, ide teszek egy linket, amiből gyorsan rá lehet érezni a lényegre. Üdv Mindenkinek! Link: https://rapidshare.com/files/3582815569/Jammer.zip
(#) trudnai válasza morzsa15 hozzászólására (») Dec 27, 2011 /
 
Idézet:
„Egy dvd olvasóból kiszedet 3 kivezetésű motort lehet pic-el vezérelni??”


Igen, lehet. Nezd at a "HDD motor vezerlese" c. topicot.
(#) fatti.tomtom válasza vilmosd hozzászólására (») Dec 27, 2011 /
 
Köszönöm a segítséget... Máris megyek és mazsolázok a könyvespolcodon! Égetőt már elkészítettem s működik is! Most jön a tudomány... Üdv! fatti
(#) zenetom hozzászólása Dec 27, 2011 /
 
Nézegettem ezt a CCP modult, de arra nem jöttem rá, hogyan lehet kikapcsolni, sőt, a blokkdiagramm szerint nem is lehet kikapcsolni.
Szóval ha mondjuk az RB3-ra van beállítva a CCP2MX konfigbit (vagyis a CCP2 láb), és beállítom a LATB3-at 1-be, majd 0-ba, akkor az egy fel-le futó élet jelent az RB3-as lábon, ami megszakítást generálhat.
Tehát arra jutottam hogy ki kell kapcsolni a CCP megszakítást. Viszont mivel nem használok megszakítást a programban, ezért kikapcsolom az összes megszakítást (INTCON/GIE).
(#) Hp41C válasza zenetom hozzászólására (») Dec 27, 2011 /
 
Nem írod, milyen típusú a kontroller. A 18F2550 CCP moduljainak leírásából:
Idézet:
„bit 3-0 CCPxM3:CCPxM0: CCPx Module Mode Select bits
0000 = Capture/Compare/PWM disabled (resets CCPx module)”
(#) zenetom válasza Hp41C hozzászólására (») Dec 27, 2011 /
 
Igen, 18F2550-ről van szó.
Én vaksi, pedig néztem ezt a regisztert, köszi, hogy írtál!
(#) speedbump hozzászólása Dec 27, 2011 /
 
Sziasztok,

A topic fejlécében van a következő sor: "- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre."

Értem az okát, de nem lehet ugyanezt elérni a __CONFIG (MCLRE_ON) sorral? Ez ha jól értem az IC-ben belülről Vdd-re húzza az MCLR lábat.

Köszönöm
(#) mate_x válasza speedbump hozzászólására (») Dec 27, 2011 /
 
Szia!

Úgy van, ahogy mondod, de ha kívülről húzod fel Vdd-re, akkor lehetőség van gnd-re húzni is, ami reseteli a kontrollert.
(#) speedbump válasza mate_x hozzászólására (») Dec 27, 2011 /
 
Aha! Na most már értem. Ez a jelentéktelen apróság eddig elkerülte a figyelmemet
(#) Hp41C válasza speedbump hozzászólására (») Dec 27, 2011 /
 
Idézet:
„...de nem lehet ugyanezt elérni a __CONFIG (MCLRE_ON) sorral...”


- A config szóban a MCLRE_OFF letiltja a külső reset vonalat. Ez az, amit szeretnél. A MCLRE_ON a külső MCLR lábhoz a reset funkciót rendeli.
- A MCLR lábat nem csak azért kell ellenállással a Vdd re húzni, hogy alacsony szintet tudjunk rá adni. Ha a külső reset le van tiltva, akkor is kell a felhúzó ellenállás. A MCLR lábon ugyanis nincs belső, a Vdd -re menő védődióda (hiszen a Vdd -nél magasabb Vpp feszültséget is el kell viselnie). A dióda hiánya érzékenyebbé teszi a bemenetet a zavarokra. A lábon megjelenő töltés az ellenállás hiányában nem tud eltávozni, felgyülemlik, a kontrollert programozási módba viheti, szélsőséges esetben a bemenetet tönkreteheti.
(#) ndavid87 hozzászólása Dec 27, 2011 /
 
Sziasztok!

Egy furcsa problémával állok szemben, és már hetek óta nem tudom megoldani.
Pic18f45k20 mikrovezérlőt kötöttem össze hardveres spi buszon néhány perifériával (sram, flash, lcd). Ezekkel külön-külön tudok kommunikálni, de ha mind be van kötve egyszerre, akkor a pic hibásan olvas tőlük adatot.
Először arra gondoltam, hogy érintkezési hiba, de kész nyákon is tapasztaltam a hibát. Több mikrovezérlővel is próbáltam (pic18f46k22, pic18f24k22, pic18f45k20)
A ic-k mindig megkapják a nekik szánt adatokat, és válaszolnak is rá. Olyan mint ha a pic 'si' lábát zavarná valami.
Mi okozhatja a problémát?
(#) speedbump válasza Hp41C hozzászólására (») Dec 27, 2011 /
 
Igen, lehet, hogy elírtam (még zöldfülű vagyok). Kösz a részletes felhomályosítást!
(#) bbalazs_ válasza ndavid87 hozzászólására (») Dec 28, 2011 /
 
Milyen nyelven programozod? Forditok lehetnek ludasok
Ha lassitasz a sebessegen, javul a dolog?
Biztos, hogy a jo adatokat kapjak meg a periferiak?
Hova irsz bit/byte muveletnel? PORT vagy LAT regiszterbe?
(#) Hp41C válasza ndavid87 hozzászólására (») Dec 28, 2011 /
 
Szia!

- Ha belső MSSI modult használod: Az SDI bemenet ST típusú 0.8*Vdd minimális magas szinttel. Kialakul ez a feszültségszint?

- Ha programozottan vezérled: Melyik kivezetés az SDI? Milyen típusú azon a lábon a bemenet? Ha itt is ST, akkor a 0.8*Vdd minimális magas szint itt is követelmény.

Ha a Vdd kisebb, mint 2.4V, akkor 0.9*Vdd lesz mindkét esetben a minimális magas szint.
(#) zenetom hozzászólása Dec 28, 2011 /
 
Járt már valaki úgy, hogy a PIC külső oszciról nem akart menni?
SMD 18F2550 nem akar menni, csak belső oszciról.
Külső oszciról (HS, XT, +PLL...) elindul, aztán randomba megáll. Ugyanaz az áramkör és program próbapanelon tökéletesen megy egy DIP tokos PIC-kel.
Bár kapott hideget-meleget, lehet az a baja.
(#) vicsys válasza zenetom hozzászólására (») Dec 28, 2011 /
 
Jó lenne ismerni, hogy mekkora a tápfesz és a kvarc, illetve milyen frekit akarsz beállítani. Az LVP ki van kapcsolva? MCLR fel van húzva?
(#) zenetom válasza vicsys hozzászólására (») Dec 28, 2011 /
 
Tápfesz 5V, kvarc 8MHz, illetve 4MHz-en is ugyanazt csinálja, LVP ki van kapcsolva, MCLR fel van húzva.
Tulajdonképpen nem feltétlenül a hibára vagyok kíváncsi (főleg hogy valószínűleg nincs hiba), mert szerintem a PIC döglődik, hanem hogy járt már így valaki.
(#) zenetom hozzászólása Dec 28, 2011 /
 
Lenne még egy kérdésem.
Van egy PIC, meg egy LCD kijelző. Tanácsos-e a PIC lábak és az LCD lábak közé rakni egy pár száz (220-330) ohmos ellenállást? Sokan direktbe kötik össze, de pár helyen láttam, hogy raknak ellenállást, gondolom áramkorlátozás miatt, ha valami baj lenne, ne okozzon nagyobb kárt az áram.
(#) vicsys válasza zenetom hozzászólására (») Dec 28, 2011 /
 
Így van. Én bízok magamban...
(#) ndavid87 válasza bbalazs_ hozzászólására (») Dec 28, 2011 /
 
Sziasztok!

Asm-ben programozom, és a pic hardveres ssp modulját használom.
A pic 16MHz-ről jár, az spi órajel osztója 4-re van állítva, de nagyobb osztóval is ez a helyzet.
A perifériáknak bírniuk kell (sram: 20MHz, flash 75MHz maximum órajelet tud adatlap szerint).
Olvasás után a LATB-be írom az eredményt.

Most két egyforma sram (23k256) és egy w25x64 flash memória van bekötve.
A programom a következőket csinálja:
- Inicializálja az első sram-ot.
- A legelső címre ír egy bájtot (b'10101010').
- Visszaolvassa a beírt bájtot, és kiírja portb-re (latb).
- Kis várakozás után ugyan ezt csinálja a második sram-al is, csak ide (b'01010101')-t ír
- Végül kiolvassa a flash legelső bájtját ami b'01000100'.
Ez idáig stabilan működik, viszont ha rákötöm az lcd-t is, akkor már a flash olvasásakor b'00000000'-t, b'00010001'-t, vagy b'00000011'-t kapok. Van, amikor már a sramoktól is mást olvas. Itt is van vagy háromféle variáció, ami b'10101010' helyett jelenik meg a ledeken.
Mivel az lcd-t csak írni lehet, csak 'sclk' és 'si' kivezetései vannak (tehát a pic 'si' lábához nem kapcsolódik).
A kijelzőhöz még nem szól a program, a chip select lábát H-n tartja, tehát ez nem zavarhatna bele a kommunikációba (spi buszos ez is).
Ha vissza lekötöm az áramkörről az lcd-t újra stabilan működik mind a három ic.
A kijelző működőképes, ugyan ezekkel a beállításokkal szépen elindul.
Ha az lcd helyett mást perifériát (vagy néha elég csak két üres vezeték) kötök be az is ugyan úgy belezavar az előző három ic olvasásába.
Amikor pic18f46k22/24k22 párossal próbálkoztam, ott már a második ic bekötésekor is jelentkezett ugyan ez a hiba.
Az egész áramkör 3.3V-ról jár, próbáltam pickit2-ről, elem és stab.ic-ről, és labortápról is, semmi válltozást nem tapasztaltam a működésben.

Hp41C:
Megpróbálom megmérni a feszültségszintet.

Köszönöm a válaszaitokat!
(#) ndavid87 válasza ndavid87 hozzászólására (») Dec 28, 2011 /
 
Most átírtam az spi órajel osztóját 64-re, azóta nem csinál semmit az áramkör.
Visszaírtam 4-re, de úgy sem.
Ezt nem hiszem el...
Csatolom a programot.
(#) Hp41C válasza ndavid87 hozzászólására (») Dec 28, 2011 /
 
Mivel programozod? Talán PICKit2 -vel? Az egyben egy 3 csatornás logikai analizátor is, amivel fel lehetne venni az SPI olvasás jelalakját is...
Következő: »»   187 / 1211
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