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   1143 / 1210
(#) jefflynn válasza vladcepes hozzászólására (») Dec 23, 2020 /
 
A pk2 működik Windows 10 alatt, még driver sem kell mert hid eszköz. Nem lehet hogy a kábel vagy maga a pk2 hibás? Csatlakoztatáskor hallod a szokásos Windows hangot amit új hardver felismerésekor szokott adni? Közben látom hogy igen. Akkor nincs más ötletem...
A hozzászólás módosítva: Dec 23, 2020
(#) ktamas66 válasza Peet19 hozzászólására (») Dec 23, 2020 / 1
 
Ebben a módban nem törli a CCP a TMR-t. Az a 0001-es mód.
(#) Hp41C válasza vladcepes hozzászólására (») Dec 23, 2020 /
 
PICkit2 V2.62:
- 32 bites program.
- USB HID eszköz, nem kell külön driver, a HID drivert tartalmazza az operációs rendszer.
- A PICkit2.ini állomány elérésével lehet gond, ugyanis ezt az állományt a telepítési mappában keresi illetve módosítja a program.
- Próbáld meg "run as administrator" modszerrel.
A hozzászólás módosítva: Dec 23, 2020
(#) Peet19 válasza Bakman hozzászólására (») Dec 23, 2020 /
 
Értem, köszi. Kipróbáltam mindenfélét amit írtál, de ha nincs ott az Isr() -ben amit kikommenteltem, akkor nem csinál semmit. Amúgy ha az bent van, működik.
  1. cnt++;
  2.         if(cnt == 50){
  3.             LATCbits.LATC2 = ~PORTCbits.RC2;
  4.             cnt            = 0;
  5.         }


De ezzel csak a megszakítással váltogatom "szoftveresen" a kimenetet.
De ha így állítom be:
  1. CCP1CONbits.MODE = 0b0010;   // CCP1 Compare mód beállítása "Toggle output" váltogatja a kimenetet


akkor hardveresen kellene váltogatnia a kimenetet. Nem? Lehet nem jól tudom, csak gondolom.
(#) Peet19 válasza ktamas66 hozzászólására (») Dec 23, 2020 /
 
Igen, ez volt az első amit kipróbáltam, de sajna így sem jó.
(#) Bakman válasza Peet19 hozzászólására (») Dec 23, 2020 / 1
 
Az init_base részt egészítsd ki ezzel:
  1. RC2PPS = 0x05;
Hátha.

A témában azt írja valaki, hogy a kimenetek nincsenek lábakhoz rendelve, azt neked kell megtenned.
(#) Peet19 válasza Bakman hozzászólására (») Dec 23, 2020 /
 
Jó lett, köszi
Már nem kell a
  1. LATCbits.LATC2 = ~PORTCbits.RC2;

és megy rendesen. De még erre is szükség volt:
  1. CCP1CONbits.MODE = 0b0001; Toggle output; clear TMR1

Kicsit még bogarászok vele, de mértem az idejét és eddig úgy néz ki pontos.
(#) Bakman válasza Peet19 hozzászólására (») Dec 23, 2020 /
 
Remek! Ha van időd, nézd meg légyszíves, hogy mi a különbség a Pulse output (0b1011) és a Toggle output (0b0001) között.

Ez vagy nincs az adatlapban vagy nem találom, de érdekel.
(#) Peet19 válasza Bakman hozzászólására (») Dec 23, 2020 /
 
Hát, nem is tudom. Az adatlapon sokmindent nem találtam róla de elvileg valami olyasmi lehet hogy a kimenetet nem változtatja meg de valami belső eseményt elindít. Ez a Pulse output; clear TMR1 és van megszakításkérés is. A sima Pulse output; meg nem csinál semmit csak megszakításkérést generál "szerintem".
De leteszteltem, tényleg nem csinál semmit. Szerintem amikor eléri az egyenlőséget megszakítást generál de a timer végig fut. Nem biztos, csak próbálom összelegózni az infókat.

Jaa, a Toggle output meg folyamatosan váltogatja a kimeneti jelszintet amikor a timer eléri a komparálási értéket.
Ez így tök jó lett, működik ...és persze törli is rögtön és újraindul. Ezért mondtam hogy a Tmr1 soha nem fog megszakítást okozni mert soha nem fog végig futni.
A hozzászólás módosítva: Dec 23, 2020
(#) vladcepes válasza jefflynn hozzászólására (») Dec 23, 2020 /
 
Közben az este sikerült levadásznom egy oldalt,onnan leszedtem ,nem is kellett telepíteni,ezzel tökéletes!,vagyis felismeri,majd most kiderül az égetésnél.
(#) ktamas66 válasza Bakman hozzászólására (») Dec 23, 2020 /
 
Adatlap szerint:
Idézet:
„The pulse output goes high at the rising edge of the timer clock where the CCP match occurs and lasts until the rising edge of the next timer clock. The pulse output also goes low if the timer is written to before the second clock edge occurs.”
(#) Bakman válasza ktamas66 hozzászólására (») Dec 23, 2020 /
 
Ezt hol találtad meg?
(#) Peet19 hozzászólása Dec 23, 2020 /
 
Mi a különbség a PC-s és a PIC-es assemblyben? Csak a proci architektúrája, vagy az utasításkészlet vagy van még valami más is?
(#) Bakman válasza Peet19 hozzászólására (») Dec 23, 2020 / 1
 
Szinte ég a föld a kettő. A PIC-ed 75 + 8 utasítást ismer. A Raspberry Pi 4-ben lévő CPU utasításkészletének egy részét megtalálod itt: A64 Instruction Set Reference (kb. 800 utasítás van ott leírva, ha jól számolom).
(#) nedudgi válasza Peet19 hozzászólására (») Dec 24, 2020 / 1
 
Ez a kettő nem elég?
A PC Neumann architektúra (azonos a program, és az adattároló), a program a BIOS kivételével változtatható, míg egy PIC Harvard alapú (külön program, és külön adatmemória).
Az újabb PIC kontrollerek már tartalmazzák az adatmemóriában levő program végrehajtásának lehetőségét, ezzel erre a platformra is sikerül átvinni rosszindulatú kódok, mint például vírusok megjelenését.
Néha elgondolkodok azon, hogy ez szándékos, vagy csak simán átgondolatlan hozzáállás?
(#) Peet19 válasza nedudgi hozzászólására (») Dec 24, 2020 /
 
Értem, köszönöm.

Bakman: köszi neked is. Tehát ha jól értem, akkor két különböző nyelvről van szó?

Ha mondjuk most szeretnék elkezdeni Assembly-ben programozni tanulni akkor a PC-s assembly az felejtős?
Kimondottam PIC-re való assembly-t kell tanulni?
(#) Bakman válasza Peet19 hozzászólására (») Dec 24, 2020 / 1
 
Nem, nem erről van szó. Alapvetően különbözben a CPU-k és MCU-k. Ha assembly-t akarsz tanulni, kezd egy egyszerűbb mikrokontroller családdal, aztán majd meglátod, kelle-e ez neked. Idővel ki fog derülni, hogy megéri-e vele foglalkoznod vagy sem.
(#) gyoran válasza Peet19 hozzászólására (») Dec 24, 2020 / 1
 
Kezdj PIC-kel. Àtlátható az utasításkészlete és az architektúrája. Valamint nem vagy függőségben más rendszerelemektől.
Az assembly processzorfüggő, olyan, mintha azt kérdezném tudsz-e vezetni. Igen?
Biciklit? Autót? Tankot? Buszt? Lépegető exkavátort? Űrhajót?
Kezdj biciklivel. Elsőre az sem egyszerű.

Egyébként a PIC-re a fejlesztő csomag része egy szimulátor ( látod, ha tekersz a bicikli kormányán, mit csinál a kerék)
És, ha kész vagy, könnyű -és költséghatékony - áttenni a valóságba.
(#) Peet19 válasza gyoran hozzászólására (») Dec 24, 2020 /
 
Rendben, értem, köszi. Sajnos kevés a doksi és a könyv amiből normálisan lehetne tanulni.

Köszönöm neked is Bakman és

Boldog Karácsonyt Mindenkinek!!!

karifa.jpg
    
(#) gyoran válasza Peet19 hozzászólására (») Dec 24, 2020 /
 
Csak az elmélet érdekel, vagy ki is próbálnád?
A PIC-nél érdemes egy adott típusra koncentrálni, én a PIC16f628A-val kezdtem.Ebben elég sok minden van, de jól kezelhető Assembly-ben.
Az adatlapjára mindenképpen szükséged lesz (Microchip.com)
Az interneten "PIC programozás"-ra keresve nagyon sok találat van, pl. innen a Hobbielektronikáról is. De a 2008-es Rádiótechnika évkönyvben is volt egy hosszú leírás.
Kipróbálni az MPLAB IDE környezettel lehet (szintén Microchip.com), az újat nehéz megszokni (én a 64 bites MAC miatt rá vagyok szorulva) de a régebbiek könnyebben kezelhető voltak. Ha neked nem kell 64 bites applikáció, akkor itt a fórumon biztosan tudnak egy korábbi verziót javasolni.
És Neked is boldog karácsonyt.
(#) Peet19 válasza gyoran hozzászólására (») Dec 24, 2020 /
 
Köszi. Természetesen a gyakorlat a cél, de az elmélet mindennek az alapja.
Pont van itthon egy 16f628A PIC-em. Még régebben vettem mint első PIC-et, de mire oda került a sor hogy programozzak másra esett a választás. De ha azt mondod hogy ez jó kezdésnek akkor beüzemelem.
Az MPLAB -ot ismerem "nagyjából" a debuger még döcögős, de már használom egy ideje. Eddig C-ben tanultam progizni PIC-re, de szeretnék áttérni Assembly-re.
Linuxot használok így sajna nem tudok régebbi MPLAB-ot felrakni, de az MPLABX -ben is van valami asm fordító az XC8 mellett. Ezzel még kísérletezek, (nincs tapasztalatom) de felraktam egy virtuálbox-ot, arra meg feltolok egy win-t aztán leszedek egy normál MPLAB verziót. Melyiket ajánlanátok??? (ami tényleg normálisan használható asm-re)
Ha MAC -ed van, szerintem egy virtuális gépre felküldhetsz Te is egy régebbi verziót attól függetlenül hogy 64 bites a rendszered.
A hozzászólás módosítva: Dec 24, 2020
(#) sonajkniz hozzászólása Dec 26, 2020 /
 
Sziasztok!

Egy érthetetlen hibáról, és annak még érthetetlenebb megoldásáról szeretném a véleményeteket kérni.
Adott egy PIC18F14K22-es kontroller.
Bemenetnek címzett lábak: RA2, RA3, RB4, RB5, RB6 ,RB7, RC0, RC2, (ez analóg) RC6, RC7.
RC4, RC5 PWM kimenetek. Minden más digitális kimenet. RB4,5,6,7 valamint RC0,6,7 2,2K-val van pozitívra húzva és optocsatoló húzza le negatívra. RA2 csak a belső felhúzó ellenállással van felhúzva, mivel csupán egy helyi nyomógomb van rajta.
A hiba az volt, hogy ahányszor csak jelet kapott RB4, annyiszor reszetelődött a PIC, Vagy legalábbis beugrott az inicializációs rutinba.
Átnéztem az adatlapot, és minden olyan lehetőséget letiltottam a digitális bemeneten kívül, amire RB4 hatással lehet. A hiba maradt. Kicseréltem a PIC-et. Helyzet változatlan. Fél napos eredménytelen kísérletezés után kínomban RA2-őt 500 ohmmal felhúztam pozitívra amitől a hiba megszűnt.
A dolog külön érdekessége, hogy a hibát folyamatosan tudta produkálni olyankor is amikor a program sem RB4-et, sem RA2-őt nem figyelte. Ráadásul egyik bemenet funkciója sem tett ilyesmit lehetővé.
Ha valaki találkozott már ilyen hibával, és esetleg azt is tudja, mi okozza, kérem ossza meg velem.
(#) Bakman válasza sonajkniz hozzászólására (») Dec 26, 2020 /
 
Program, kapcsolási rajz és NYÁK terv nélkül csak egy határozott talánnal lehet válaszolni. Sok ilyen kontrollert (kizárólag tiszta forrásból) felhasználtam már, soha, még csak hasonló hibát sem tapasztaltam. Volt, aki távolkeleti beszerzésűnél panaszkodott érthetetlen hibákara.
(#) sonajkniz válasza Bakman hozzászólására (») Dec 26, 2020 /
 
Magam részéről az összes eddig használt PIC18-ast a chipkad-tól vásároltam, és sajnos volt már olyan, hogy egyszerre vásárolt 5db PIC18F14K22-esben a RAM egyik byte-ja hibás volt.
Feltettem egy képet a paneltervről és a szerelt panelról is.
Én nem láttam rajta hibát.
Mellékelem a programot is.
  1. ;*******************************************************************************
  2. ;*                        Hungarocell vágó célgép                              *
  3. ;*******************************************************************************    
  4.    
  5.     LIST        P=PIC18F14K22   ;lista megadása
  6.     INCLUDE     <P18F14K22.INC> ;includde fájlok megadása
  7.     RADIX       hex             ;alapértelmezet számrendszer megadása
  8.  
  9.     CONFIG      FOSC = IRC      ;bels? oszcillátor
  10.     CONFIG      WDTEN = OFF     ;watchdog kikapcsolása
  11.     CONFIG      LVP = OFF       ;alacsony feszültség? programozás kikapcsolva
  12.     CONFIG  MCLRE = OFF         ;RA3 bemenetkénti használatra állítása
  13.  
  14.     CBLOCK      0x0001
  15.     ADATBYTE
  16.     CIKLUS1
  17.     PWM_1
  18.     PWM_2
  19.     PWM_3
  20.     MOZGAS
  21.     WAIT
  22.     ENDC
  23.    
  24. #define PWM_VONAL  LATC,1  
  25. #define STOP    PORTA,2
  26. #define P_D     LATC,0
  27. #define POWER   PORTC,2
  28. #define M1_HATRA    LATC,3
  29. #define M2_HATRA    LATA,4  
  30. #define LS_1    PORTC,7  
  31. #define LS_2    PORTC,6
  32. #define LS_3    PORTB,7
  33. #define LS_4    PORTB,6
  34. #define LS_5    PORTB,4
  35. #define LS_6    PORTB,5    
  36.  
  37.    
  38.         org         0x0028              ; program memória kezd? címe
  39.     nop
  40.    
  41. INICIALIZALAS
  42.     CLRF    LATA                ; kimeneti portok törlése
  43.     CLRF    LATB                                       
  44.     CLRF    LATC
  45.     MOVLW   B'01000000'
  46.     MOVWF   ANSEL
  47.     CLRF    ANSELH
  48.     MOVLW   B'00011001'
  49.     MOVWF   ADCON0
  50.     MOVLW   B'00100101'
  51.     MOVWF   ADCON2
  52.     MOVLW   B'00001100'         ; A port
  53.     MOVWF   TRISA
  54.     MOVWF   WPUA
  55.     MOVLW   B'11110000'         ; B port bemenet
  56.     MOVWF   TRISB
  57.     MOVLW   B'11000101'         ; C port kimenet
  58.     MOVWF   TRISC
  59.     MOVLW   B'01110000'         ; oszcillátor frekvenciája <4:6>
  60.     MOVWF   OSCCON              ; 111 = 16, 110 = 8, 101 = 4, 100 = 2 MHz
  61.     CLRF    INTCON
  62.     CLRF    PIE1
  63.     CLRF    IOCB
  64.     MOVLW   B'00000001'
  65.     MOVWF   T1CON
  66.     MOVLW   B'00000101'        
  67.     MOVWF   T2CON               ;Timer 2 beállítása 16-os el?osztásra
  68.     MOVLW   B'00001101'
  69.     MOVWF   CCP1CON
  70.     CLRF    PSTRCON
  71.     MOVLW   .254
  72.     MOVWF   PR2
  73.     MOVLW   .127
  74.     MOVWF   CCPR1L
  75. ;-------------------------------------------------------------------------------    
  76. MAIN
  77.     BTFSC   LS_6
  78.     GOTO    $-2
  79.     BTFSC   LS_1
  80.     GOTO    ALAPHELYZET
  81.     BTFSC   LS_4
  82.     GOTO    ALAPHELYZET
  83.     BTFSS   P_D
  84.     GOTO    PROGRAM
  85. ;------------------------------------Darabolás----------------------------------    
  86. DARABOLAS
  87.     MOVLW   .250               ;F?tési érték megadása
  88.     MOVWF   PWM_1
  89.     MOVWF   PWM_2      
  90.     MOVWF   PWM_3
  91.     CALL    PWM_VEZERLO        ;F?t?szálak bekapcsolása  
  92.     MOVLW   .200    
  93.     CALL    VARAKOZAS          ;Felf?tésre várakozás    
  94.                            ;----------------------------
  95.     MOVLW   .170               ;Mozgási sebesség meghatározása
  96.     MOVWF   MOZGAS
  97.     BSF     MOZGAS,0           ;Mozgás indítása
  98.     BCF     MOZGAS,1           ;Irány megadása
  99.     CALL    LE_FEL
  100.     BTFSS   LS_3               ;Várakozás a végálláskapcsoló jelére
  101.     GOTO    $+.12
  102.     BTFSS   STOP               ;*******************************************
  103.     GOTO    LEALLITAS          ;*    F?t?szál felfelé mozog végállásig    *
  104.     GOTO    $-.12              ;*******************************************
  105.     CLRF    MOZGAS
  106.     CALL    LE_FEL             ;Mozgás megállítása
  107.     MOVLW   .50
  108.     CALL    VARAKOZAS          ;Kivárás
  109.                            ;----------------------------                  
  110.     MOVLW   .180               ;Mozgási sebesség meghatározása
  111.     MOVWF   MOZGAS
  112.     BSF     MOZGAS,0           ;Mozgás indítása
  113.     BSF     MOZGAS,1           ;Irány megadása
  114.     CALL    LE_FEL
  115.     BTFSS   LS_1               ;Várakozás a végálláskapcsoló jelére
  116.     GOTO    $+.12
  117.     BTFSS   STOP               ;*******************************************
  118.     GOTO    LEALLITAS          ;*    F?t?szál lefelé mozog végállásig     *
  119.     GOTO    $-.12              ;*******************************************
  120.     CLRF    MOZGAS
  121.     CALL    LE_FEL             ;Mozgás megállítása
  122.     MOVLW   .100
  123.     CALL    VARAKOZAS          ;Kivárás
  124.     CLRF    PWM_1
  125.     CLRF    PWM_2      
  126.     CLRF    PWM_3
  127.     CALL    PWM_VEZERLO        ;F?t?szálak kikapcsolása
  128.     GOTO    MAIN
  129. ;-------------------------------M?ködtetés programból---------------------------
  130. PROGRAM
  131.     MOVLW   .250               ;F?tési érték megadása
  132.     MOVWF   PWM_1
  133.     MOVWF   PWM_2      
  134.     MOVWF   PWM_3
  135.     CALL    PWM_VEZERLO        ;F?t?szálak bekapcsolása  
  136.     MOVLW   .200    
  137.     CALL    VARAKOZAS          ;Felf?tésre várakozás    
  138.                            ;----------------------------
  139.     MOVLW   .170               ;Mozgási sebesség meghatározása
  140.     MOVWF   MOZGAS
  141.     BSF     MOZGAS,0           ;Mozgás indítása
  142.     BCF     MOZGAS,1           ;Irány megadása
  143.     CALL    LE_FEL
  144.     BTFSS   LS_2               ;Várakozás a végálláskapcsoló jelére
  145.     GOTO    $+.12
  146.     BTFSS   STOP               ;*******************************************
  147.     GOTO    LEALLITAS          ;*    F?t?szál felfelé mozog félútig       *
  148.     GOTO    $-.12              ;*******************************************
  149.     CLRF    MOZGAS
  150.     CALL    LE_FEL             ;Mozgás megállítása
  151.     MOVLW   .100
  152.     CALL    VARAKOZAS          ;Kivárás
  153.                            ;----------------------------
  154.     MOVLW   .180               ;Mozgási sebesség meghatározása
  155.     MOVWF   MOZGAS
  156.     BSF     MOZGAS,0           ;Mozgás indítása
  157.     BCF     MOZGAS,1           ;Irány megadása
  158.     CALL    OLDALRA
  159.     BTFSS   LS_5               ;Várakozás a végálláskapcsoló jelére
  160.     GOTO    $+.12
  161.     BTFSS   STOP               ;*******************************************
  162.     GOTO    LEALLITAS          ;*     F?t?szál el?re mozog végállásig     *
  163.     GOTO    $-.12              ;*******************************************
  164.     CLRF    MOZGAS
  165.     CALL    OLDALRA             ;Mozgás megállítása
  166.     MOVLW   .100
  167.     CALL    VARAKOZAS          ;Kivárás
  168.                            ;----------------------------
  169.     MOVLW   .210               ;Mozgási sebesség meghatározása
  170.     MOVWF   MOZGAS
  171.     BSF     MOZGAS,0           ;Mozgás indítása
  172.     BSF     MOZGAS,1           ;Irány megadása
  173.     CALL    OLDALRA
  174.     BTFSS   LS_4               ;Várakozás a végálláskapcsoló jelére
  175.     GOTO    $+.12
  176.     BTFSS   STOP               ;*******************************************
  177.     GOTO    LEALLITAS          ;*     F?t?szál hátra mozog végállásig     *
  178.     GOTO    $-.12              ;*******************************************
  179.     CLRF    MOZGAS
  180.     CALL    OLDALRA             ;Mozgás megállítása
  181.     MOVLW   .100
  182.     CALL    VARAKOZAS          ;Kivárás
  183.                            ;----------------------------
  184.     MOVLW   .180               ;Mozgási sebesség meghatározása
  185.     MOVWF   MOZGAS
  186.     BSF     MOZGAS,0           ;Mozgás indítása
  187.     BCF     MOZGAS,1           ;Irány megadása
  188.     CALL    LE_FEL
  189.     BTFSS   LS_3               ;Várakozás a végálláskapcsoló jelére
  190.     GOTO    $+.12
  191.     BTFSS   STOP               ;*******************************************
  192.     GOTO    LEALLITAS          ;*    F?t?szál felfelé mozog végállásig    *
  193.     GOTO    $-.12              ;*******************************************
  194.     CLRF    MOZGAS
  195.     CALL    LE_FEL             ;Mozgás megállítása
  196.     MOVLW   .50
  197.     CALL    VARAKOZAS          ;Kivárás
  198.                            ;----------------------------                  
  199.     MOVLW   .180               ;Mozgási sebesség meghatározása
  200.     MOVWF   MOZGAS
  201.     BSF     MOZGAS,0           ;Mozgás indítása
  202.     BSF     MOZGAS,1           ;Irány megadása
  203.     CALL    LE_FEL
  204.     BTFSS   LS_1               ;Várakozás a végálláskapcsoló jelére
  205.     GOTO    $+.12
  206.     BTFSS   STOP               ;*******************************************
  207.     GOTO    LEALLITAS          ;*    F?t?szál lefelé mozog végállásig     *
  208.     GOTO    $-.12              ;*******************************************
  209.     CLRF    MOZGAS
  210.     CALL    LE_FEL             ;Mozgás megállítása
  211.     MOVLW   .100
  212.     CALL    VARAKOZAS          ;Kivárás
  213.     CLRF    PWM_1
  214.     CLRF    PWM_2      
  215.     CLRF    PWM_3
  216.     CALL    PWM_VEZERLO        ;F?t?szálak kikapcsolása
  217.     GOTO    MAIN                           
  218. ;-------------------------------------------------------------------------------
  219. ALAPHELYZET
  220.     MOVLW   .250               ;F?tési érték megadása
  221.     MOVWF   PWM_1
  222.     MOVWF   PWM_2      
  223.     MOVWF   PWM_3
  224.     CALL    PWM_VEZERLO        ;F?t?szálak bekapcsolása  
  225.     MOVLW   .200    
  226.     CALL    VARAKOZAS          ;Felf?tésre várakozás    
  227.                            ;----------------------------
  228.     BTFSS   LS_4
  229.     GOTO    LEFELE
  230.     MOVLW   .180               ;Mozgási sebesség meghatározása
  231.     MOVWF   MOZGAS
  232.     BSF     MOZGAS,0           ;Mozgás indítása
  233.     BSF     MOZGAS,1           ;Irány megadása
  234.     CALL    OLDALRA
  235.     BTFSS   LS_4               ;Várakozás a végálláskapcsoló jelére
  236.     GOTO    $+.12
  237.     BTFSS   STOP               ;*******************************************
  238.     GOTO    LEALLITAS          ;*     F?t?szál hátra mozog végállásig     *
  239.     GOTO    $-.12              ;*******************************************
  240.     CLRF    MOZGAS
  241.     CALL    OLDALRA             ;Mozgás megállítása
  242.     MOVLW   .100
  243.     CALL    VARAKOZAS          ;Kivárás
  244.                            ;----------------------------
  245. LEFELE
  246.     MOVLW   .180               ;Mozgási sebesség meghatározása
  247.     MOVWF   MOZGAS
  248.     BSF     MOZGAS,0           ;Mozgás indítása
  249.     BSF     MOZGAS,1           ;Irány megadása
  250.     CALL    LE_FEL
  251.     BTFSS   LS_1               ;Várakozás a végálláskapcsoló jelére
  252.     GOTO    $+.12
  253.     BTFSS   STOP               ;*******************************************
  254.     GOTO    LEALLITAS          ;*    F?t?szál lefelé mozog végállásig     *
  255.     GOTO    $-.12              ;*******************************************
  256.     CLRF    MOZGAS
  257.     CALL    LE_FEL             ;Mozgás megállítása
  258.     MOVLW   .100
  259.     CALL    VARAKOZAS          ;Kivárás
  260.     CLRF    PWM_1
  261.     CLRF    PWM_2      
  262.     CLRF    PWM_3
  263.     CALL    PWM_VEZERLO        ;F?t?szálak kikapcsolása
  264.     GOTO    MAIN                           
  265. ;-------------------------------------------------------------------------------                           
  266. LEALLITAS
  267.     POP
  268.     CLRF    MOZGAS
  269.     CALL    OLDALRA             ;Mozgás megállítása
  270.     CLRF    MOZGAS
  271.     CALL    LE_FEL
  272.     CLRF    PWM_1
  273.     CLRF    PWM_2      
  274.     CLRF    PWM_3
  275.     CALL    PWM_VEZERLO        ;F?t?szálak kikapcsolása
  276.     GOTO    MAIN
  277. ;-------------------------------------------------------------------------------    
  278. VARAKOZAS      
  279.     MOVWF   WAIT
  280. KIVARAS    
  281.     MOVLW   0x63
  282.     MOVWF   TMR1H
  283.     MOVLW   0xC5
  284.     MOVWF   TMR1L
  285.     BCF     PIR1,0
  286.     NOP
  287.     BTFSC   PIR1,0
  288.     GOTO    $+.12
  289.     BTFSS   STOP
  290.     GOTO    LEALLITAS
  291.     GOTO    $-.12
  292.     DECFSZ  WAIT
  293.     GOTO    KIVARAS
  294.     RETURN
  295. ;---------------------------Oldalmozgató motor meghajtás------------------------    
  296. OLDALRA    
  297.     BTFSC   MOZGAS,0
  298.     GOTO    OLDALRA_1
  299.     BCF     PSTRCON,STRB
  300.     MOVLW   .254
  301.     MOVWF   PR2
  302.     MOVLW   .127
  303.     MOVWF   CCPR1L
  304.     RETURN
  305. OLDALRA_1
  306.     BTFSC   PSTRCON,STRB
  307.     RETURN
  308.     BCF     M1_HATRA
  309.     BTFSC   MOZGAS,1
  310.     BSF     M1_HATRA
  311.     BCF     MOZGAS,0
  312.     BCF     MOZGAS,1
  313.     MOVLW   .221
  314.     CPFSLT  MOZGAS
  315.     MOVWF   MOZGAS
  316.     MOVLW   .255
  317.     XORWF   MOZGAS
  318.     BSF     PSTRCON,STRB
  319. GYORSIT_1
  320.     DECF    CCPR1L
  321.     DECF    PR2
  322.     DECF    PR2
  323.     MOVF    PR2,W
  324.     NOP
  325.     NOP
  326.     NOP
  327.     CPFSLT  MOZGAS
  328.     RETURN
  329.     GOTO    GYORSIT_1
  330. ;------------------------------Emel?motor meghajtás-----------------------------    
  331. LE_FEL    
  332.     BTFSC   MOZGAS,0
  333.     GOTO    LE_FEL_1
  334.     BCF     PSTRCON,STRA
  335.     MOVLW   .254
  336.     MOVWF   PR2
  337.     MOVLW   .127
  338.     MOVWF   CCPR1L
  339.     RETURN
  340. LE_FEL_1
  341.     BTFSC   PSTRCON,STRA
  342.     RETURN
  343.     BSF     M2_HATRA
  344.     BTFSC   MOZGAS,1
  345.     BCF     M2_HATRA
  346.     BCF     MOZGAS,0
  347.     BCF     MOZGAS,1
  348.     MOVLW   .221
  349.     CPFSLT  MOZGAS
  350.     MOVWF   MOZGAS
  351.     MOVLW   .255
  352.     XORWF   MOZGAS
  353.     BSF     PSTRCON,STRA
  354. GYORSIT_2
  355.     DECF    CCPR1L
  356.     DECF    PR2
  357.     DECF    PR2
  358.     MOVF    PR2,W
  359.     NOP
  360.     NOP
  361.     NOP
  362.     CPFSLT  MOZGAS
  363.     RETURN
  364.     GOTO    GYORSIT_2    
  365. ;------------------------------PWM vezérl? adatküldés---------------------------
  366. PWM_VEZERLO
  367.     MOVFF   PWM_1,ADATBYTE
  368.     CALL    PWM_ADAS
  369.     MOVFF   PWM_2,ADATBYTE
  370.     CALL    PWM_ADAS
  371.     MOVFF   PWM_3,ADATBYTE
  372. PWM_ADAS
  373.     MOVLW   .8
  374.     MOVWF   CIKLUS1
  375.     BCF     STATUS,C
  376. PWM_KULD_ADAT    
  377.     BSF     PWM_VONAL
  378.     BTFSS   ADATBYTE,7
  379.     BCF     PWM_VONAL
  380.     NOP
  381.     NOP
  382.     RLCF    ADATBYTE
  383.     BCF     PWM_VONAL
  384.     DECFSZ  CIKLUS1
  385.     GOTO    PWM_KULD_ADAT
  386.     RETURN
  387. ;-------------------------------------------------------------------------------    
  388.     END
(#) miki79 hozzászólása Dec 27, 2020 /
 
Sziasztok!
Ismer Valaki olyan programot amivel hangfájlt lehetet szerkeszteni?Mégpedig olyan módon amiben lehet logikai magas és alacsony kimenetet produkálni "line in,, kimeneten.Vagy amivel lehet olyan jelszintet generálni ami egy lámpa izzót nagyon lassan(naplemente)elhalványít?
(#) Pali79 válasza miki79 hozzászólására (») Dec 27, 2020 /
 
Nem egészen értem a kérdést, de az elhalványítás szerintem könnyen megoldható. Kell egy PWM aminek a kitöltési tényezőjét mondjuk percenként csökkented. Így 255 perc telne el a teljes fényerőtől a sötétig. Illetve biztos valamivel kevesebb, mert nem tudom hány % a minimum amikor elkezd világítani és hány % fölött nem lehet már szabad szemmel észrevenni a fényerő növekedését. De egy 3 órás időtartamot szerintem meg lehetne csinálni.
(#) gyoran válasza miki79 hozzászólására (») Dec 27, 2020 /
 
Függetlenül attól, hogy "Line in" általában bemenet, lássuk mit értettem:
Hangfájl szerkesztésére vannak programok, pl most a Mac-emhez jár a Garage Band. Életemben nem használtam, de gondolom egy MP3 hangfájlból gond nélkül ki lehet vágni részeket. De sejtésem szerint nem ezt keresed. Egy MP3-at írni, ami pl. a PC hangkimenetén valamilyen látszólag digitális felépítésű és szimulál egy naplementét: szerintem ágyúval verébre.
Ha a feladat annyi, hogy legyen 3 óra alatt lámpás naplementéd, akkor erre a megoldást Pali79 leírta. Erre valószínű a legkisebb PIC (a topic szelleme szerint: legyen PIC) is megfelel, a PWM-et ekkor nyilván szoftver csinálja. A kitöltési tényező változását akár lookup táblában is leírhatod és akkor az lehet akár nem lineáris is. Ideális PIC-re. A PWM-et persze rá kell erőszakolni a lámpára, de ez HW nem PIC.
Régen nyilván analóg áramkörrel oldottam volna meg, de ma már jobb egy PIC.
Ha félreértettelek volna, előre elnézést, mert nem tudom, pontosan mi a célod.
(#) Pali79 válasza gyoran hozzászólására (») Dec 27, 2020 / 1
 
Idézet:
„Erre valószínű a legkisebb PIC (a topic szelleme szerint: legyen PIC) is megfelel, a PWM-et ekkor nyilván szoftver csinálja.”
Nem feltétlenül. A PIC10F320 pl. Dip tokban 8, sot tokban 6 lábú és van benne hardveres pwm.
(#) miki79 válasza Pali79 hozzászólására (») Dec 28, 2020 /
 
Köszönöm!
valami hasonló gondolat érdekelne!
A kérdést Én írtam rosszúl köszönöm a kiigazítást.
A gondolatom az lett volna -line out kimeneten- hogy 3 órán keresztül ad egy kimenet folyamatos magas jelet aztán lassan de fokozatosan csökken a jel erössége nullára.
De most mindentől függetlenűl,hogy lehet line out-on digitális jelet generálni?
(#) Bakman válasza miki79 hozzászólására (») Dec 28, 2020 /
 
Audacity, tone generator: Bővebben: Link.
Következő: »»   1143 / 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