Страница 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 и одну кнопку регулировать яркость светодиода. Помогите разжевать, как это в васком выразить?

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 я буду иметь то же самое что и в оригинальном устройстве?
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 и одну кнопку регулировать яркость светодиода. Помогите разжевать, как это в васком выразить? 
ШИМ работает так: при непрерывной подаче напряжения на светодиод на нем выделяется самая большая мощность и диод светится наиболее ярко; для ШИМ делается прерывание энергии с частотой не менее 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
Вот, из справочника М.Л. Кулиша.
И поищи еще в справке по слову 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