
BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Возвращаясь к своей эпопее про LCD 8x2, спешу сообщить, что я его таки победил. Правда пришлось использовать другой МК (помощнее), зато теперь все работает как надо! Ссылка на фото: http://xtrason.mylivepage.ru/images/%D0%A4%D0%BE%D1%82%D0%BE-0004_rot_1.jpg работающего девайса, кого заинтересует могу дать схему, прошивку, исходник.

Цапу крутить надо!!! Ку или не ку?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Igor_67 писал(а):Правда пришлось использовать другой МК (помощнее)
И что же, дело именно в "мощности" МК ? Да ну, ерунда какая. Как это применимо к индикатору? Где связь? 2313 вроде не отличается "наворотами", но и на нем все прекрасно работает.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Ну, начать надо, справедливости ради, с того, что МК в первоначальном варианте применялся не классический 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 и т.п.) или просимулировать все на более мощном компе, сразу все встает на место. Отсюда и были глюки с отображением в симуляторе.
Цапу крутить надо!!! Ку или не ку?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Без проблем пишу в версии 1.11.9.8 для Attiny2313A и Atmega8A (используя Attiny2313.dat и m8def.dat, соответственно). Пока все ровно (и с LCD в том числе). От новых версий отказался по указанной выше причине. У меня очень много проектов в версии 1.11.9.8, а при компиляции в версии 2 (даже без изменений кода) они просто перестают работать. Версия же 1.11.9.8 не давала ни единого повода в ней усомниться...
Что же касается симуляции то я иногда запускаю Proteus на компе с тактовой 400 МГц и ОЗУ 320 Мб.
Единственное что выдает, что симуляция идет не в реальном времени. Отображение же верное.
Что же касается симуляции то я иногда запускаю Proteus на компе с тактовой 400 МГц и ОЗУ 320 Мб.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Что я могу сказать? Значит мне на этот раз не повезло, по-крайней мере - не сразу!

Цапу крутить надо!!! Ку или не ку?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Я бы сразу на версию 2 подумал, но вроде и в старой изначально не работало ?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Да, не работало. Мне кажется из-за кварца на 11.0592МГц, а может из-за чего-то другого. Ноя все равно добью его и все-таки запущу на ATtiny2313A! 
Цапу крутить надо!!! Ку или не ку?
Re: BASCOM AVR в вопросах и ответах
Вобщем так, котятки, спешу вам сообщить, что Я САМЫЙ ТУПОЙ КОТ НА СВЕТЕ!!! Дело-то как оказалось было не в бобине, просто раздолбай сидел в кабине...
Мне, конечно, ужасно стыдно, но я тупанул конкретно... Оказывается я просто неправильно распаял проводники от МК до 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-индикаторами можно менять яркость последних, процент изменения яркости тоже отображается.
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 раз.
Цапу крутить надо!!! Ку или не ку?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Igor_67 писал(а):Оказывается я просто неправильно распаял проводники от МК до LCD.
В самом начале хотел про это написать. Но не стал, а то опять началось бы "обидеть хотите" и прочее.
Igor_67 писал(а):Поэтому, здесь можно поспорить с Михаилом
А со мной не нужно спорить, я просто говорю как у меня было.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
Re: BASCOM AVR в вопросах и ответах
Знающие, подскажите:
есть переменная word
необходимое её значение поделить на 250000 и отобразить на 7-сегментном индикаторе
отобразить - не проблема, но как делить в слове? ведь я получу значения после запятой
могу вместо word сделать переменную как single, поделить и всё сохранится верно
но как преобразовать её так, чтобы потом отобразить на 7-сегментных индикаторах?
ps
всё
вопрос закрыт
использовал внутренние особенности компиллятора:
переменная word = переменная single
в первой переменной получаю целое значение второй переменной
есть переменная word
необходимое её значение поделить на 250000 и отобразить на 7-сегментном индикаторе
отобразить - не проблема, но как делить в слове? ведь я получу значения после запятой
могу вместо word сделать переменную как single, поделить и всё сохранится верно
но как преобразовать её так, чтобы потом отобразить на 7-сегментных индикаторах?
ps
всё
вопрос закрыт
использовал внутренние особенности компиллятора:
переменная word = переменная single
в первой переменной получаю целое значение второй переменной
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Так можно -же делить не на 250000, а на 25, а запятую, на индикаторе, ставьте где Вам надо.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Re: BASCOM AVR в вопросах и ответах
Нужен рабочий пример-исходник взаимодействия с памятью AT24CXX.
Сделал всё по аналогии с м/с часов DS1307, но память через раз записывает данные... тоесть часто вместо фактических значений читается FF.
Сделал всё по аналогии с м/с часов DS1307, но память через раз записывает данные... тоесть часто вместо фактических значений читается FF.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Tom91 писал(а):Нужен рабочий пример-исходник взаимодействия с памятью AT24CXX.
Сделал всё по аналогии с м/с часов DS1307, но память через раз записывает данные... тоесть часто вместо фактических значений читается FF.
http://avrproject.ru/publ/kak_podkljuch ... 8/2-1-0-46 здесь обсуждалось
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Помогите пожалуйста с кодом.
каким образом мне мне сконфигурировать ШИМ и прировнять его к какому то значению "Х" в баскоме.
Например код:
$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 битным
каким образом мне мне сконфигурировать ШИМ и прировнять его к какому то значению "Х" в баскоме.
Например код:
$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 битным
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
vanyap1 писал(а):подозреваю что мой код нельзя применить.
Так а где в Вашем коде ШИМ-то? И намека нет...
vanyap1 писал(а):Сделать что то вроде - генерация ШИМ в основном цикле, а настройка значения Х и опрос кнопок по внешнему прерыванию.
Вы с задачей-то определитесь, либо запускаете таймер в режиме ШИМ (и закидываете значение яркости в регистр сравнения), либо делаете программный ШИМ... Только при чем тут основной цикл... Первый вариант прост до безобразия, второй удобен тем, что можно рулить любыми выводами МК.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Ок, кажись разобрался. Нашел пример -
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Timer0 = Pwm, Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Do
Incr Pwm0a 'плавно увеличиваем значение регистра OCR0A
Incr Pwm0b 'плавно увеличиваем значение регистра OCR0B
Waitms 20 'добавим задержку
Loop
End
Вот, так понял что Pwm0a и Pwm0b просто переменные и в них можно записать или приравнять значение из "Х"....
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Timer0 = Pwm, Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Do
Incr Pwm0a 'плавно увеличиваем значение регистра OCR0A
Incr Pwm0b 'плавно увеличиваем значение регистра OCR0B
Waitms 20 'добавим задержку
Loop
End
Вот, так понял что Pwm0a и Pwm0b просто переменные и в них можно записать или приравнять значение из "Х"....
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
vanyap1 писал(а):Вот, так понял что Pwm0a и Pwm0b просто переменные и в них можно записать или приравнять значение из "Х"....
Не переменные, а как раз регистры сравнения (OCR0A, OCR0B). Да, изменяя содержимое этих регистров можно регулировать яркость светодиода.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Lcd = 16 * 2
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
Config Timer0 = Pwm, Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Cursor Off
Cls
Do
If Plus = 1 Then
Waitms 50
X = X + 1
End If
If Minus = 1 Then
Waitms 50
X = X - 1
End If
Pwm0a = x
Locate 1 , 6
Lcd X
Loop
вот составил код. Так приравнивать возможно?
$crystal = 8000000
Config Lcd = 16 * 2
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
Config Timer0 = Pwm, Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Cursor Off
Cls
Do
If Plus = 1 Then
Waitms 50
X = X + 1
End If
If Minus = 1 Then
Waitms 50
X = X - 1
End If
Pwm0a = x
Locate 1 , 6
Lcd X
Loop
вот составил код. Так приравнивать возможно?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так приравнивать возможно?
Да, в регистр сравнения будет помещено значение переменной X. Опрос кнопок сделайте нормально, есть же для этого замечательная команда Debounce.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Спасибо большое )