Страница 49 из 304

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

Добавлено: Сб дек 18, 2010 23:58:51
Advent
Уважаемые гуру языка BASCOM AVR, мне очень нужно собрать фотореле с таймером на 5 часов, т.е после срабатывания реле свет должен гореть 5 часов а после отключиться и реле снова должно перейти в первоначальное состояние
Нашёл только программку на фотореле помогите пожайлуста добавить в неё таймер, я в программированиии полный 0 , могу только паять

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

Добавлено: Вс дек 19, 2010 08:19:22
aleksandr-zh
уважаемый, судя по схеме Вы не верно ставите нам задачу :)
если просто : пропал свет - включи на 5 часов реле, то это просто. и Мега для этого - слишком жирный МК, любой Tiny хватит с избытком!

а если по указанной схеме, то программа не самая простая будет! - тут и динамическая индикация, и компаратор\ацп...

это на халяву слишком круто... день надо только ПО отлаживать ;)

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

Добавлено: Вс дек 19, 2010 11:20:49
vladik-bob
Здравствуйте форумчане, помогите начинающему я пока что еще в школе учусь, поэтому может вопрос глупым покажется. Ни как не могу сообразить, как ШИМ работает. Хочу заставить тини2313 и одну кнопку регулировать яркость светодиода. Помогите разжевать, как это в васком выразить? :dont_know:

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

Добавлено: Вс дек 19, 2010 15:08:42
Advent
aleksandr-zh писал(а):уважаемый, судя по схеме Вы не верно ставите нам задачу :)
если просто : пропал свет - включи на 5 часов реле, то это просто. и Мега для этого - слишком жирный МК, любой Tiny хватит с избытком!

а если по указанной схеме, то программа не самая простая будет! - тут и динамическая индикация, и компаратор\ацп...

это на халяву слишком круто... день надо только ПО отлаживать ;)
Мне без разницы на чём собирать, может быть у вас есть подобная программка на Tiny ?

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

Добавлено: Вс дек 19, 2010 15:22:23
TRIOD
Народ а Bascom AVR под Windows7 64 с STK200&300 работает или нет.

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

Добавлено: Вс дек 19, 2010 17:07:07
aleksandr-zh
Advent писал(а):
aleksandr-zh писал(а):уважаемый, судя по схеме Вы не верно ставите нам задачу :)
если просто : пропал свет - включи на 5 часов реле, то это просто. и Мега для этого - слишком жирный МК, любой Tiny хватит с избытком!

а если по указанной схеме, то программа не самая простая будет! - тут и динамическая индикация, и компаратор\ацп...

это на халяву слишком круто... день надо только ПО отлаживать ;)
Мне без разницы на чём собирать, может быть у вас есть подобная программка на Tiny ?
а где задача? напишите
просто то, что вы написали ну ни как не вяжется с той сложной схемой, что на рисунке показано...

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

Добавлено: Вс дек 19, 2010 17:37:41
Advent
Алгоритм таков
Наступила ночь - лампочка загорелась и горит в течении 5 часов и отключается - устройство снова сработает когда пройдёт этот остаток ночи, наступит день и в ночь снова сработает на пять часов и т.д.

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

Добавлено: Вс дек 19, 2010 17:53:04
aleksandr-zh
хорошо, на неделе постараюсь заняться...
пока не могу понять, как работать с фото-резистором
укажите его сопротивление без освещения, при тусклом освещении и при естественном дневном освещении

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

Добавлено: Вс дек 19, 2010 19:00:44
Advent
aleksandr-zh без освещения - 15 МОм
при тусклом - 12 МОм
при дневном свете - 6 МОм


Если можно то напишите программу для Attiny13 они самые дешёвые ножек думаю хватит, можно без индикаторов, без регулировки времени, в программе зафиксировать 5 часов и всё :)
Огромно СПАСИБО буду ждать программку :))

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

Добавлено: Вс дек 19, 2010 19:59:43
aleksandr-zh
мда, надо будет мудрить с резисторами...
напомните мне о вашем задании во вторник на мой email
он указан на сайте, сайт - в подписи (см выше)

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

Добавлено: Вс дек 19, 2010 20:46:24
kip96
У меня подобная задача стояла, когда нужно было летний душ заправлять утром. Но резистор был от фотоаппарата, и разброс был 10Ком-100Ом(примерно). сначала думал через компаратор тиньки, а оказалось достаточно на Int0 делитель из резистора 1Ком и фоторезистора.
А с таким разбросом в МОм, без внешнего компаратора или хотя-бы эмит. повторителя- не обойтись, ибо от помех трудно будет уберечся.
Проще резистор куить:
Изображение

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

Добавлено: Вс дек 19, 2010 21:58:15
Kesha
Опять вопросы :) Теперь правда не по баскому а по самой 74HC595.
Вот снял скан с рабочего устройства:
74hc595_1.png
Скан с оригинального устройства
(2.62 КБ) 639 скачиваний
Не знаю на каком языке там написано и вообще как реализовано, не важно. Теперь делаю то же самое на баскоме с помощью Shiftout:
74hc595_2.png
Написанное на баскоме
(1.38 КБ) 594 скачивания
Правильно я понимаю что на выходе 74hc595 я буду иметь то же самое что и в оригинальном устройстве?

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

Добавлено: Пн дек 20, 2010 03:54:43
ВНН
В архиве 4и исходника для 74hc595
Удачи

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

Добавлено: Пн дек 20, 2010 09:13:06
Kesha
Спасибо, это тоже пригодится :)
А по своему вопросу разобрался, конечно что в первом случае, что во втором результат одинаков.

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

Добавлено: Пн дек 20, 2010 15:03:21
user2007
vladik-bob писал(а):Здравствуйте форумчане, помогите начинающему я пока что еще в школе учусь, поэтому может вопрос глупым покажется. Ни как не могу сообразить, как ШИМ работает. Хочу заставить тини2313 и одну кнопку регулировать яркость светодиода. Помогите разжевать, как это в васком выразить? :dont_know:

ШИМ работает так: при непрерывной подаче напряжения на светодиод на нем выделяется самая большая мощность и диод светится наиболее ярко; для ШИМ делается прерывание энергии с частотой не менее 50 Гц(чтобы глаз не замечал моргания светодиода).То есть на светодиод подаются импульсы прямоугольного напряжения с частотой не менее 50 Гц (периодом 20 миллисекунд).В течение этого времени напряжение на светодиод подается, например, в течение 5 миллисекунд, а в остальное время его нет.Через 20 миллисекунд процесс возобновляется ит.д.Регулируя время подачи энергии от 0 до 20 миллисекунд,мы регулируем кажущееся свечение от 0 до максимума, так как зрение усредняет световую энергию во времени.
Это и должна делать программа на BASCOM автоматически.Естественно, для этого нужно ее составить и записать в память МК.
Таким образом, нужно:
1)обозначить какой-либо вывод как ВЫХОД - к нему будет подключен светодиод;
2)обозначить какой-либо вход как ВХОД "Увеличить" - к нему будет подключена кнопка "УВ"для увеличения длительности импульса подачи энергии;
3)обозначить какой-либо вход как ВХОД "Уменьшить" - к нему будет подключена кнопка "УМ"для уменьшения длительности импульса подачи энергии.
Если кнопки не трогать, диод должен "гореть" с одной и той же яркостью.В принципе, можно записать во FLASH-памяти "величину яркости". :)

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

Добавлено: Пн дек 20, 2010 15:27:31
vladik-bob
Спасибо огромное, а можно исходничек какой-нибудь набросать так, поковырять да поразмыслить. :)

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

Добавлено: Пн дек 20, 2010 15:44:41
user2007
vladik-bob писал(а):Спасибо огромное, а можно исходничек какой-нибудь набросать так, поковырять да поразмыслить. :)

Пожалуйста.Надеюсь, Вам это поможет.Для схемы: 1)посадить входы D.0 и D.1 через резисторы
10 КОм на -5В(землю),2)2 кнопки соединить с +5В и этими входами, чтобы при нажатии кнопки
на вход подавалось +5В - лог.единица,3)к выходу В.0 подключить резистор 510 Ом,к нему
светодиод на землю -5В.Данную программу можно "прогнать" на симуляторе BASCOM-AVR.
$crystal = 8000000 'используем внутренний генератор на 8 МГц.
Const N = 40 ' 40 микросекунд

Dim A As Byte ' переменные - см.ниже, для чего
Dim A1 As Word
Dim N1 As Word

Config Pinb.0 = Output 'порт В.0 задаем как ВЫХОД
Config Portd = Input 'порт D задаем как ВХОД


A1 = 250 'при включении питания - среднее свечение:50% времени горит, 50%
'времени не горит

Inputcircle: 'вход в основной программный цикл
A = Pind 'считываем двоичный код на входах порта D,записываем в
переменную А

If A = 1 Then 'если нажата кнопка, подающая +5В на вход D.0, код равен 1, А=1
Incr A1 'увеличиваем переменную А1 на 1 каждые 20 мс , яркость растет(УВ)
If A1 => 500 Then 'ограничиваем величину А1 цифрой 500
A1 = 500 'общее число циклов - 500 по 40 микросекунд = 20 миллисекунд
End If
End If

If A1 => 1 Then 'если А1 больше или равно единице, то, если нажата кнопка, подающая +5В
' на вход D.1(УМ), яркость падает ,ограничим минимум величиной А=0
If A = 2 Then
Decr A1 'в этом случае A1 уменьшается на единицу каждые 20 мс,яркость падает
End If
End If
Set Portb.0 'порт В.0 устанавливаем в 1 - на светодиод подается напряжение, он горит
N1 = A1 'входим в подпрограмму цикла, N1 - (см.стр.48 данного форума, там я
Gosub Circle1 'расписал работу подпрограммы)время горения= 40хN1 микросекунд

Reset Portb.0 'порт В.0 устанавливаем в 0 - светодиод гаснет
N1 = 500 - A1 'входим в подпрограмму цикла, (см.стр.48 данного форума, там я
Gosub Circle1 'расписал работу подпрограммы), N1 задает количество циклов до 20
'миллисекунд - мы оговорили частоту импульсов 50 Гц, время 1 импульса
'20 мс,время гашения =40х(500-А1) микросекунд
Goto Inputcircle 'возврат в исходную точку и бесконечное повторение
Circle1: 'подпрограмма временной регулируемой задержки, см.стр.48 данного форума
While N1 > 0 'пока N1 больше нуля,вход в цикл
Waitus N 'задержка 40 микросекунд
Decr N1 'уменьшение N1 на единицу, общее время задержки - 40хN1 микросекунд
Wend
Return 'возврат в программу
Время основного цикла неизменно - 20 мс. :)

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

Добавлено: Вт дек 21, 2010 09:07:43
TRIOD
Доброе время суток.

Подскажите в bascome есть функция для инвертирования битов.

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

Добавлено: Вт дек 21, 2010 10:31:29
Kesha
Вот, из справочника М.Л. Кулиша.
NOT.png
(30.26 КБ) 630 скачиваний
И поищи еще в справке по слову toggle, вот оттуда:
TOGGLE can also be used on numeric variables. It will invert all bits in the variable. It has the same effect as NOT.

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

Добавлено: Вт дек 21, 2010 13:57:42
TRIOD
Подскажите что нетак.
вобщем только начал изучать мк.
Сделал пробную мегалку на светодиодах с регистрами 74HC595.
При нажатии на кнопку должна менятся прграмма мигания в определёной последовательности, но выбор идёт случайно. Где ошибка.

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

$regfile = "m8def.dat "
$crystal = 1000000


Ddrb = &B000111
Config Portd.3 = Input
Config Int0 = Low Level
Ds Alias Portb.0
Sh_cd Alias Portb.1
St_cp Alias Portb.2
Buton Alias Pind.3

On Int0 Butonp
Enable Interrupts
Enable Int0

Declare Sub 74hc595(byval Pin As Integer)


Dim Led As Integer
Dim Ifect As Byte
Led = Rnd(32767)
Ifect = 0

Do

Call 74hc595(led)
Rotate Led , Right , 1
Waitms 80

Loop

End

Sub 74hc595(byval Pin As Integer)                           'Процедура загрузки даных врегистр

Shiftout Ds , Sh_cd , Pin , 3 , 16
Set St_cp
Waitms 1
Reset St_cp

End Sub


Butonp:                                                     'Обработка нажатия кнопки
 Waitms 20
 While Buton = 1                                            'Ожидание отпускания кнопки
 Wend
 Ifect = Ifect + 1                                          'Выбр эфекта
 If Ifect = 4 Then Ifect = 0
Select Case Ifect
Case 0
Led = &B0111111111111111
Case 1
Led = &B1000000000000000
Case 2
Led = &B1010101010101010
Case 3
Led = &B0011001100110011
End Select
Gifr = 64
Waitms 1
Return