Отговори на тема  [ 47 мнения ]  Отиди на страница Предишна  1, 2, 3, 4
C за PIC18, използващо хардуерното му умножение? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 12:02 pm
Мнения: 3070
Местоположение: София
Мнение Re: C за PIC18, използващо хардуерното му умножение?
Цецо написа:
не вярвам.


Ми пробвай. ;)
Те с това си се фукат съвсем официално на сайта:
http://www.microchip.com/stellent/idcpl ... e=en535448

fan написа:
А бе, на този човек няма ли кой да му каже, че щом не си е направил труда да разбере "идеологията" :) на PIC12,16 и 18 сериите, да мине направо на PIC24 примерно. Явно е писал за AVR и ги е разбрал и сега му е трудно да възприеме 8-битовите пикове. :)


Човека е писал на всичко, но не и на AVR. Единственото атмелско нещо, в което е писал е едно Attiny, и толкоз.

Какво толкова има да му разбирам на идеологията - взимам MCU с хардуерно умножение и искам компилатора да го ползва. После сравнявам два компилатора, от които единия ползва 2 пъти повече памет и 70% повече флаш, за едно и също нещо. Тук мъдрим защо така и какво да пипна. Всяко MCU си има особеностите. Всеки компилатор за него - също.
ВЕрвай ми, знам какво представлява и PIC24, и PIC32. Ама да давам 3 евра за MCU, което е 10 пъти по-бързо и 3 пъти по-скъпо от това, дето ми трябва, не мислиш ли че няма сми? С конкретната задачка и средна хубост PIC16 ще се справи. Въпроса не е в това. Просто исках да си изясня какво да ползвам като компилатор и защо. Е, изясних си че трябва да имам под ръка и XC8, и C18.

Сега по темата - докарах C18 да ползва само 30-ина байта повече памет и около 30-ина процента повече флаш. Вероятно може и повече, ама ще си остана на XC8. Направих си макрос за умножението, та поне да се вижда че правя умножение на съответното място. Конкретния проект вече се компилира и на двете, след известно количество заигравки.


Вто Фев 05, 2013 11:29 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: C за PIC18, използващо хардуерното му умножение?
Хванах се да пробвам какво ще изплюе така оплювания Proton за 16х16->32 и ето ...
Код:
PP0 = 0
PP0H = 1
PP0HH = 2
PP0HHH = 3
PP2 = 4
PP2H = 5
PP2HH = 6
PP2HHH = 7
PP3 = 8
PPZ = 9
PPZH = 10
PPZHH = 11
PPZHHH = 12
_A = 13
_AH = 14
_B = 15
_BH = 16
_C = 17
_CH = 18
_CHH = 19
_CHHH = 20
proton#code#start
        org 0
        goto proton#main#start
        org 8
AL@MUL
        movff 3,12
        movff 2,11
        movff 1,10
        movff 0,9
        movf 11,W,0
        mulwf 4,0
        movff 4083,2
        movff 4084,3
        movf 10,W,0
        mulwf 5,0
        movf 4083,W,0
        addwf 2,F,0
        movf 4084,W,0
        addwfc 3,F,0
        movf 9,W,0
        mulwf 6,0
        movf 4083,W,0
        addwf 2,F,0
        movf 4084,W,0
        addwfc 3,F,0
        movf 12,W,0
        mulwf 4,0
        movf 4083,W,0
        addwf 3,F,0
        movf 11,W,0
        mulwf 5,0
        movf 4083,W,0
        addwf 3,F,0
        movf 10,W,0
        mulwf 6,0
        movf 4083,W,0
        addwf 3,F,0
        movf 9,W,0
        mulwf 7,0
        movf 4083,W,0
        addwf 3,F,0
        movf 9,W,0
        mulwf 4,0
        movff 4083,0
        movff 4084,1
        movf 10,W,0
        mulwf 4,0
        movf 4083,W,0
        addwf 1,F,0
        movf 4084,W,0
        addwfc 2,F,0
        movlw 0
        addwfc 3,F,0
        movf 9,W,0
        mulwf 5,0
        movf 4083,W,0
        addwf 1,F,0
        movf 4084,W,0
        addwfc 2,F,0
        movlw 0
        addwfc 3,F,0
        return
proton#main#start
        clrf 4088,0
        clrf 4011,0
        movlb 0
F2_SOF equ $ ; MULTEST.PRP
F2_EOF equ $ ; MULTEST.PRP
F1_SOF equ $ ; MULTEST.BAS
main
F1_000021 equ $ ; IN [MULTEST.BAS] C=A * B
        movff _A,PP0
        movff _AH,PP0H
        clrf PP0HH,0
        clrf PP0HHH,0
        movff _B,PP2
        movff _BH,PP2H
        clrf PP2HH,0
        clrf PP2HHH,0
        f@call AL@MUL
        movff PP0HHH,_CHHH
        movff PP0HH,_CHH
        movff PP0H,_CH
        movff PP0,_C
F1_000023 equ $ ; IN [MULTEST.BAS] GOTO MAIN
        F@JUMP main
F1_EOF equ $ ; MULTEST.BAS
PB@LB2
        bra PB@LB2


Реално в умножението ползва 13 байта (които ако има и друг код - деленние и т.н. си ги ползва и в него). То реално умножението е даже 32х32->32 битово...


Вто Фев 05, 2013 12:09 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 47 мнения ]  Отиди на страница Предишна  1, 2, 3, 4

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 31 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни