Что возвращает printf? Правильно, кол-во выведенных символов. В ЕЕ попадет просто число (от 5 до 8, в зависимости от времени). Хотите в ЕЕ записать строку? Что-то вроде этого:
Что возвращает printf? Правильно, кол-во выведенных символов. В ЕЕ попадет просто число (от 5 до 8, в зависимости от времени). Хотите в ЕЕ записать строку? Что-то вроде этого:
Помогите разобраться с проблемой, тк функция delay_us () не работает с перменными, я решил исправить ситуёвину циклом, прошил контроллер, но че-то ничего не работает....
как бэ программа написана так, чтобы с помощью этих задержек изменять яркость(жалкое подобие ШИМ), ну по крайней мере мне кажется что прога так написана, вопрос в том, что яркость не меняется, как и картина на осцике, значит программа выполняется не так как я хочу)
Ну вот с этого и нужно было начинать свой пост, дабы избавить нас от гадания и доп. вопросов
У Вас переменная u доходит до 100 и программа тупо зацикливается без всяких действий.
помогите пожалуйста с режимом сна в тини 13. не как не разберусь , что же надо делать. и даташит прочитал и кучу всяких примеров пересмотрел, но они как правило на асамблее, на си не видел да к тому же еще в cvavr. понял что нужно разрешить сон а что нужно писать не знаю.(( нужен сон глубокий (повер довн) на sm1 (1) sm0 (0), пробуждение от внешнего прерывания только мне надо не 0 будить а 1цей. алгоритм работы устройства такой
// смотрим состояние pinb.3 если 0 то не чего не делаем и уходим в сон
// если 1 то пробуждаемся и запускаем таеймер на 20 секунд. на portb.4 подаем 1
// если в течении 20 секунд на pinb.3 состояние не изменилось и там до сих пор 1 то накидываем еще 20 сек
// если изменилось то завершаем работу и уходим в сон.
ну не как не пойму что нужно писать что бы разрешить сон. вот моя программа с кусками из других примеров для сна но компилироватьт не хочет выдает ошубку в строке void main void((
Спойлер#include <tiny13.h>
#include <sleep.h>
unsigned int counter;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
У меня контроллер мега 168, работает на частоте 16 Мгц.
За одну секунду АЦП опрашивается примерно 1200 раз.
Проблема такая: не измеряется температура (датчик цифровой DS18b20) из за частого опрашивания АЦП. Если закоментировать измерения АЦП, то температура измеряется.
Я думаю проблему можно решить так: запретить прерывания по окончанию преобразования АЦП. Как это сделать?
Второй вариант: не мерить АЦП в момент измерения температуры. Как это сделать?
Подскажите свои варианты! Заранее огромное спасибо!
Amstron, у Вас проблема с работой с DS18(B)20, а для этого есть отдельная тема, почитайте её и, если не найдёте ответа, задайте там.
CVAVR тут совсем не причём - тут обсуждается конкретный компилятор, и проблемы, связанные конкретно с ним.
К стати, это касается и остальных пользователей, особенно, оставивших 2 предыдущих перед Вами сообщения.
pashaumnov писал(а):помогите пожалуйста с режимом сна в тини 13. не как не разберусь , что же надо делать. и даташит прочитал и кучу всяких примеров пересмотрел, но они как правило на асамблее, на си не видел да к тому же еще в cvavr. понял что нужно разрешить сон а что нужно писать не знаю.(( нужен сон глубокий (повер довн) на sm1 (1) sm0 (0), пробуждение от внешнего прерывания только мне надо не 0 будить а 1цей. алгоритм работы устройства такой
// смотрим состояние pinb.3 если 0 то не чего не делаем и уходим в сон
// если 1 то пробуждаемся и запускаем таеймер на 20 секунд. на portb.4 подаем 1
// если в течении 20 секунд на pinb.3 состояние не изменилось и там до сих пор 1 то накидываем еще 20 сек
// если изменилось то завершаем работу и уходим в сон.
ну не как не пойму что нужно писать что бы разрешить сон. вот моя программа с кусками из других примеров для сна но компилироватьт не хочет выдает ошубку в строке void main void((
Вот засунул в автоматический анализатор ошибок и получил ответ:
#include <tiny13.h>
#include <sleep.h>
unsigned int counter;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{//Open TIM0_OVF
if(++counter > 10) PORTB.4= 0; // если истекли 20 сек
}//Close TIM0_OVF
interrupt [EXT_INT0] void ext_int0_isr(void)
{// Open EXT_INT0
if(PINB.3)
{//open if
sleep_disable();
}//close if
else
{//oper else
sleep_enable();
}//close else
//were the closing parenthesis '}' EXT_INT0 goes?
// Declare your global variables here
PS И пользуйтесь отступами уровня, они иногда помогают найти такие ошибки
Amstron писал(а):За одну секунду АЦП опрашивается примерно 1200 раз.
А оно вам надо? Может проще запуск преобразования сделать после считывания с датчика?
И тем более еще неизвестно как вы там этот ацп опрашиваете если value=read_adc(x); То в топку ваш код вместе с программистом, который написал эту функцию
vitalik_1984 писал(а):Вот засунул в автоматический анализатор ошибок и получил ответ:
а что за программка такая?? можно название , очень полезная штуковина.))
по поводу мк буду разбираться по строчно.
для того что бы разрешить sleep в тини 13 нужно в 5ом регистре MСUCR прописать 1 для режима (pwr down) в регистрах sm0 поставить 1 а в регистре sm1 поставить 0
вопрос как это оформить в MCUCR нужно добавить sm0 и sm1 тогда буде выглядеть так MCUCR=0x10 правильно???
или как то надо по другому
второе , прерывание сна будет происходить при подаче на INT0 логического ноля. а если мне нужно делать прерывание 1цей??? и возможно ли это ??
Bit 5 - SE: Sleep Enable - Разрешение режима Sleep
Установленный в 1 бит SE разрешает перевод MCU в режим sleep по команде SLEEP.ИЛИ ЖЕ ТАК НАДО ??? MCUCR=0x20
ИЛИ ТАК MCUCR|=(1<<5)
ИЛИ ТАК MCUCR |= (1<<SE)|(1<<SM1)|(0<<SM0);И можно мне подробную расшифровку последней строчки.??MCUCR потом идет побитовое или и сдвиг se без изменения остальных битов , так??
можно ли было это записать по другому MCUCR = (SE=1);(SM1=1);(SM0=0);
Может не в тему, или уже было это, вы меня извините, весь вечер еб..сь ....проект в CVAVR 2.05.0 отлаживаю AVR Studio 4.19 ... почему конструкции типа flag&=~(1<7); ,ADCSRA|=(1<6) ; не работают . Работают flag&=0b01111111;, ADCSRA|=0b01000000 ; ??? Работает PORTB|=1<num_digit ;.....
edds писал(а): почему конструкции типа flag&=~(1<7); ,ADCSRA|=(1<6) ; не работают . Работают flag&=0b01111111;, ADCSRA|=0b01000000 ; ??? Работает PORTB|=1<num_digit ;.....