|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 01 03, 22:39. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » PIC10F320: dalyba iš 2
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 17, 11:08 |
|
|
|
Kažkodėl neveikia dalyba iš 2. Potenciometras duoda į ADC 0-5 V, o po ADC gaunama vertė 0-255 decimal (8 bit). Kai buvau parinkęs atraminį tašką (registras PR2) 255 decimal ir siunčiau ADC vertę tiesiai į duty cycle registrą PWM2DCH, impulsų užpildymas 0-100 % kito per visa potenciometro eigą, (dažnis 16 kHz).
Bet kadangi reikalingas didesnis PWM dažnis, tai į PR2 registrą įrašiau 127 decimal. Bet dėl to reikia padalinti iš ADC ateinančią reikšmę perpus, kad impulsų užpildymas kistų per visą potenciometro eigą. Tai vat įterpiau dalybos iš 2 algoritmą, bet kažkodėl maksimalus impulsų užpildymas pasiekiamas jau potenciometrui esant vidurinėje padėtyje (dažnis 32 kHz). Gal kas mato kame replės, nes viskas kaip ir yra ko reikia?
movf ADRES, W ; Siunčiame gautą ADC vertę į W registrą
movwf ADC_VAL ; ir po to i laikinosios atminties lastelę, užvadintą ADC_VAL
rrf ADC_VAL, F ; Pastumiame ADC_VAL vertę į dešinę, iškritęs bitas įrašomas bit7 vietoje
bcf ADC_VAL, 7 ; ADC_VAL bit7 nunuliname
movf ADC_VAL, W ; Siunčiame perpus padalintą ADC_VAL vertę i W registrą
movwf PWM2DCH ; ir po to i registrą, atsakingą uz PWM duty cycle |
|
Paskutinį kartą redagavo andriusa, 2014 10 17, 16:47. Redaguota 1 kartą |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 17, 15:53 |
|
|
|
Citata: |
iškrites bitas irašomas bit7 vietoje |
kam to reikia? |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 17, 16:32 |
|
|
|
a1girdas rašo: |
Citata: |
iškrites bitas irašomas bit7 vietoje |
kam to reikia? |
Neaisku kaip ten pas ji is tiesu veikia, bet kaip suprantu pastumus i desine, LSB bitas patenka i MSB bito vieta, tad jei ten buvo 1, tai ir 7tas bitas tampa 1.
Ko tais itariu, kad beda kazkur kitur. |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 17, 16:41 |
|
|
|
a1girdas rašo: |
Citata: |
iškrites bitas irašomas bit7 vietoje |
kam to reikia? |
Šito mažo pikiuko mažas ir komandų rinkinys. Tėra RRF ir RLF stumdymo komandos. O jos per STATUS registro pernašos bitą C perneša (niekieno neatsiklaususios ) iškritusį bituką į atsiradusią laisvą vietą. |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 17, 21:45 |
|
|
|
paskui jį užnulini, tad šita dalis kaip ir neturi kliūti. bėda kažkur kitur, pasakė Sokratas.
pasidaryk požymį, ar ateina programa iki šitos vietos. Gali būti, kad programos seka netinkama. |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 18, 14:47 |
|
|
|
AlgisL rašo: |
F reikia nulinti pries rrf ir tada gausi ka reikia. |
Perfrazuok, nepagaunu minties. Raidė F nurodo, kad rezultatą po komandos įvykdymo reikia patalpinti į tą patį registrą. |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 18, 20:23 |
|
|
|
andriusa rašo: |
AlgisL rašo: |
F reikia nulinti pries rrf ir tada gausi ka reikia. |
Perfrazuok, nepagaunu minties. Raidė F nurodo, kad rezultatą po komandos įvykdymo reikia patalpinti į tą patį registrą. |
bcf STATUS,C reikia padaryti pries rrf,nes neaisku koks jo stovis po paskutines operacijos. Ir ismesti bcf ADC_VAL, 7 |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 18, 20:59 |
|
|
|
Nors tas pats gaunasi...O TMR2 prescaler value kiek pas tave? |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 19, 12:37 |
|
|
|
Supratau. Dabar pas tave kai PR=.127,PWM rezoliucija 9 bitu,todel DUTY CYCLE skaičiavime rėikia naudoti ne 8, o 9 bitus,tai bus PWMxDCH <7:0> ir PWMxDCL <7> bitai. |
|
|
|
|
|
Re: PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 19, 16:30 |
|
|
|
andriusa rašo: |
rrf ADC_VAL, F ; Pastumiame ADC_VAL vertę į dešinę, iškritęs bitas įrašomas bit7 vietoje
|
RRF Rotate Right f through Carry
Syntax: [ label ] RRF f,d
Operands: 0 f 127
d [0,1]
Operation: See description below
Status Affected: C
Description: The contents of register f are
rotated one bit to the right through
the Carry flag. If d is 0, the
result is placed in the W register.
If d is 1, the result is placed
back in register f.
tai gal tas F visai ne 1?
arba operand užeina už ribų |
|
|
|
|
|
|
Re: PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 19, 21:09 |
|
|
|
R2D2 rašo: |
RRF Rotate Right f through Carry
Syntax: [ label ] RRF f,d
Operands: 0 f 127
d [0,1]
tai gal tas F visai ne 1?
arba operand užeina už ribų |
MPLAB X programos folderiuose yra krūva .inc failų kiekvienam mikrovaldikliui, ten ir nurodyta F EQU 1, W EQU 0 ir t.t.
O štai ką reiškia parašymas 0 < F <127 norėčiau žinoti. Vargu ar tai leidimas pavadinti bendro naudojimo registrą iki 127 raidinių simbolių. |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 19, 21:46 |
|
|
|
manau adreso ribos, iš kur gali imti duomenis šiai instrukcijai atlikt |
|
|
|
|
|
PIC10F320: dalyba iš 2 |
Parašytas: 2014 10 28, 10:28 |
|
|
|
Artiomas.K rašo: |
Supratau. Dabar pas tave kai PR=.127,PWM rezoliucija 9 bitu,todel DUTY CYCLE skaičiavime rėikia naudoti ne 8, o 9 bitus,tai bus PWMxDCH <7:0> ir PWMxDCL <7> bitai. |
Visų pirma, su PR2=255 rezoliucija 10 bitų, ne 8. Visų antra, mažėjant rezoliucijai registrų bloko PWMxDCH:PWMxDCL "aktyvioji dalis" slenka į dešinę, ne į kairę kaip nurodei. Visų trečia, tikrai neveikia dalybos algoritmas. Aš PWM2DCL nunulinu programos pradžioje ir toliau su juo nedirbu. Įrašinėdamas į PWM2DCH tiesiog skaičius nustačiau, kad 0-100% duty cycle diapazoną atitinka 0-127 decimal, kas atitinka datašyto formules (Fosc = 16 MHz, TMR2 presc. 1, PR2=127).
Yra minčių kas negerai su rrf komanda? Labai nenoriu brautis į microchip forumą, ten nieks lietuviškai nekalba |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|