Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Изменение текста программы при смене компилятора и чипа
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Страницы: 1, 2, 3, 4, 5, 6, 7
RW6MKA
Всем доброго времени. Вот файл очень простого проектаНажмите для просмотра прикрепленного файла, может кто глянет,что здесь не так.Нажмите для просмотра прикрепленного файла Кнопкой setup устанавливается интервал( в сек) работы, кнопкой run запускается рабочий цикл. Во время работы происходит включение реле вращения вправо на 6сек, потом пауза 2сек, вращение влево 6сек, пауза 2сек и так до окончания времени. В железе часто по истечению времени индикатор обнуляется, а последнее включенное реле остаётся включеным и схема не реагирует на кнопки, почему?Или индикация самопроизвольно начинает меняться по порядку от 1 до 0, но при этом схема реагирует на нажатие кнопки run. Что за глюки?
RW6MKA
Ну что то никто не хочет подсказать в чём косяк(((
MaslovVG
Цитата(RW6MKA @ Feb 3 2012, 18:53) *
Ну что то никто не хочет подсказать в чём косяк(((

Без программы вам никто ничего не скажет. А по схеме у вас неправильно стоят диоды, они должны быть паралельно реле. В вашем варианте включения они не подавляют индуктивный выброс на реле.
RW6MKA
Цитата(MaslovVG @ Feb 3 2012, 19:28) *
Без программы вам никто ничего не скажет.

Так она в файле stirka!?
RW6MKA
Всем доброго времени. Возникла проблемка, бьюсь головой об стол -не помогает. crying.gif Почему эта функция ничего не возвращает?(uint16_t m - объявленая глобальная переменная). Данные функции Analog() суммируются и всё, n не считается и ничего не возвращается wacko.gif
Код
uint8_t SumAnalog(void) {
        uint8_t n;
        
        n = 8;
        m = 0;
        while(n--) m += Analog();
        n = (m>>8);
        
        return(n);
}
_Артём_
Цитата(RW6MKA @ Sep 2 2012, 22:42) *
Почему эта функция ничего не возвращает?Данные функции Analog() суммируются и всё, n не считается и ничего не возвращается

Как вы узнаёте, что не возвращается ничего? Может результат нигде не используется и компилятор выкидывает возврат. Приведите пример вызова функции и использования результата.

Цитата(RW6MKA @ Sep 2 2012, 22:42) *
n = 8;
m = 0;
while(n--) m += Analog();
n = (m>>8);
[/code]


Может
Код
n = (m>>3);

так надо сдвигать или вам на 8 бит сдвиг нужен?
artkam
Цитата(RW6MKA @ Sep 3 2012, 00:42) *
Код
uint8_t SumAnalog(void) {
        uint8_t n;
        
        n = 8;
        m = 0;
        while(n--) m += Analog();
        n = (m>>8);
        
        return(n);
}


Есть нехорошее подозрение, что надо участок кода подправить на что-то вроде:
Код
          while(n != 0){
              m += Analog();
              n--;
          }
RW6MKA
Цитата(_Артём_ @ Sep 3 2012, 00:02) *
Как вы узнаёте, что не возвращается ничего? Может результат нигде не используется и компилятор выкидывает возврат. Приведите пример вызова функции и использования результата.



Может
Код
n = (m>>3);

так надо сдвигать или вам на 8 бит сдвиг нужен?

В теле другой функции
Код
AC_Time = SumAnalog();
так вот эта глобальная переменная все время == 0.
А с делением на 8 эт я по запарке написал не так, в основном коде все верно (m>>3).



Цитата(artkam @ Sep 3 2012, 03:10) *
Есть нехорошее подозрение, что надо участок кода подправить на что-то вроде:
Код
          while(n != 0){
              m += Analog();
              n--;
          }

Не пойму, в чем смысл замены. Вроде то же, но оно работает!!! Можете объяснить?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.