Трабла была в free версии компилятора, нужна pro.
Множитель/делитель на микроконтроллере
- Сообщения: 2
- Зарегистрирован: Пт мар 23, 2018 11:47:38
- Реклама
- Сообщения: 1978
- Зарегистрирован: Ср июл 17, 2013 13:55:57
Вот тут переделал для free версии XC8. Но т.к. в бесплатной версии плохо с оптимизацией, деление на дробное число не влезет. Там конкретно человек просил кэф. 1.5 - сделал через деление на 2 + 1/3. Так влезает. Если кэф нужен другой - думать нужно самому как это в целых числах провернуть.
- Сообщения: 18
- Зарегистрирован: Вс ноя 13, 2011 01:24:03
Всем привет!
Спасибо Nstorm за работу и пояснения. Пригодилось на днях.
Вот вариант на счет подумать для free версии, кусочек кода:
//--------------------
GIE = 0;
per_tmp = Per_In;
GIE = 1;
per_tmp /= 1;
//--------------------
if (per_tmp) {
per_tmp = (unsigned long)(per_tmp / 1);
per_tmp += (per_tmp / 9);
per_tmp = (unsigned long)(per_tmp / 2);
GIE = 0;
Per_Out = per_tmp;
GIE = 1;
TMR1IE = 1;
} else {
TMR1IE = 0;
PIN_OUT = 0;
Еще раз спасибо. ))
Спасибо Nstorm за работу и пояснения. Пригодилось на днях.
Вот вариант на счет подумать для free версии, кусочек кода:
//--------------------
GIE = 0;
per_tmp = Per_In;
GIE = 1;
per_tmp /= 1;
//--------------------
if (per_tmp) {
per_tmp = (unsigned long)(per_tmp / 1);
per_tmp += (per_tmp / 9);
per_tmp = (unsigned long)(per_tmp / 2);
GIE = 0;
Per_Out = per_tmp;
GIE = 1;
TMR1IE = 1;
} else {
TMR1IE = 0;
PIN_OUT = 0;
Еще раз спасибо. ))
