Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
.................... enable_interrupts(INT_EXT|INT_RB);
049A: MOVLW 18 049B: BCF 03.5 049C: IORWF 0B,F Erre fordul le, és ha jól értelmezem, ez pont az INTE és RABIE bit 1-re állítása, amivel engedélyezem az EXT és az RB interruptot. A RABIF és a INTF-et meg olvasni kell, nem? (az jelzi, hogy van-e interrupt) .................... enable_interrupts(INT_RB); //RA2 megszakítás be 049A: BCF 03.5 049B: BSF 0B.3 049C: MOVLW FF 049D: BSF 03.6 049E: IORWF 16,F Úgy látom, hogy az INT_RB|INT_EXT paraméterezés kor nem állítja be az IOCB biteket, amit beállít a sima INT_RB paraméterre és ezért nem működhet, most kipróbálom külön, külön, így, élesbe: .................... enable_interrupts(INT_RB); //RA2 megszakítás be 049A: BCF 03.5 049B: BSF 0B.3 049C: MOVLW FF 049D: BSF 03.6 049E: IORWF 16,F .................... enable_interrupts(INT_EXT); 049F: BCF 03.6 04A0: BSF 0B.4 Így azért már mindjárt más, mintha egybe paraméterezném. Ez egy bug lenne? A hozzászólás módosítva: Okt 24, 2012
És így már működik is.
Sziasztok.
Van-egy butus kérdésem.it-t szeretnék használni és nem értem hogy mi a különbség int_EXT és int_RB -t között ?Vagy hol találok valami utalást erre az adatlapon(16F886) köszike
Szia!
RB0/INT: Adatlap 14.3.1, RB interrupt: 14.3.3, 3.4 fejezeteiben.
Azon a picen az int_EXT az RB0 lábra jövő interruptra lesz aktív, és definiálhatod, hogy melyik élre interruptoljon. Az int_RB-vel az összes RB lábra érkező interruptot fogadhatod, ami akkor fog interruptolni, ha bármelyik RB lábon az érték változik.
"ITCON" register "Additional PORTB Pin Functions" "IOCB" regiszter, ezeket nézegesd!
Köszi kezdem érteni,talán.Hogy tudom beállítani RB5 -öt hogy lefutó élre generáljon it-t mert csak felfutóra müködik #int_rb-t használva.
Sziasztok!
Segítséget kérek, ha valaki már beleásta magát a power_pwm utasításik rejtelmeibe. Hibrid PWM/PDM meghajtást akarok csinálni egy teljes hidas megoldásra. Az elmélet rendben is van, a két PWM csatorna (PWM0,PWM1,PWM2,PWM3) is szépen működik 50%-os kitöltéssel, komplementer módban, csak az a gondom, hogy nem sikeredik a második csatornát, azaz a PWM2 és PWM3 jelet az első csatornához képest 50%-al odébb shiftelnem. Hogy érthetőbb legyek, csatolok két képet, az elsőn a szkópom képe van, a másodikon az a vázlatom, hogy milyennek kellene lennie. Nagyon megköszönném, ha volna valakinek ötlete, hogy ezt mi módon lehetne CCS C-ben megoldani...
Ja igen, PIC18F4431 MCU-val dolgozom és a 4.107 CCS C-vel.
Most ket szinuszt akarsz eloallitani 180 fokos eltolassal?
Nem, ez csak egy kimenet lesz a teljes hídon, amint az a diagram tetején levő kék feszültségábrán is láthatod. Ezt a PDM (Pulse Density Modulation) módszert a frekvencia növeléskor tapasztalható kimenő feszültség csökkenés kivédésére, ill. a kimenet hatásfokának javítására találták ki, elsősorban nagyfeszültséggel és nagyfrekvenciával előállított plazma alkalmazásokhoz. A shiftelés változtatásával lehet a hagyományos PWM-től távolodni a PDM felé, így viszonylag jól be lehet állítani az optimális kimeneti állapotot. No, nekem jelenleg ezzel a shifteléssel van gondom. Van ugyan egy D flip-flopokból és AND kapukból álló kapcsolás, ami elvileg ezt megoldja (de szerintem a kapcsolás nem jó, megépítettem, de ugyanaz jön ki belőle shiftelés nélkül, mint ami bement) csak arra gondoltam, hogy ha ezt a shiftelést meg tudnám oldani közvetlen az MCU programjával, akkor az lenne a legegyszerűbb. Egyébként idecsatolom azt a bizonyos kapcsolási rajzot is, hátha van ötleted, miért nem jó. Idecsatolom az eredeti megoldást is, amiről csináltam, csak én nem akartam használni az UCC3895-ös fázis shiftelt PWM controllert, hiszen a 4413-as PIC biztosít akár 8 PWM csatornát is. Az én rajzomon a PWM4 jel a proci harmadik PWM moduljából jön, ugyanolyan gyakorlatilag mint a szkópképen az 1. csatorna jele (sárga). Igazából (ha ezzel a kapcsolással lehet csak megoldani a shiftelést, az lenne a jó, hogy ennek a PWM4-nek a kitöltési tényezőjének a változtatásával lehetne a shiftelést tologatni).
A hozzászólás módosítva: Nov 18, 2012
Ja igen, a PWM4 jele 90%-os kitöltéssel megy, hogy mindig jelen legyen a magas jel, amikor az órajel megérkezik a 0. és a 3. csatorna felfutó élének hatására. Azt megfigyeltem, hogy ha a PWM4 kitöltését 60% alá állítom, akkor a 2. és 3. csatorna jele megszűnik az AND kapuk kimenetén (Q3 és Q4). Ez, gondolom abból ered, hogy ilyen esetben, mikor a 3. csatorna magas jelet ad az 2. D tároló órajelére, akkor a PWM4 jele már nem magas (kevés a pl. 50% kitöltés).
Fiúk, tudja valaki, hogy a set_power_pwm_override() funkció mit csinál és milyen összefüggése van a setup_power_pwm() funkció pwm_override_sync paraméterével?
Tesztelem, de nekem semmilyen reakciót nem mutat...
Van róla leírás: http://www.ccsinfo.com/downloads/ccs_c_manual.pdfwww.ccsinfo.com/downloads/ccs_c_manual.pdf[/url]
set_power_pwm_override(pwm, override, value) pwm - a CCP modul sorszáma override - ha true akkor az OVDCONS regiszter, egyébként pedig a PDC regiszter határozza meg a kimenetek állapotát. value - 1: aktív, 1: inaktív állapotban lesz a PWM kimenet a következő duty ciklusban. Idézet: Többek között ezért nem használom a CCS-t, mert nem lehet belenézni, hogy mit csinál az adott függvény. „Tesztelem, de nekem semmilyen reakciót nem mutat...”
En ugy szoktam az ilyen helyzeteket megoldani, hogy 1.: csinaltatok a forditaskor ASM listat, es azt vegignezem, 2.: MPLAB alatt szimulatorban nezem milyen regisztereket valtoztat a fveny. Segitseg lehet meg az adott PIC xxx.h file olvasgatasa, mert altalaban leirjak a parameterek jelenteset.
Köszönöm, frissítettem a leírásomat, én még a 2007. éviből dolgozom...
Köszönöm, jó ötlet mindkettő, megfogadom.
output_float
Ez azt jelenti, hogy a kimenetet magas szintre kapcsolom? output_low Ez pedig alacsonyra? S ez mi? output_bit(ONE_WIRE_PIN, shift_right(&data,1,0));
A float, lebegő állapot. Se nem H, se nem L. Az output_high a magas szint.
Az utolsónál egy adat kibillegtetése a ONE_WIRE_PIN nevű lábra.
S ezt a float szintet hogyan tudom elérni. Illetve egy Open Collector -os PIC-nél csak alacsony és float szint értelmezhető?
output_float (PIN_A0);
Például így. Az adott PIC adatlapjából puskázhatsz...
Ez egyszerűen bemenetnek kapcsolja az adott portlábat. Ha nincs felhúzó ellenállás engedélyezve és bekapcsolva, akkor float (lebegő) lesz a portláb.
Ah! Értem. Köszi szépen.
Azt nem értettem, hogy a kimeneten van egy külső 5KOhm-os felhúzó ellenállás. Akkor mi van? De így tiszta. A hozzászólás módosítva: Nov 22, 2012
Idézet: „Többek között ezért nem használom a CCS-t” Mit javasolsz mást?
Sziasztok elkelne egy kis segítség.
16HV616 MPLAb_8.88, ccsc_4.138 Szeretném a fent írt pic-et, PICKIT3-al mplab alatt debuggolni a következő üzenetet kapom amikor akarom futtatni a programot: Idézet: „Running... PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding.” a program egyszerű:
Tudnátok segíteni? Előre is köszönöm.
Szia!
Kellene hozzá egy AC162083 (Required) adapter / header...
Köszönöm, az adatlapban nem találtam. Hol tudom megnézni, hogy adott pichez kell-e header vagy nem?
Szia!
A típus Microchip honlapja / Developping tools / Emulators/In-Circuit debuggers: Idézet: „PICkit 3 In-Circuit Debugger (PG164130) AC162083 (Required)” |
Bejelentkezés
Hirdetés |