В протеусе заработало, скважность импульсов меняется.
Немного непонятны регистры
OCR1AH=0x00;
OCR1AL=0x00;- Это начальная скважность? И если у меня начинает загораться с 0, мне настраивать их не нужно?
Да счетчик вставлю в таймер индикации, спасибо за совет
Появилась еще одна проблема, скорее всего в железе, так что извините за оффтоп. При программной яркости 0, не гаснет полностью светодиод. После выхода с мк стоит ключ на кт815, (резистор смещения 300 Ом) со светодиодами включенными в коллектор и отдельным питанием 12 вольт(земля общая с питанием мк). На выходе 1 вольт, светят слабо но все равно напрягает. Частота ШИМ 2 кГц. Программная максимальная яркость соответствует 100%. Подскажите пожалуйста в чем проблема?
Проблемы нет. Про это сказано в даташите. При коде 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 и подобные.
Если не сложно ответить появилось еще несколько вопросов:
Учусь на готовых программах, и непонятно вот что:
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, но это наверное помехи так как провод от блока питания сильно длинный или нет?
Более менее разобрался.
1.Эквивалентное напряжение выше при 255. Проверял для Phase Correct PWM, не знаю имеетэто значение или нет. В примерах было 254 для Fast PWM.
2. Для DS18b20 нужен не цикл а запрет прерываний, она не терпит задержек, но у меня динамическая индикация запрещать прерывания не могу, но пока не было сбоев. DS1307 допускает паузы в опросе, значит не имеет разницы как ее опрашивать.
3. Предпочтительней работа с двоично десятичными числами, так как нет конвертации перед получением минут часов, только надо изменять и библиотеку для DS1307 и конвертировать установки времени.
есть 16ти разрядная переменная, ее надо сохранять в ds1307 и соответственно при включении контроллера читать из нее, чет не очень я представляю как это сделать. Ну всмысле как читать, писать в дску понятно, как склеивать два байта непонятно.
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 раз.
хотя, конечно, правильнее всего было бы определить зависимость ШИМ от АЦП соответствующей формулой, чтобы из значения АЦП сразу получать правильный ШИМ (если, конечно, дискретное изменение ШИМ не является важной целью).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Всем привет. Подскажите мне такой вопрос. Возможно ли вывести Мк из глубокого сна при помощи прерывание компаратора? Я так подозреваю что нет, тогда как поступить? Вообщем при пропадании основного напряжения подключается батарейка и проц. уходит в сон "powersave" при восстановлении сети - не пробуждается. Юзать внешнее прерывание по нарастающему фронту?
Например использовать часовой генератор(TIM2) или Watchdog для пробуждения проца. В прерывании анализировать состояние компаратора и принимать решение о включении девайса.
См. в datasheet табличку Active Clock Domains and Wake-up Sources in the Different Sleep Modes. чтобы понять какую периферию можно задействовать для этого.
Подскажите плиз, где скачать CV AVR и протеус, и какой протеус лучше установить, раньше был 7, и винда ХР, теперь новый комп с виндой7?
И если возможно, чтобы были на русском, а то китайский и пиндосский в школе прогуливал.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка