Возвращаясь к своей эпопее про LCD 8x2, спешу сообщить, что я его таки победил. Правда пришлось использовать другой МК (помощнее), зато теперь все работает как надо! Ссылка на фото: http://xtrason.mylivepage.ru/images/%D0 ... _rot_1.jpg работающего девайса, кого заинтересует могу дать схему, прошивку, исходник.
Igor_67 писал(а):Правда пришлось использовать другой МК (помощнее)
И что же, дело именно в "мощности" МК ? Да ну, ерунда какая. Как это применимо к индикатору? Где связь? 2313 вроде не отличается "наворотами", но и на нем все прекрасно работает.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ну, начать надо, справедливости ради, с того, что МК в первоначальном варианте применялся не классический ATtiny2313-20PI, а усовершенствованный ATtiny2313A-PU. Думаю, в этом как раз все дело, потому как даже файлы описания МК в Bascom 2.0.5.0 разные для этих МК, а в Bascom 1.11.9.8 - файл только один - "Attiny2313.dat". Мне кажется, что как раз при переходе с одной версии на другую и произошла путаница. Надо будет потом написать программу с нуля в Bascom 2.0.5.0 и проверить, что же будет?! Далее: заметил еще один нюанс. При "неровных" частотах кварца, например 11.0592MHz или 3.6864MHz и других подобных, при недостаточно мощном компе, симуляция в Proteus может показывать погоду в унитазе. Стоит сменить частоту кварца на "ровную" (4MHz, 8MHz и т.п.) или просимулировать все на более мощном компе, сразу все встает на место. Отсюда и были глюки с отображением в симуляторе.
Без проблем пишу в версии 1.11.9.8 для Attiny2313A и Atmega8A (используя Attiny2313.dat и m8def.dat, соответственно). Пока все ровно (и с LCD в том числе). От новых версий отказался по указанной выше причине. У меня очень много проектов в версии 1.11.9.8, а при компиляции в версии 2 (даже без изменений кода) они просто перестают работать. Версия же 1.11.9.8 не давала ни единого повода в ней усомниться...
Что же касается симуляции то я иногда запускаю Proteus на компе с тактовой 400 МГц и ОЗУ 320 Мб. Единственное что выдает, что симуляция идет не в реальном времени. Отображение же верное.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Вобщем так, котятки, спешу вам сообщить, что Я САМЫЙ ТУПОЙ КОТ НА СВЕТЕ!!! Дело-то как оказалось было не в бобине, просто раздолбай сидел в кабине... Мне, конечно, ужасно стыдно, но я тупанул конкретно... Оказывается я просто неправильно распаял проводники от МК до LCD. В этом-то все дело и было. Вот и не заводилось ничего. Все переделал, теперь мой термостат работает на ATtiny2313A и LCD WH0802A, да еще и результат измерения передает по USART каждые 10 измерений. Вот оно как!
P.S. Да, к слову, про версию 2.0.5.0 хочу сказать, что код там получается компактнее. Не сильно правда (процентов на 10), но все же приятно. Кстати, программа для термостата писалась на ней родимой, да к тому же с миграцией проекта из версии 1.11.9.8. Поэтому, здесь можно поспорить с Михаилом (edm2007) по поводу того, что программы, написанные в версии 1.11.9.8 не работают на версии 2.0.5.0...
Кстати, посмотреть разные версии термостатов можно здесь: http://img10.tempfile.ru/10305/1636baec ... 673b30.jpg и здесь: http://img6.tempfile.ru/10305/17dd717c9 ... 870032.jpg
Верхний индикатор (1 строка на LCD) отображает установленную (заданную) температуру, нижний индикатор (2 строка на LCD) отображает измеренную температуру. Естественно, заданную температуру можно менять , также в версии с LED-индикаторами можно менять яркость последних, процент изменения яркости тоже отображается.
Последний раз редактировалось Igor_67 Ср ноя 02, 2011 16:11:18, всего редактировалось 1 раз.
Знающие, подскажите:
есть переменная word
необходимое её значение поделить на 250000 и отобразить на 7-сегментном индикаторе
отобразить - не проблема, но как делить в слове? ведь я получу значения после запятой
могу вместо word сделать переменную как single, поделить и всё сохранится верно
но как преобразовать её так, чтобы потом отобразить на 7-сегментных индикаторах?
ps
всё
вопрос закрыт
использовал внутренние особенности компиллятора:
переменная word = переменная single
в первой переменной получаю целое значение второй переменной
Нужен рабочий пример-исходник взаимодействия с памятью AT24CXX.
Сделал всё по аналогии с м/с часов DS1307, но память через раз записывает данные... тоесть часто вместо фактических значений читается FF.
Tom91 писал(а):Нужен рабочий пример-исходник взаимодействия с памятью AT24CXX.
Сделал всё по аналогии с м/с часов DS1307, но память через раз записывает данные... тоесть часто вместо фактических значений читается FF.
Помогите пожалуйста с кодом.
каким образом мне мне сконфигурировать ШИМ и прировнять его к какому то значению "Х" в баскоме.
Например код:
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Lcd = 16 * 2 ' äèñïëåé 2 ñòðîêè ïî 16 ñèìâîëîâ
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
Config Portd.6 = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Plus Alias Pinb.0
Minus Alias Pinb.1
Dim X As Byte
X = 0
Cursor Off
Cls
Do
If Plus = 1 Then 'îïðîñ êíîïîê
Waitms 50 'ïîäàâëåíèå äðåáåçãà êîíòàêòîâ
X = X + 1 'Åñëè êíîïêà íàæàòà, ïðèáàëÿåì 1 ê Õ
End If 'êîíö óñëîâèÿ
If Minus = 1 Then 'îïðîñ êíîïîê
Waitms 50 ' ïîäàâëåíèå äðåáåçãà
X = X - 1 '
End If '
Locate 1 , 6
Lcd X 'âûâîä íà æê
Loop
End
Например есть светодиод, яркость которого нужно регулировать с шагом 255 т .е переменная byte больше и не поместит.
подозреваю что мой код нельзя применить.
Сделать что то вроде - генерация ШИМ в основном цикле, а настройка значения Х и опрос кнопок по внешнему прерыванию. Про нелинейность светодиода в курсе. Просто не нашел ничего внятно по ШИМу.
ШИМ Скорее всего должен быть 8 битным
vanyap1 писал(а):подозреваю что мой код нельзя применить.
Так а где в Вашем коде ШИМ-то? И намека нет...
vanyap1 писал(а):Сделать что то вроде - генерация ШИМ в основном цикле, а настройка значения Х и опрос кнопок по внешнему прерыванию.
Вы с задачей-то определитесь, либо запускаете таймер в режиме ШИМ (и закидываете значение яркости в регистр сравнения), либо делаете программный ШИМ... Только при чем тут основной цикл... Первый вариант прост до безобразия, второй удобен тем, что можно рулить любыми выводами МК.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон