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   1151 / 1210
(#) sszasza válasza Hp41C hozzászólására (») Feb 16, 2021 /
 
Valóban, ezt a C99 is érti.
(#) sszasza válasza Hp41C hozzászólására (») Feb 16, 2021 /
 
Arra is van megoldás hogy a XC8 a változókat ugyanabban a sorrendben rakja az adatmemóriába, ahogy a C fileban írom? (mint az mplab C18 a pragma data 0xcim utan szép sorban tette) Nekem mindig összekutyulja, hacsak egyesével meg nem adom a címeket mindnek. Még másik bankba is tesz, pedig érthető oka nincs rá.
(#) aroxol hozzászólása Feb 17, 2021 /
 
Sziasztok!

Egy 12864b V2 LCD-t szeretnék életre kelteni PIC18-al assembly nyelven.

Feltúrtam a netet, de nem találtam konkrét leírást. Két soros LCD-vel nincs problémám, de úgy látszik ez sokban különbözik. Esetleg van valakinek asm példaprogramja?
(#) Pali79 válasza aroxol hozzászólására (») Feb 17, 2021 /
 
(#) aroxol válasza Pali79 hozzászólására (») Feb 17, 2021 /
 
Köszi. Sajnos nem segít. Megtaláltam az adatlapot, néztem pár C kódot, elvileg jó a programom. Nem egy ördöglakat. Minden portot kimértem, lepésről lépésre, időzítés még egy kicsivel több is. Ott tartok hogy lehet rossz az lcd.
(#) Pali79 válasza aroxol hozzászólására (») Feb 18, 2021 /
 
Az első példa program minimális változtatással megy 18-as szérián is. Esetleg vedd fel a kapcsolatot sonajkniz kollégával. Ő sok ilyen LCD-t használ és szinte kizárólag PIC18-at használ.
(#) ktamas66 válasza aroxol hozzászólására (») Feb 18, 2021 /
 
Ez nem az a program amire "büszkék vagyunk", kb. copy-paste módszerrel készült, a kommentek sem mindig vannak a helyükön, de én is csak egyszeri tesztre használtam.
Bővebben: Link
(#) aroxol hozzászólása Feb 18, 2021 /
 
Valaki rá tudna nézni?

Nem akar a kurzor eljönni.
  1. #include <P18F46K22.INC>
  2.  
  3.         __CONFIG        _CONFIG1H,      B'00100011' ; 010 = HS oscillator, PLL Diabled. 12MHz-ES KRISTÁLY
  4.  
  5.  
  6.         CBLOCK          0x00
  7.         MENNYI
  8.         WAIT
  9.         ENDC
  10.  
  11.         #DEFINE RS LATC,1
  12.         #DEFINE RW LATC,2
  13.         #DEFINE E LATC,3
  14.         #DEFINE D0 LATD,0
  15.         #DEFINE D1 LATD,1
  16.         #DEFINE D2 LATD,2
  17.         #DEFINE D3 LATD,3
  18.         #DEFINE D4 LATD,4
  19.         #DEFINE D5 LATD,5
  20.         #DEFINE D6 LATD,6
  21.         #DEFINE D7 LATD,7
  22.  
  23. WAIT_1MS   MACRO   MENNYI    ;10 usec id?zít? makro, 12MHz órajelre igazítva
  24.         MOVLW   MENNYI
  25.         MOVWF   WAIT   
  26.         MOVLW   200
  27.         NOP
  28.         NOP
  29.         NOP
  30.         NOP
  31.         NOP
  32.         NOP
  33.         NOP
  34.         NOP
  35.         NOP
  36.         NOP
  37.         DECFSZ  WREG
  38.         GOTO    $-16
  39.         DECFSZ  WAIT
  40.         GOTO    $-0x1E
  41.         ENDM
  42.  
  43. WAIT_1US        MACRO MENNYI    ;Ez az id?zít? macro 12MHz-n pont 1usec
  44.     MOVLW   MENNYI      ;Érték 2-255-ig adható
  45.     DECF    WREG
  46.     DECFSZ  WREG
  47.     GOTO    $-2
  48.     ENDM
  49.  
  50.         org 0000h
  51.  
  52.     PROGRAM_KEZD
  53.  
  54.         MOVLW B'00000000'
  55.         MOVWF TRISA
  56.         MOVLW B'00000000'
  57.         MOVWF TRISB
  58.         MOVLW B'00000000'
  59.         MOVWF TRISC
  60.         MOVLW B'00000000'
  61.         MOVWF TRISD
  62.         bcf RS
  63.         bcf RW
  64.         bcf E
  65.         WAIT_1MS .40   ;44.42ms
  66.  
  67. ;***************************************************************
  68.  
  69. LDC_INITAL:
  70.  
  71.  
  72. Function_set
  73.         MOVLW 0X30     ;8bit
  74.         CALL LCD_KIIRAS
  75.         WAIT_1US .105  ;108uS
  76.  
  77. Function_set_ismet
  78.         MOVLW 0X30    ;8bit
  79.         CALL LCD_KIIRAS
  80.         WAIT_1US .40  ;43.33uS
  81.  
  82. Display_ON_OFF_control
  83.         MOVLW 0X0F
  84.         CALL LCD_KIIRAS
  85.         WAIT_1US .105  ;108uS
  86.  
  87. Display_clear
  88.         MOVLW 0X01
  89.         CALL LCD_KIIRAS
  90.         WAIT_1MS .10   ;11.11ms
  91.  
  92. Entry_mode_set
  93.         MOVLW 0X06
  94.         CALL LCD_KIIRAS
  95.         WAIT_1MS .10   ;11.11ms
  96.         nop
  97. LOOP
  98.         CLRWDT
  99.         BRA LOOP
  100.  
  101. LCD_KIIRAS
  102.         bsf     E
  103.         movwf PORTD
  104.         bcf     E
  105.         RETURN
  106.  
  107.  
  108.         End
(#) Pali79 válasza aroxol hozzászólására (») Feb 18, 2021 /
 
Ez most sima karakteres kijelző? Egy apróságot láttam hirtelen. Szerintem az LCD_KIIRAS rutinba nem PORTD kellene legyen, hanem LATD. Egyébként én fordítva szoktam, kirakni az adatvonalakra a megfelelőt, aztán engedélyezni az E vonalat egy NOP-nyi időre, aztán vissza.
(#) aroxol válasza Pali79 hozzászólására (») Feb 18, 2021 /
 
Elvileg ez: Bővebben: Link
Köszönöm az észrevételt, teljesen jogos. Kijavítottam, próbáltam a NOP-t, semmi változás.
(#) moltam hozzászólása Feb 18, 2021 /
 
Helo.
Csak most kezdenék bele az asm próbálgatásába de már elakadtam. Rá kellett jöjjek hogy a sok példaprogram ami a neten kering nem sokra használható nekem, mert mind absolute módban van írva és pic-as nél ez a lehetőség megszűnt. Ha csak simán equ hoznék létre egy változót nem látja a debugger. Elvileg psect ekkel kéne bűvészkednem. Találtam egy ilyet
  1. PSECT   MainData,global,class=RAM,space=SPACE_DATA,delta=1,noexec
  2.     a_:    DS      1               ;reserve 1 byte
  3.     b_:    DS      1               ;reserve 1 byte

De így sem látja. Hogy tudok változót létrehozni és hol találok infot a psect paramétereiről?
A hozzászólás módosítva: Feb 18, 2021
(#) nedudgi válasza moltam hozzászólására (») Feb 18, 2021 /
 
Ezek a fejükre estek.
(#) Pali79 válasza aroxol hozzászólására (») Feb 18, 2021 /
 
Próbáld emelni a várakozási időket. Sokszor tapasztaltam, hogy az adatlapban leírtaknak a többszörösét kell használni, különben nem akar működni rendesen.
(#) moltam válasza nedudgi hozzászólására (») Feb 18, 2021 /
 
Elég érdekes lesz így, ha próbálom kézzel beírni a változó nevét, egy pillanatra megjelenik majd eltűnik. Pedig most találtam egy használati útmutatót a pic-as hez és úgy csinálom mint a benne lévő pédaprogramban. Nem értem mi kínja van. Ha nem megy a debug az eddig felvett változókat látom, de ha menet közben megállítanám, üres a lista. Valami bug? Vagy csak szopat a kínai programozó miatt? :d Ha nyomkodom a step overt akkor is felvillan valami de csak éppen hogy.
A hozzászólás módosítva: Feb 18, 2021
(#) moltam válasza moltam hozzászólására (») Feb 18, 2021 /
 
Most így megy, siker. A bank0 ba pakolta őket.
  1. PSECT   MainData,global,class=RAM,space=1,delta=1,noexec
  2.     global  avar
  3. avar:    DS      1
  4.     global bvar
  5. bvar:    DS      1
(#) aroxol válasza Pali79 hozzászólására (») Feb 18, 2021 /
 
Emeltem több lépcsőben is. Semmi változás.
(#) aroxol válasza aroxol hozzászólására (») Feb 23, 2021 /
 
Rájöttem. Reset láb nem volt bekötve, csak lebegett.
(#) aroxol hozzászólása Feb 23, 2021 /
 
Egy PIC18f46k22-t használok külsö 12MHz kvarcal.

; CONFIG1H
CONFIG FOSC = HSMP ; Oscillator Selection bits (HS oscillator (medium power 4-16 MHz))
CONFIG PLLCFG = OFF ; 4X PLL Enable (Oscillator used directly)
CONFIG PRICLKEN = ON ; Primary clock enable bit (Primary clock enabled)
CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
CONFIG IESO = OFF ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

Mit kellene változtatnom hogy a belső oscillátort tudjam használni, kb. ilyen sebességgel?
(#) Bakman válasza aroxol hozzászólására (») Feb 23, 2021 /
 
Két opció van: 8 vagy 16 MHz. Ezek messze esnek a 12 MHz-től.
(#) aroxol válasza Bakman hozzászólására (») Feb 23, 2021 /
 
Hogy nézne ki a 16MHz?
(#) Bakman válasza aroxol hozzászólására (») Feb 23, 2021 /
 
CONFIG FOSC: Internal oscillator block
CONFIG PRICLKEN = OFF ;
OSCCON = 0b01110000 ;

A többi maradhat.
(#) elektro95 hozzászólása Feb 25, 2021 /
 
Üdv mindenkinek .Azt szeretném megtuni hogy a 16f819pic ből ki lehet e olvasni a programját? Ha igen akkor hogyan tudom? Még nem foglakoztam pic programozással de egy javításhoz szükségem lenne az adott pic program ismeretére. Remélem valahogy ki lehet belőle olvasni. Előre is köszi a segítséget.
(#) Pali79 válasza elektro95 hozzászólására (») Feb 25, 2021 / 1
 
Kell hozzá egy programozó, pl PICKIT2 vagy 3. De ha bekapcsolták a kódvédelmet, akkor nem fogod tudni kiolvasni.
(#) elektro95 válasza Pali79 hozzászólására (») Feb 25, 2021 /
 
Valószínű hogy akkor az aktiv lesz benne. De azért köszi a segítséget .
(#) Lamprologus válasza elektro95 hozzászólására (») Feb 26, 2021 /
 
Ha sikerülne kiolvasni a programot, akkor is csak asm-be tudnád visszafordítani ... és hanem foglalkoztál még PIC programozással akkor onnan kezdődne még csak a munka java!
(#) Peet19 hozzászólása Feb 27, 2021 /
 
Sziasztok!
Le tudná nekem írni valaki értelmesen hogy mi a CTMU működésének az elve? Már találtam egy pár oldalt amit végig olvasgattam de még mindig nem teljesen értem. Sok olyat is olvastam ami ellentmondásos és már kezd összezavarni.
Annyi már tiszta hogy a kondi töltési idejét méri, de hogy működik ez a PIC-en belül pontosan? Milyen regisztereket használ, hova kerülnek az adatok, hogy működik az összehasonlítás ha megváltozik a töltési idő, stb. Minden érdekel ezzel kapcsolatban. Esetleg ha lenne valakinek egy kapcs.rajza amin látható a működése azt is megköszönném.
Előre is köszi a segítséget!
(#) icserny válasza Peet19 hozzászólására (») Feb 27, 2021 /
 
Idézet:
„Le tudná nekem írni valaki értelmesen hogy mi a CTMU működésének az elve?”

A Microchip már leírta: Overview of Charge Time Measurement Unit (CTMU)
(#) miki79 hozzászólása Feb 28, 2021 /
 
Sziasztok!
Kezdő vagyok a pic programozásban.Most olvasgattam/ismerkedem az assembly programozással.
Szeretnék egy egyszerű programot írni ami azt csinálja,hogy egy izzó fényét nagyon lassan halványítja el kb. 1 óra.Tanácsot kérnék a program felépítésével kapcsolatban,működik e azaz elgondolásom, hogy
a pwm vagy a analóg kimenetére érdemes kivinni a jelet?
A másik,az akkumulátor regiszter tartalmát fokozatosan csökkentem eggyel vagy másik regiszter tartalmát?Ti hogyan csinálnátok?
A harmadik kérdés, a program számláló sebességét hogyan kell növelni vagy csökkenteni?Ezt nem találtam sehol.
(#) bbalazs_ válasza miki79 hozzászólására (») Feb 28, 2021 /
 
Szia!
A PIC-nek általában nincs analóg kimenete - esetleg azoknak, ahol DAC van benne.
PWM-el egyszerűen előállíthatsz ilyet, RC tagokkal.
Az akku sokszor kell, nem érdemes benne adatot tárolni, memóriacímre kellene kitenni.
A proci sebességét vagy a beépített oszcillátor osztásával vagy egy külső oszci (pl. kvarc) frekvenciájának a megválasztásával és osztásával változtathatod.

A kérdéseid alapján még tényleg az elején jársz a dolgoknak. Ha izzóról van szó valóban, annak a nagy hőtehetetlensége miatt nem lesz gond villózással, viszont milyen feszültségűt képzelsz el? Mert a 230-asra más javasolt és a 12-esre is. Közvetlenül egyik sem köthető a PIC-re.
Elektronikai ismereteid vannak más tekintetben?
(#) sonajkniz válasza miki79 hozzászólására (») Feb 28, 2021 / 2
 
Szia!

Összedobtam a feladatra egy kis programot PIC10F322-re
Teljes fényerővel indul. Ha lejár, kikapcsol és csak a PIC újraindításával indul újra.
Némi módosítással tehető rá egy nyomógomb, ami újraindítja.
  1. ;*******************************************************************************
  2. ;*                         Kikapcsolás késleltető                              *
  3. ;*******************************************************************************       
  4.  
  5.         LIST    P=PIC10F322     ; lista megad??sa
  6.         RADIX   hex             ; alap?©rtelmezet sz??mrendszer megad??sa
  7.         #include "p10F322.inc"
  8.  
  9.  
  10.  __CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _MCLRE_OFF & _LVP_OFF & _LPBOR_OFF
  11.  
  12.     CBLOCK  0x40
  13.     CIKLUS
  14.     ENDC
  15.  
  16.     org     0x0000
  17.     nop
  18.    
  19. INICIALIZALAS
  20.     CLRF    LATA             ;Kimenetek törlése
  21.     CLRF    ANSELA           ; Analóg bemenetek törlése
  22.     CLRF    ADCON            ;/
  23.     MOVLW   B'00001000'
  24.     MOVWF   TRISA            ;RA3 kivételével minden port kimenetnek állítva
  25.     MOVLW   B'00001000'  
  26.     MOVWF   WPUA             ;Belső felhúzó ellenállás bekapcsolása RA3-ra
  27.     MOVLW   B'00010000'
  28.     MOVWF   OSCCON           ;PIC órajelének beállítása 250KHz-re
  29.     MOVLW   B'00000111'
  30.     MOVWF   OPTION_REG       ;Timer 0 beállítása kb 1 másodpercre.
  31.     MOVLW   B'00000100'       ;T2 bekapcsolása. El? és utóosztó nincs.
  32.     MOVWF   T2CON             ;T2 id?zít? (PWM periódus ideje) 249-re állítva,
  33.     MOVLW   .249               ;(ami valójában 25) így a PWM frekvencia kb  
  34.     MOVWF   PR2               ;250Hz.
  35.     MOVLW   B'11000000'       ;PWM2 kiválasztása, bekapcsolása (RA1-es láb)
  36.     MOVWF   PWM2CON
  37.     CLRF    PWM2DCL
  38.     MOVLW   .240              ;Kitöltés beállítása 96%-ra (induló érték)
  39.     MOVWF   PWM2DCH
  40.     ;---------------
  41.     MOVLW   .15               ;Ciklus számlálóba 15-öt tölt. Azért ennyit,mert
  42.     MOVWF   CIKLUS            ;15 másodpercenként kell 1-el csükkenteni a kitöltést.
  43. MAIN
  44.     BTFSS   INTCON,2          ;Ezen a ponton egyhelyben pörög a program, amíg
  45.     GOTO    MAIN             ;timer0 le nem jár.
  46.     BCF     INTCON,2          ;Töröljük timer0 jelzőbitjét.
  47.     DECFSZ  CIKLUS            ;1-et levon ciklus számlálóból. Ha még nem járt le
  48.     GOTO    MAIN              ;visszaugrik MAIN-re. Ha lejárt újra feltölti
  49.     MOVLW   .15               ;ciklus számlálót és levon 1-et a
  50.     MOVWF   CIKLUS            ;kitöltésből, majd ismét MAIN ugrik.
  51.     DECFSZ  PWM2DCL           ;Ha a kitöltés 0%, elugrik VEGE rutinra
  52.     GOTO    MAIN          
  53. VEGE
  54.     CLRF    PWM2CON           ;Itt teljesen kikapcsol a PWM generátor és
  55.     CLRF    LATA              ;törlődik az összes kimenet.
  56.     GOTO    $-0               ;Itt gyakorlatilag újraindításig egy végtelen
  57.                               ;ciklusba megy a processzor.
  58.     END
Következő: »»   1151 / 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