У Вас ошибка в форматной строке, о чем компилятор Вам и сообщает - нельзя применять оператор "%" к вещественным числам. Вообще странный способ вывода числа у Вас придуман.
А как вы предлагаете выводить? Через sprintf()? Пробую выводить таким способом,выводится нифига не напряжение, а "Voltage = 2f v"
Код:
sprintf(lcd_buf,"Voltage = %.2f V \r\n",voltage); puts(lcd_buf);
Как быть? И кстати вопрос с сравнением напряжения не закрыт... в уарт выводится ошибка о напряжении, не лежащем в пределах. хотя напряжение в этот момент = 6.36 вольт(и по тестеру и измерением ADC МК).
Код:
if (voltage < 6.3 || voltage > 6.9){printf("ERROR Voltage\r\n"); ok = 1; } else { printf("Voltage OK\r\n"); ok = 0; }
Здраствуйте всем, недавно начал осваивать АВР и Codevision по примерам написал следующее[code]
Так вот все работает и хочу сюда пределать измеритель Амперчасов но никак не могу сообразить как это сделать ПС кварц что в протеусе он не нужен, это я хотел таймер задействовать чтобы считал с 1с интервалом но чето не вышло.
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 26, 2014 10:07:57
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19843 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
В таком коде никто разбираться не будет.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Мне разбиратся в нем и не нужно, он рабочий, просто дайте совет как осуществить подсчет амперчасов. Ток у нас есть остается либо задействовать асинхронный таймер чтобы подсчитывал часы либо минуты и их вставить в формулу для вывода на лсд либо ....как проще?
В уарт выводится " Voltage = 2f " Вот так вот пытаюсь узнать истино ли выражение if (voltage < 6.3 || voltage > 6.9){printf("ERROR Voltage\r\n"); ok = 1; } else { printf("Voltage OK\r\n"); ok = 0; }
подскажите как записывать в память епром показания датчиков. хочу сделать датчик уровня воды, нужно отслеживать положение попловка с помощью поплавка с магнитом и греконов. но есть положения когда поплавок находится между герконами и питание схемы будет отключатся так вот нужно что бы перед выключением устройства положение поплавка записывались в епром. или перезапись шла например 1 раз в 15 мин, для того что бы когда включишь устройство и поплавок окажется между герконами (датчиками) там где магнитное поле не работет то получится что нет сигнала , для этого мне нужно считать записаные показания до этого из епром. с епром не разу не работал , как его надо иницализировать или побьявлять?? и для разных микроконтролеров разные инициализации епром или нет. предполагаю использовать тини 13 или мега 8
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт мар 13, 2014 18:05:41
Родился
Зарегистрирован: Ср мар 13, 2013 08:41:58 Сообщений: 5
Рейтинг сообщения:0
приветствую коты собираю дивайсину под названием "электропривод крышки багажника" хотелось бы у вас спросить про коллекторный шум зл. двигателя, а именно как реализовать фичу зашиты двигателя от пере нагрузки как сделано в доводчиках окон стеклоподъёмника. чувствую что надо копать в сторону коллекторного шума когда щетки двигателя перестают шуметь то авр дает сигнал реле и цепь размыкается возможно ли это реализовать с помощью авр (tiny2313 или mega8-mega16)
схема дивайсины на данный момент
Вложение:
Комментарий к файлу: работает если нажать на кнопку то мотор вращаться 2.5 сек потом встает, еще раз нажать вращаться в другую сторону 2.5 сек dev_rev003.jpg [47.59 KiB]
Скачиваний: 366
код программы cvarСпойлер
Код:
#include <tiny2313.h> #include <delay.h> // Declare your global variables here
было бы не плохо к коду пояснения писать.)) а что если кнопку поставить которую будет нажимать крышка при полном открытии или закрытии?? или датчик оптический щелевой. а еще видел где то ставили геркон ,его обматывали проводом получался электро магнит, затем его подключали к мотору кажется и когда тот упирался в преграду то на проводе начинал проходить ток тем самым создавая магнитное поле и гркон замыклся а там можно от геркона управление на мк сделать.
коты разъясните пожалуйста , хочу с помощью оптопары считывать импульсы микроконтролером атини 13. фиксировать импульсы буду с помощью внешнего прерывания по ниспадающему уровню. в визарде cvavr содал первоначальный код, написал прогу но вот в авр студио симуляторе заметил то что прерывание не происходит пока не поставиш флаг в GIFR INTF0, на картинке обвел кружком. код для инициализации создан визардом MCUCR=0x02; // по нисподающему уровню GIFR=0x40; // а вот тут не чего не плучается , в симуляторе авр студио после прочтения этой строки все равно отсается флаг пустым, в чем проблема GIMSK=0x40; // включить прерывания от INT0
GIFR=0x40; // а вот тут не чего не плучается , в симуляторе авр студио после прочтения этой строки все равно отсается флаг пустым, в чем проблема
А с какой радости там что-то должно появиться ? The flag is cleared when the interrupt routine is executed. Alternatively, the flag can be cleared by writing a logical one to it. В переводе на рабоче-крестьянский, этот флаг СБРАСЫВАЕТСЯ обработчиком прерывания или же именно записью 1 в этот бит GIFR. А УСТАНАВЛИВАЕТСЯ этот флаг асинхронно самим фактом изменения уровня на отслеживаемой пине. Т.е. производя эту манипуляцию при инициализации, мы всего лишь очищаем флаг, чтобы сразу не было ложного прерывания, если каким-то образом он был ранее установлен, и подготавливаем прерывание именно по фактическому изменению уровня.
GIFR |= (1<<6); - это лишнее (но не мешает). Чтобы произошло прерывание, нужно поменять уровень с высокого на низкий. При отладке ставите, снимаете соответствующую галочку в PINB? Еще, переменная pr должна быть volatile.
всем спасибо за помощь, я балбес дергал не той ногой((( тыкал порт Б0 а надо было порт Б1.... все вробе бы пока заработало , сегдня буду дальше колдовать над кодом..)))
Здравствуйте, как в CV при инициализации разместить массив в EEPROM по нужному мне адресу ?
Так же ещё интересует как стереть всю EEPROM ? Точнее как сделать так что бы файл .eep был забит FF а не только теми значениями которые используется в программе.
Код:
:0A0000000102030405060708090BBE :00000001FF
программатор UABasb программирую через Khazama AVR Programmer.exe
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения