Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

div32 - PBP 2.60

[es] :: Elektronika :: Mikrokontroleri :: div32 - PBP 2.60

[ Pregleda: 2417 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Želja
Sam svoj majstor

Član broj: 326849
Poruke: 78
*.dynamic.isp.telekom.rs.



+2 Profil

icon div32 - PBP 2.6008.03.2015. u 19:39 - pre 110 meseci
Pozdrav svima,

Imam jedno pitanje.

Treba da uradim 32 bitno deljenje sa PBP 2.60.
Računam periodu signala iz poznate frekvencije, znači t(us) = 1000000 / F(Hz).

Ima li načina da pre div32 komande izbegnem množenje dva worda sa predefinisim vrednostima od 1000 radi "punjenja" internih registara.
Zamislio sam da u interne registre upišem (Hi+Mid+Low) vrednost F4240 (dec 1000000) i tako uštedim vreme potrebno za ovu kalkulaciju.

Problem je što ne znam može li tako, i ako može kojiu su nazivi tih internih registara ?

Želja

[Ovu poruku je menjao Želja dana 08.03.2015. u 20:55 GMT+1]
 
Odgovor na temu

Želja
Sam svoj majstor

Član broj: 326849
Poruke: 78
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: div32 - PBP 2.6008.03.2015. u 19:58 - pre 110 meseci
Evo šta sam našao u : pbppi14e.lib

;****************************************************************
;* MUL : 16 x 16 = 32 multiply *
;* *
;* Input : R3 * R1 *
;* Output : R2, W = low word *
;* : R0, R2 + 1 = mid word *
;* : R0 = high word *
;* *
;* Notes : *
;****************************************************************

ifdef MUL_USED
LIST
MUL movlw 16 ; For 16 shifts
movwf R4

clrf R0 + 1
clrf R0

mulloop rrf R3 + 1, F
rrf R3, F
btfss STATUS, C
goto mull1 ; Skip add
movf R1, W ; 16-bit add with carry out
addwf R0, F
movf R1 + 1, W
addwfc R0 + 1, F
mull1 rrf R0 + 1, F
rrf R0, F
rrf R2 + 1, F
rrf R2, F
decfsz R4, F
goto mulloop
movf R2, W ; Get low byte to W
goto DONE
NOLIST
DONE_USED = 1
endif
 
Odgovor na temu

foxhunter1
KN03NL

Član broj: 234323
Poruke: 238
*.dynamic.isp.telekom.rs.



+48 Profil

icon Re: div32 - PBP 2.6009.03.2015. u 07:57 - pre 110 meseci
Da si jos malo zaceprkao nasao bi i:

Code:

;****************************************************************
;* DIV32      : 31 x 15 divide                                  *
;*                                                              *
;* Input      : R0, R2 = 32 bits                                *
;*            : R1 + 1, W = divisor                             *
;* Output     : R0, W = quotient                                * 
;*            : R2 = remainder                                  *
;*                                                              *
;* Notes      : Uses result from MUL.                           *
;****************************************************************


gde pise da su ulazi R0 i R2. Probaj da im direktno dodelis vrednost, neposredno pre upotrebe DIV32.

Ako me memorija pamcenja dobro sluzi, mislim da sam negde procitao da treba iskljuciti interapte (ako ih uopste i koristis)
pre poziva DIV32 i ukljuciti posle DIV32, jerbo kompajler interno koristi ove R0 - R2 registre (lokacije).

Pozdrav,

ps. Posto vec insistiras na brzini - nesto mi se to ne slaze sa upotrebom PIC16 serije uC... kod nje su mnozenje i deljenje
softverski i traje li ga traje. Kod PIC18 - mnozenje je hardversko i u dva masinska ciklusa izvrsi mnozenje dva 16 bitna broja.

Think about it

pps. Obrati paznju da mozes da delis sa (maximalno) 15 bitnim brojem tj sa 32768
73 de YU1OL
 
Odgovor na temu

Želja
Sam svoj majstor

Član broj: 326849
Poruke: 78
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: div32 - PBP 2.6009.03.2015. u 10:40 - pre 110 meseci
Da, to je to - radi.
- Hvala drugar

Još sinoć sam shvatio da sam praktično sam sebi odgovorio.

Pozdrav
Želja
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: div32 - PBP 2.60

[ Pregleda: 2417 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.