Не могу изменить скорость ацп, значит то, что при любых настройках которые я ему даю, он мерит на полной скорости, если честно то и фиг с ним, постараюсь разобратся, мож и правда что не так делается.
только что посмотрел, одна из ошибок в умножении, файл с доказательством как пологается прикладываю, програмка проще некуда
float fSumm,summ;
__C_task void main(
void )
{
// InitMCU();
// while(!(PINB_Bit5)){;}
while (1)
{
fSumm=234.123;
fSumm=fSumm*2; --- вот тут у меня выдает 0 но только на кристалле!!!
fSumm = fSumm / 2;
summ=Mesure();
PORTB=summ+2;
}
}
на лишний хлам внимания не обращайте, для честности дал как она есть в программе. Он написан в надежде что компилятор его оптимизировал и не передал значение, но надежда не оправдалась, увы.
То что в файле:
показываю то как считает ИАР в его родном дебугере и на кристалле, через дракон.
ошибка сразу видна..
Через дракон, в асме лазить трудно, все переменные пишет,
Not in scope, согласитесь оч тяжело понять где что, да и дракон все время при хождении по асму просто падает. Я смог найти только место, где вроде как затирает значение которое должен считать, но не уверен, так долеко дракон зашел лиш раз, теперь просто падает.
tn461_4.zip ( 315.95 килобайт )
Кол-во скачиваний: 79извиняюсь за скорость, старался чтобы места занимало поменьше
to
SasaVitebsk1. На данный момент, 2 ошибки с умножением и с квантованием АЦП.
2. Найдена ошибка, в ней я уверен на 90%, при умножении чисел с точкой (для непонятливых это 2.0 или 123.123) long, float, int, char. Любое умножение даже на 2.0 даст результат 0, хотя в его дебугере виртуальном, дает правильный результат.
3. Запись в регистры АЦП производится, но действия не оказывает никакого, начинаю подозревать в этом ИАР, в тани461 изменили модууль АЦП, а они видимо это не учли.
тип return
unsigned intхотя не думаю что это важно