У меня вопрос по дисплеям нокиа 3310 и 5110-может кто решил Как рисовать линии?бывает ли такая библиотека?или лучше создавать буфер на 504 ячейки,складывать рисунок туда и потом все передавать в жки как картинку?
вопрос по I2C Одно устройство подключено по I2C к одним портам(Config Scl = Portc.5,Config Sda = Portc.4),второе к другим(Config Scl = Portc.0,Config Sda = Portc.1),как переназначать программно порты?
Удалось решить этот вопрос? Если нет, вот пример с сайта Баскома, случайно нашел. Спойлер
Код:
'name : I2C-multibus.bas 'copyright : (c) 1995-2016, MCS Electronics 'purpose : demonstrates I2C multibus library 'micro : Mega88 'suited for demo : no, lib not included in demo 'commercial addon needed : no '---------- $regfile = "m88def.dat" $crystal = 8000000 $hwstack = 32 $swstack = 24 $framesize = 24
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Накидайте пожалуйста простую программу. Аттини 2313. Пусть на порт PB3 будет повешена кнопка, а на порт PB2 светодиод. кнопка подтянута на плюс внешним резистором 10Ком. Надо чтобы светодиод вспыхивал каждое 3-е нажатие кнопки например на 100милисекунд. то есть жмём кнопку 1-2-3 (вспышка) 4-5-6 (вспышка) 7-8-9 (вспышка) Да, антидребезг нужен.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
4-й день бьюсь. Уже надоело. Без антидребезга у меня то на 2-е, то на 4-е нажатие срабатывает. А как всё это написать через прерывания я не осиляю. Готового примера в сети тоже не нашёл.
Спасибо за помощь. Получилось следующее. Всё работает в протеусе, но почему то моргает не 0,1 Сек а где-то 1-1,5Сек, как будто код выполняется очень медленно или это просто глюк протеуса? И ещё вопрос почему при объявлении переменной для Аттини 13 протеус выдаёт ошибку, а для 2313 всё нормально. Не ужели не хватает памяти ? использую протеус версии 8,6 sp2
$regfile = "attiny2313.dat" $crystal = 8000000 Config Portb.3 = Input 'настройка пина b3 на вход(S1) Config Portb.2 = Output 'настройка пина b2 на выход(LED1) Dim N As Byte ' Объявляем переменную N как байт Do 'начало цикла If Pinb.3 = 0 Then 'опрос кнопки и присвоение переменной N соответствующего значения Waitms 10 ' задержка антидребезга Bitwait Pinb.3 , Set 'ждём отпускания кнопки N = N + 1 'с каждым нажатием увеличиваем N на 1 End If If N = 3 Then Portb.2 = 1 Else Portb.2 = 0 ' 0 /@ If N = 3 Then waitms 100 ' Если светит, ждём 0,1С (моргаем) If N = 3 Then N = 0 'N равен 3, то обнуляем Loop 'конец цикла
Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт июн 01, 2018 19:18:11
Первый раз сказал Мяу!
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Вс май 15, 2016 19:02:01 Сообщений: 28 Откуда: Украина
Рейтинг сообщения:0
Немного причешу ваш код
Код:
$regfile = "attiny2313.dat" $crystal = 8000000 Config Pinb.3 = Input 'настройка пина b3 на вход(S1) Config Portb.2 = Output 'настройка пина b2 на выход(LED1) Dim N As Byte ' Объявляем переменную N как байт Config Debounce = 150 ' антидребезг Reset Portb.2 N = 0 Do If Pinb.3 = 0 Then Bitwait Pinb.3 , Set Incr N If N = 3 Then Set Portb.2 Waitms 100 Reset Portb.2 N = 0 End If End If Loop 'конец цикла End
Чтобы в Протеусе показывало правильно уберите галочку с фьюза CKDIV8.
Не могу понять в чем дело-по прерыванию INT0 аттини2313а не просыпается,может еще чего не хватает? Спойлер$Regfile = "attiny2313a.dat" $Crystal = 4000000 Config PORTB.2 = Output Config Int0 = Low Level On Int0 Button: Enable Interrupts Enable Int0 Do Set PORTB.2 Wait 1 Reset PORTB.2 Powerdown Loop Button: 'Gifr = 64 'Wait 1 Return End
У меня работает Ваш код. Спойлер$Regfile = "attiny2313a.dat" $crystal = 4000000 Config PORTB.2 = Output Config Int0 = Low Level Set Portd.2 On Int0 Button Enable Interrupts Enable Int0 Do Set PORTB.2 Wait 1 Reset PORTB.2 Powerdown Loop Button: 'Gifr = 64 'Wait 1 Return End Убрал двоеточие после "On Int0 Button" (не влияет ни на что) и добавил "Set Portd.2", чтобы не паять резистор к плюсу.
Do 1wreset If Err = 1 Then Cls Lcd "Err" Do Loop Else 1wwrite &HCC 1wwrite &H44 Waitms 750 1wreset 1wwrite &HCC 1wwrite &HBE A = 1wread() B = 1wread() If A > 248 Then A = &HFF - A B = &HFF - B E = 2 Else E = 1 End If C = A / 16 D = B * 16 C = C + D If E = 2 Then C = C + 1 If E = 1 And C = 0 Then E = 0 Cls Lcd "V O D A= " If E = 0 Then Lcd " " ; C ; "'" ; "C" If E = 1 Then Lcd "+" ; C ; "'" ; "C" If E = 2 Then Lcd "-" ; C ; "'" ; "C" End If
If C <= 27 Then ' разМЫКАЕТ 2 И 3 контакт сверху реле . зеленый диод на реле ГОРИТ. это для ВыкЛЮЧЕНИЯ вентиляторов.
Reset Out_1 Locate 2 , 1 Lcd "C O O L E R O F F" End If
If C > 27 Then ' в ином случае Замыкает 2 и 3 контакт сверху реле . зеленый диод на реле НЕ горит. это для ВКЛЮЧЕНИЯ вентиляторов. Set Out_1 Locate 2 , 1 Lcd "C O O L E R O N"
End If
код работает так. при T более 27 градусов реле включает нагрузку- вентиляторы. соответственно менее 27 реле не включается. НО при таком коде считывается данные термодатчика каждую секунду, из за чего постоянно включается \выключается реле. подскажите как изменить код так, что бы работало след образом - 1. измерял температуру не каждую секунду, а раз в 10 минут. 2. прошло 10 минут - измерил, если более 27 включил реле, снизил до 27 и выключился. помогите пожалуйста!
Так не получится. Измерение раз в 10 минут. За это время температура может снизиться и до 20 градусов и ниже. Отсчет времени лучше всего делать по прерыванию таймера. Берете переменную, в обработчике прерывания таймера инкременируете ее. Когда она достигает определенного значения, меряете температуру, переменную сбрасываете в ноль. Включаете вентилятор. Но вентилятор будет крутить до следующего измерения.
Так, видимо, и не планировалось оттуда выбираться. Если датчика нет, то усё, приехали.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения