[elektro] PIC 10 bit szorzás kérdés
potyo
potyo.ada at gmail.com
Fri Feb 6 15:03:30 CET 2009
Elvileg:
MOVF ADRESL, W
MULWF ADRESL ; ADRESL * ADRESL -> ; PRODH:PRODL
MOVFF PRODH, RES1 ;
MOVFF PRODL, RES0 ;
;
MOVF ADRESH, W
MULWF ADRESH ; ADRESH * ADRESH -> ; PRODH:PRODL
MOVFF PRODL, RES2 ;
;
MOVF ADRESL, W
MULWF ADRESH ; ADRESL * ADRESH -> ; PRODH:PRODL
MOVF PRODL, W ;
ADDWF RES1, F ; Add cross
MOVF PRODH, W ; products
ADDWFC RES2, F ;
;
MOVF ADRESH, W ;
MULWF ADRESL ; ADRESH * ADRESL -> ; PRODH:PRODL
MOVF PRODL, W ;
ADDWF RES1, F ; Add cross
MOVF PRODH, W ; products
ADDWFC RES2, F ;
RES3 nincs, mert 10x10-es szorzásnál elég 20 bit. Ki nem próbáltam, de az
egyébként az adatlapban szereplő mintakódból csináltam. Az utolsó két
blokkot lehetne egyesíteni, és akkor még további ciklusokat lehet nyerni, de
ezt már csináld meg te. Fejből nem emlékszem, hogy az AD konverzió eredménye
többször kiolvasható-e az ADRESx regiszterekből, de szerintem igen. Ha
véletlen mégsem, akkor két ideiglenes regiszter kell még. Ez így elvileg
2,2us 40MHz-es órajelnél.
2009. február 6. 14:40 Adam Huszar írta, <adam.huszar at machinnov.com>:
> Sziasztok!
>
> Szeretnék egy PIC18F1320-as procival áram effektív értéket
> számolni. Az áramot az AD-val nézem, és az 10 bites eredményt ad. A
> proci csak 8 bites, de van benne hárdveres 8x8 bites szorzóka. Ugye
> ahhoz, hogy az effektív értéket meghatározzam egy bizonyos
> időintervallumra, végre kell hajtani azt, hogy az AD értékét négyzetre
> emeljem, majd utána összegezzem ezeket az értékeket. Megírtam 8 bitre,
> nagyon szépen működik, de ha már 10 bites az AD, akkor szeretném
> kihasználni. Tehát a kérdés: hogyan tudom négyzetre emelni az AD 10
> bites értékét a 8x8 bites hárdveres szorzó segítségével? Azért kellene
> a hárdveres szorzó, mert kevesebb mint 5us alatt kéne kiszámolni.
> Biztos nagyon amatőr egy kérdés, de se matekból, se digitális
> technikából, se programozásból nem voltam jó... :D
>
> Ádi
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list