CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Запустил так:
// Clock value: 4000,000 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inverted PWM
TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);

В протеусе заработало, скважность импульсов меняется.
Немного непонятны регистры
OCR1AH=0x00;
OCR1AL=0x00;- Это начальная скважность? И если у меня начинает загораться с 0, мне настраивать их не нужно?

Да счетчик вставлю в таймер индикации, спасибо за совет
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

"H" и "L" - это старший и младший байт регистра.
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Спасибо за помощь!!! Сам бы долго мучался с реализацией ШИМ
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Появилась еще одна проблема, скорее всего в железе, так что извините за оффтоп. При программной яркости 0, не гаснет полностью светодиод. После выхода с мк стоит ключ на кт815, (резистор смещения 300 Ом) со светодиодами включенными в коллектор и отдельным питанием 12 вольт(земля общая с питанием мк). На выходе 1 вольт, светят слабо но все равно напрягает. Частота ШИМ 2 кГц. Программная максимальная яркость соответствует 100%. Подскажите пожалуйста в чем проблема?
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Re: CodeVision AVR в вопросах и ответах

Сообщение *Trigger* »

Проблемы нет. Про это сказано в даташите. При коде 0 в OCR на выходе будут иголки.
If the OCR1x is set equal to BOTTOM (0x0000) the output will be a narrow spike for each TOP+1 timer clock cycle.

Поэтому вместо записи 0 в OCR нужно выключать ШИМ и устанавливать соответствующий вывод в 0 вручную.
То же самое и при 255 в OCR.
Другое решение - режим Phase Correct PWM.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Спасибо попробую Phase Correct PWM.
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Если не сложно ответить появилось еще несколько вопросов:
Учусь на готовых программах, и непонятно вот что:
1. До скольких считать OCR1 на 8 битном ШИМ. В других программах максимум равен 254, но по идее должно же быть 255

2. Как правильно опрашивать DS1307 и DS18b20. Нужен цикл или нет
for (i=0; i<255; i++) { temperature=ds18b20_temperature(&rom_code[0][0]); }
for (i=0; i<255; i++) { rtc_get_time(&hour,&min,&sec); }

3. В какой системе действовать с данными из DS1307.
У меня в программе так вывод на семисегментник
digit_out[0] = hour / 10;
digit_out[1] = hour % 10;
digit_out[2] = min / 10;
digit_out[3] = min % 10;

А это из другой программы тут двоично десятичные числа
digit_out[0] = myhour >> 4;
digit_out[1] = myhour & 0x0F;
digit_out[2] = mymin >> 4;
digit_out[3] = mymin & 0x0F;

Все операции установки времени провожу как с десятичными числами. Но ведь из DS1307 передаются двоично-десятичные числа?
Иногда глючат часы показывая невесть что и сбрасываясь в 0, но это наверное помехи так как провод от блока питания сильно длинный или нет?

Заранее спасибо!
Аватара пользователя
Wolf_X
Открыл глаза
Сообщения: 41
Зарегистрирован: Чт окт 23, 2014 04:12:56

Re: CodeVision AVR в вопросах и ответах

Сообщение Wolf_X »

Более менее разобрался.
1.Эквивалентное напряжение выше при 255. Проверял для Phase Correct PWM, не знаю имеетэто значение или нет. В примерах было 254 для Fast PWM.

2. Для DS18b20 нужен не цикл а запрет прерываний, она не терпит задержек, но у меня динамическая индикация запрещать прерывания не могу, но пока не было сбоев. DS1307 допускает паузы в опросе, значит не имеет разницы как ее опрашивать.

3. Предпочтительней работа с двоично десятичными числами, так как нет конвертации перед получением минут часов, только надо изменять и библиотеку для DS1307 и конвертировать установки времени.

Поправьте меня если что не так.
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

Re: CodeVision AVR в вопросах и ответах

Сообщение AVK »

есть 16ти разрядная переменная, ее надо сохранять в ds1307 и соответственно при включении контроллера читать из нее, чет не очень я представляю как это сделать. Ну всмысле как читать, писать в дску понятно, как склеивать два байта непонятно.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение WiseLord »

Ну как-то так (храним по адресам 0x08 и 0x09):

Код: Выделить всё

void save_to_ds1307(uint8_t byte, uint8_t addr);
uint8_t get_from_ds1307(uint8_t addr);

uint16_t var;

/* Saving */
save_to_ds1307(var >> 8, 0x08);
save_to_ds1307(var & 0xFF, 0x09);

/* Restoring */
var = get_from_ds1307(0x08) << 8;
var |= get_from_ds1307(0x09);
Последний раз редактировалось WiseLord Вт мар 10, 2015 06:18:06, всего редактировалось 1 раз.
AVK
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Сб окт 20, 2007 14:12:03

Re: CodeVision AVR в вопросах и ответах

Сообщение AVK »

Спасибо, отлично работает!
kk042fjv
Грызет канифоль
Сообщения: 261
Зарегистрирован: Ср авг 01, 2012 10:45:42

Re: CodeVision AVR в вопросах и ответах

Сообщение kk042fjv »

Добрый день!
Подскажите как правильно пользоваться операцией if else?
написал я код

Код: Выделить всё

V =data*0.0048828;
 
      if (V>2.5)
      {
       TCCR2=0x6D;
      }
      else
      {
       TCCR2=0x6E;
      }

На АЦП поступает напряжение, когда U до 2.5В ШИМ работает с частотой 0x6E, когда U становится больше 2.5В ШИМ=0x6D.
Все работает, теперь хочу добавить еще когда U>3.7В ШИМ=0x6D, когда U>4.2В ШИМ=0x6С.
Если описать короче:
U<2.5В ШИМ=0x6E
U>2.5В ШИМ=0x6D
U>3.7В ШИМ=0x6E
U>4.2В ШИМ=0x6C
Подскажите как правильно сделать?
Последний раз редактировалось kk042fjv Ср мар 11, 2015 09:45:55, всего редактировалось 1 раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение Аlex »

Подскажите как правильно пользоваться операцией if else?
Какой кошмар. Не стыдно такие вопросы задавать, в то время, когда ответы на них ищутся за считанные секунды ? :facepalm:
http://yandex.ru/yandsearch?clid=9582&t ... 0%A1%D0%B8
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение ARV »

Код: Выделить всё

if(условие_1){
   // обработка условия_1
} else if(условие_2){
   // обработка условия_2
} else if(условие_3){
   // обработка условия_3
} else if(условие_4){
   // обработка условия_4
} else if(условие_5){
   // обработка условия_5
}
так можно делать хоть 100500 раз

хотя, конечно, правильнее всего было бы определить зависимость ШИМ от АЦП соответствующей формулой, чтобы из значения АЦП сразу получать правильный ШИМ (если, конечно, дискретное изменение ШИМ не является важной целью).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Alexen
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Сб ноя 09, 2013 23:43:50
Откуда: Запорожье

Re: CodeVision AVR в вопросах и ответах

Сообщение Alexen »

Всем привет. Подскажите мне такой вопрос. Возможно ли вывести Мк из глубокого сна при помощи прерывание компаратора? Я так подозреваю что нет, тогда как поступить? Вообщем при пропадании основного напряжения подключается батарейка и проц. уходит в сон "powersave" при восстановлении сети - не пробуждается. Юзать внешнее прерывание по нарастающему фронту?
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: CodeVision AVR в вопросах и ответах

Сообщение uk8amk »

Например использовать часовой генератор(TIM2) или Watchdog для пробуждения проца. В прерывании анализировать состояние компаратора и принимать решение о включении девайса.
См. в datasheet табличку Active Clock Domains and Wake-up Sources in the Different Sleep Modes. чтобы понять какую периферию можно задействовать для этого.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: CodeVision AVR в вопросах и ответах

Сообщение Gudd-Head »

Да. Видимо, либо внешняя схема, либо просыпаться по таймеру и проверять.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: CodeVision AVR в вопросах и ответах

Сообщение java »

Подскажите плиз, где скачать CV AVR и протеус, и какой протеус лучше установить, раньше был 7, и винда ХР, теперь новый комп с виндой7?
И если возможно, чтобы были на русском, а то китайский и пиндосский в школе прогуливал.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Re: CodeVision AVR в вопросах и ответах

Сообщение FreshMan »

Tell Me The Truth
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

Re: CodeVision AVR в вопросах и ответах

Сообщение java »

Спасибо!!! скачал. Установил, не запускается :(
Изображение
А что скажете по протеусу? Вроде где-то здесь на сайте можно было скачать?
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Ответить

Вернуться в «AVR»