BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Код Ваш, я и не скрываю, я написал откуда его взял.
Как добавить паузу не понял. Она ведь будет мешать фазовому управлению. Если можно - поподробнее.
И почему забыть про протеус? Вроде один из самых нормальных эмуляторов...
Как добавить паузу не понял. Она ведь будет мешать фазовому управлению. Если можно - поподробнее.
И почему забыть про протеус? Вроде один из самых нормальных эмуляторов...
-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
Re: BASCOM AVR в вопросах и ответах
фазовое управление выполняется таймером по получению сигнала с датчика перехода тока через ноль
для теста сделайте в цикле увеличение переменной яркости от 8 до 0 с паузой в 4-5 сек, потом обратно и посмотрите
код дать не могу - надо ставить bascom и проверять...
для теста сделайте в цикле увеличение переменной яркости от 8 до 0 с паузой в 4-5 сек, потом обратно и посмотрите
код дать не могу - надо ставить bascom и проверять...
Re: BASCOM AVR в вопросах и ответах
Сделал вот так. На выходе постоянно 0, на кнопки не реагирует. Что не так?
И еще: таймер1 сконфигурирован с учетом частоты МК 8МГц, как изменить его параметры для частоты 4МГц(Вопрос глупый, но в таймерах не силен)
И еще: таймер1 сконфигурирован с учетом частоты МК 8МГц, как изменить его параметры для частоты 4МГц(Вопрос глупый, но в таймерах не силен)
Код: Выделить всё
If Switch1 = 0 Then
If Level < 8 Then
Incr Level
End If
Waitms 500
End If
If Switch2 = 0 Then
If Level > 0 Then
Decr Level
Else
Level = 0
End If
Waitms 500
End If-
aleksandr-zh
- Сверлит текстолит когтями
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
Re: BASCOM AVR в вопросах и ответах
таймер тут: http://ugolok-mastera.ru/sborka.htm
в самом низу страницы есть программа, качаете, задаёте частоту работы МК, предделитель и смотрите что получилось в регистрах
а ноги кнопок подтянуты к плюсу питания? или встроенными резисторами, или внешними- от 4 до 100 ком
в самом низу страницы есть программа, качаете, задаёте частоту работы МК, предделитель и смотрите что получилось в регистрах
а ноги кнопок подтянуты к плюсу питания? или встроенными резисторами, или внешними- от 4 до 100 ком
Re: BASCOM AVR в вопросах и ответах
Кнопки подтянуты внутренним резистором
За программу спасибо, но честно говоря мне не совсем понятно как ей пользоваться:
1)Нужно ввести время. Как узнать на сколько сейчас выставлено время в программе(с текущими параметрами таймера и частотой 8 МГц)?
2)Программа дает результат в виде регистров. Как их вводить в bascom?
Извините если вопросы глупые, но в гугле ответы на них найти не смог.
Код: Выделить всё
Portb.0 = 1 ' включим внутренний подтягивающий резистор для ZC
Portb.5 = 1 ' включим внутренний подтягивающий резистор для кнопки 3
Portc.3 = 1 ' включим внутренний подтягивающий резистор для кнопки 2
Portc.2 = 1 ' включим внутренний подтягивающий резистор для кнопки 1
За программу спасибо, но честно говоря мне не совсем понятно как ей пользоваться:
1)Нужно ввести время. Как узнать на сколько сейчас выставлено время в программе(с текущими параметрами таймера и частотой 8 МГц)?
2)Программа дает результат в виде регистров. Как их вводить в bascom?
Извините если вопросы глупые, но в гугле ответы на них найти не смог.
Re: BASCOM AVR в вопросах и ответах
На один свой вопрос я нашел ответ. Макс. период таймера считается по формуле T=(2^N)*(Prescale/Частота) N = 8 для Т0 и N = 16 для Т1. У меня вышло число 65536.
Как получить такой же результат с частотой 4 МГц?
Решил пересчитать значения Dimmer_delay_w для периода 131072. Вот что вышло. Все равно ничего не работает, на выходе 0.
Конечно поставил Dim Dimmer_delay_w As Long и частоту 4МГц фьзами. В чем ошибка,
Как получить такой же результат с частотой 4 МГц?
Решил пересчитать значения Dimmer_delay_w для периода 131072. Вот что вышло. Все равно ничего не работает, на выходе 0.
Код: Выделить всё
If Level = 1 Then Dimmer_delay_w = 123400 ' Тускло горит - 25v
If Level = 2 Then Dimmer_delay_w = 123800 ' 51v
If Level = 3 Then Dimmer_delay_w = 124200 ' 78v
If Level = 4 Then Dimmer_delay_w = 124600 ' 85v
If Level = 5 Then Dimmer_delay_w = 125000 ' 149v
If Level = 6 Then Dimmer_delay_w = 125400 ' 175v
If Level = 7 Then Dimmer_delay_w = 125800 ' 189vКонечно поставил Dim Dimmer_delay_w As Long и частоту 4МГц фьзами. В чем ошибка,
-
Shershnyov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Чт фев 07, 2013 10:46:46
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Подскажите Что я не так написал в коде что моя задержка не работает. Микроконтроллер уже tiny85 ( памяти хватает
)
Повторюсь.
Ультразвуковое реле на HC — SR04
Устройство работает по принципу - появилось препятствие реле замкнулось, и после выхода препятствия из зоны датчика, реле определенное время еще замкнуто. Необходимо реализовать задержку перед включением реле. То есть препятствие появилось прошло определенное время, реле замкнулось, препятствие вышло из зоны датчика, реле определенное время еще замкнуто. В коде реализована функция настройки ( что бы выставить расстояние срабатывания ). Я пробовал добавить еще одну конструкцию которая реализовывала б задержку, но почему то не работает(вероятнее что то упустил или не так написал, проверьте пжлст. Спасибо!
Повторюсь.
Ультразвуковое реле на HC — SR04
Устройство работает по принципу - появилось препятствие реле замкнулось, и после выхода препятствия из зоны датчика, реле определенное время еще замкнуто. Необходимо реализовать задержку перед включением реле. То есть препятствие появилось прошло определенное время, реле замкнулось, препятствие вышло из зоны датчика, реле определенное время еще замкнуто. В коде реализована функция настройки ( что бы выставить расстояние срабатывания ). Я пробовал добавить еще одну конструкцию которая реализовывала б задержку, но почему то не работает(вероятнее что то упустил или не так написал, проверьте пжлст. Спасибо!
Код: Выделить всё
$regfile = "attiny85.dat"
$crystal = 9600000
$hwstack = 0 ' default use 32 for the hardware stack
$swstack = 0 ' default use 10 for the SW stack
$framesize = 0
Config Portb.3 = Output 'выход для подключения ноги Trigger
Trigger Alias Portb.3
Trigger = 0
Config Portb.4 = Input 'вход для импульса Echo
Config Portb.0 = Output 'конфигурация для подключения светодиода
Led Alias Portb.0
Led = 0
Config Portb.1 = Output 'output control pin
Control Alias Portb.1
Control = 0
Config Portb.2 = Input 'вход для button
Dim A As Word , A2 As Word 'сюда копируется значение длины сигнала
Dim M As Word , Em As Eram Word
Dim I As Byte , T As Word , Tled As Byte
Const Toff = 50 '250=1min '500 'TIME to OFF
Const Tmax = 50000
Const Ton = 50
Enable Interrupts 'enable global ints
Enable Pcint0 'we enable pcint0 as this has pcint0-pcint7
On Pcint0 Btn 'we jump to this label when one of the pins is changed
Pcmsk = &B00000100 'enable pcint2 (portb.2)
Config Watchdog = 1024 '8192 '2048
M = Em : T = Tmax : Tled = 0 : Control = 0 : Led = 0
Start Watchdog
Do
Reset Watchdog
Gosub Test
A2 = A
Waitms 100
Reset Watchdog
Gosub Test
Waitms 100
If A < M And A2 < M And A > 0 And A2 > 0 Then
T = 0 ': Led = 1
Else
Incr T ' : Led = 0
If T > Tmax Then T = Tmax
End If
If T > Ton Then
Control = 0
Else
Control = 1
End If
If T < Toff Then
Control = 1
Else
Control = 0
End If
If T > 50 Then
If Tled < 9 Then : Led = 1 : Else : Led = 0 : End If ' on
Else
If T < Toff Then
If Tled < 5 Then : Led = 1 : Else : Led = 0 : End If ' last minute
Else
If Tled < 1 Then : Led = 1 : Else : Led = 0 : End If ' off
End If
End If
Incr Tled : If Tled > 10 Then Tled = 0
Loop
End
'----------
Btn:
For I = 1 To 50
Toggle Led : Waitms 200 : Reset Watchdog
Next
Gosub Test
'Gifr = 0
M = A : Shift M , Right , 3 : M = A -m : Em = M : T = Tmax
'Tled = 0 : Control = 0
Set Led ': Waitms 2000 : Reset Led : Waitms 1000
Do : Loop
Return
'----------
Test:
Trigger = 1 'даем импульс на ногу Portd.4 длительностью 15 мкс
Waitus 15
Trigger = 0
Waitus 10
Pulsein A , Pinb , 4 , 1 'ловим импульс высокого уровня
Return-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
кто-нибудь работал в баском с RF-модулями? если можно, скиньте исходник с комментариями
ужасно хочется разобраться
ужасно хочется разобраться

- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
koteika писал(а):кто-нибудь работал в баском с RF-модулями?
С такими? http://avrproject.ru/publ/vstraivaemyj_ ... /1-1-0-147
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
да с подобными, спасибо. очень интересный ресурс и как я его пропустил? 

-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
есть такой код
все это происходит в главном цикле, и когда Out_1 = 0 на экране пишется 100 раз Включены1Включены1 Включены1 Включены1 итд.
как написать код что б писало только 1 раз по изменению состояний?
Т.е Текст Включены был всегда, а цифры ставил соответствующие?
Код: Выделить всё
If Out_1 = 0 Then
Lcd "Включены" ; "1"
If Out_2 = 0 Then Lcd "2"
If Out_3 = 0 Then Lcd "3"
If Out_4 = 0 Then Lcd "4"
End Ifвсе это происходит в главном цикле, и когда Out_1 = 0 на экране пишется 100 раз Включены1Включены1 Включены1 Включены1 итд.
как написать код что б писало только 1 раз по изменению состояний?
Т.е Текст Включены был всегда, а цифры ставил соответствующие?
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
If Out_1 = 0 Then a=1
If Out_2 = 0 Then a=2
If Out_3 = 0 Then a=3
If Out_4 = 0 Then a=4
if a<>b then
locate 1,1
Lcd "Включены"
lcd a
b=a
End If
,то есть информация сменится когда сменится вкл канал,а и в-переменные BYTE
If Out_2 = 0 Then a=2
If Out_3 = 0 Then a=3
If Out_4 = 0 Then a=4
if a<>b then
locate 1,1
Lcd "Включены"
lcd a
b=a
End If
,то есть информация сменится когда сменится вкл канал,а и в-переменные BYTE
-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
спасибо, все работает. Не мог бы ты только объяснить что тут делает переменная B какая у нее цель и предназначение и почему она <>?
Re: BASCOM AVR в вопросах и ответах
В переменной "b" сидит предыдущее значение "а". При смене "а" оно становится не равно "b", что и вызывает смену индикации. После этого они выравниваются и все повторяется.
-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Понял, спасибо. Еще есть 2 вопроса-
1. можно ли как то одной командой (ну или двумя)сбросить мк, и заставить его выполнят код сначала?
2. и как перейти в коде допустим
что надо написать внутри главного цикла что бы выйти из него и перейти ДО цикла допустим до строчки Led = 1? и реально ли это вообще?
1. можно ли как то одной командой (ну или двумя)сбросить мк, и заставить его выполнят код сначала?
2. и как перейти в коде допустим
Код: Выделить всё
Config Portd.7 = Output
Led Alias Portd.7
Led = 1
Led = 0
Wait 1
Led = 1
Do
Led = 0
Waitms 100
Led = 1
Waitms 100
Led = 0
Waitms 100
Led = 1
Waitms 100
Loop
End
что надо написать внутри главного цикла что бы выйти из него и перейти ДО цикла допустим до строчки Led = 1? и реально ли это вообще?
Re: BASCOM AVR в вопросах и ответах
Конечно реально. Ставишь метку и по команде безусловного перехода Goto переходишь куда хочешь и когда хочешь.
-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
ну как реализовать то подскажите? я не знаю как это сделать, по этому и написал о помощи. пробовал так не работает
Код: Выделить всё
start2:
Locate 1 , 4
Lcd "Привет!!!"
Lowerline
Locate 2 , 3
Lcd "Друг"
do
if pinb.0 = 0 then goto start2
loop
end
Re: BASCOM AVR в вопросах и ответах
Пардону просим. Не обратил внимание, что нужно перейти до основного текста.
Тогда кусок, который нужно выполнить оформляется как подпрограмма. Она и выполняется как при первом старте, так и вызывается в любое время. Например:
Goto start2
do
if pinb.0 = 0 then goto start2
loop
end
start2:
Locate 1 , 4
Lcd "Привет!!!"
Lowerline
Locate 2 , 3
Lcd "Друг"
return
Тогда кусок, который нужно выполнить оформляется как подпрограмма. Она и выполняется как при первом старте, так и вызывается в любое время. Например:
Goto start2
do
if pinb.0 = 0 then goto start2
loop
end
start2:
Locate 1 , 4
Lcd "Привет!!!"
Lowerline
Locate 2 , 3
Lcd "Друг"
return
Re: BASCOM AVR в вопросах и ответах
Коты! Я впал в панику.
Код:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.0 = Output
Do
Portb.0 = 0
Waitms 750
Portb.0 = 1
Waitms 250
Loop
End
Он же на С
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0x01;
while (1)
{
PORTB.0=0;
delay_ms(750);
PORTB.0=1;
delay_ms(250);
}
}
Собранный хекс на С работает, а на баскоме - нет.
Есть разумное объяснение? Или глюк баскома?
Код:
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.0 = Output
Do
Portb.0 = 0
Waitms 750
Portb.0 = 1
Waitms 250
Loop
End
Он же на С
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0x01;
while (1)
{
PORTB.0=0;
delay_ms(750);
PORTB.0=1;
delay_ms(250);
}
}
Собранный хекс на С работает, а на баскоме - нет.
Есть разумное объяснение? Или глюк баскома?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Скомпилировал, проверил в железе - все мигает. Иначе оно и быть не могло. Получившийся хекс прикладываю.
- Вложения
-
- led_blink.hex
- (488 байт) 474 скачивания
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон