BASCOM AVR в вопросах и ответах
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Здравствуйте!
Известно что а атмега64 есть два порта рс232.
Так собственно вопрос - как отправить во второй информацию, если <print var> запишет в первый порт.
Известно что а атмега64 есть два порта рс232.
Так собственно вопрос - как отправить во второй информацию, если <print var> запишет в первый порт.
- Moto_v3x
- Потрогал лапой паяльник
- Сообщения: 307
- Зарегистрирован: Ср мар 31, 2010 11:45:58
- Откуда: Славянск
Re: BASCOM AVR в вопросах и ответах
PRINT [#channel , ] var ; " constant"
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Понял, спасибо.
Re: BASCOM AVR в вопросах и ответах
Здравствуйте.
Подскажите, как в BASCOM сделать прерывание по совпадению от таймера 0 для ATMega8535.
http://www.edm2007.narod.ru/startavr7.html Приведенный здесь пример у меня не работает.
Подскажите, как в BASCOM сделать прерывание по совпадению от таймера 0 для ATMega8535.
http://www.edm2007.narod.ru/startavr7.html Приведенный здесь пример у меня не работает.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Здравствуйте.
Да все прекрасно работает. Просто нужно хоть немного заглядывать в даташит, дабы посмотреть какие регистры имеются именно у этого МК, и как они называются.
----------
Ocr0 = 10:

Ocr0 = 70:

Ocr0 = 220:

Да все прекрасно работает. Просто нужно хоть немного заглядывать в даташит, дабы посмотреть какие регистры имеются именно у этого МК, и как они называются.
Код: Выделить всё
$regfile = "m8535.dat" ' тип МК
$crystal = 4000000 ' тактовая частота
Config Portb.1 = Output ' конфигурация пина порта
Config Timer0 = Timer , Prescale = 64 , Clear Timer = 0 ' и таймера
On Oc0 Tim0compare ' метки на обработчики
On Ovf0 Tim0overflow
Enable Interrupts ' разрешаем работу прерываний
Enable Oc0
Enable Ovf0
Ocr0 = 70 ' запись в регистр сравнения
'----------
Do ' пустой цикл
Loop
'----------
Tim0compare: ' обработка прерывания по совпадению
Set Portb.1
Return
'----------
Tim0overflow: ' обработка прерывания по переполнению
Reset Portb.1
Return
----------
Ocr0 = 10:
Ocr0 = 70:
Ocr0 = 220:
- Вложения
-
- Timer8535_verzg220.gif
- (40.41 КБ) 1446 скачиваний
-
- Timer8535_verzg70.gif
- (39.74 КБ) 1470 скачиваний
-
- Timer8535_verzg10.gif
- (39.6 КБ) 1546 скачиваний
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
edm2007 Благодарю.
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Снова всем привет) Хочу вновь задать глупый вопрос
Мне нужно наладить связь между двумя разными МК. Attiny2313 и atmega16.
Оба контроллера работают с тактовой частотой 8мгц от встроенного генератора без делителя...
Нужно чтоб оба контроллера по одному порту "слушали" друг друга и передавали команды когда это необходимо друг другу. Посоветуйте что лучше передавать и как.
Я вот думал байт передавать,только надо скорость пониже чтоб ошибок не было. 800 герц хотя бы думаю скорость будет норм. Можно для приема и передачи наверное применять разные порты и "слить" их в одну линию при помощи транзисторов.
Что посоветуете друзья???

Мне нужно наладить связь между двумя разными МК. Attiny2313 и atmega16.
Оба контроллера работают с тактовой частотой 8мгц от встроенного генератора без делителя...
Нужно чтоб оба контроллера по одному порту "слушали" друг друга и передавали команды когда это необходимо друг другу. Посоветуйте что лучше передавать и как.
Я вот думал байт передавать,только надо скорость пониже чтоб ошибок не было. 800 герц хотя бы думаю скорость будет норм. Можно для приема и передачи наверное применять разные порты и "слить" их в одну линию при помощи транзисторов.
Что посоветуете друзья???
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
А rs232 чем неугодил?
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Можно конечно и его. Но как наладить связь между контроллерами? Надо в обе стороны данные передавать и принимать. В одну линию (провод) этот интерфейс не впилишь по моему. Надо организовать реакцию контроллера на приходящие команды, я понятия не имею какие команды имеет этот протокол связи и будет ли он у меня работать на длинной линии...
-
maloicds
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Вт янв 24, 2012 16:43:03
- Откуда: Москва
Re: BASCOM AVR в вопросах и ответах
Всем привет. Помогите с простым кодом.
Смысл простой: при нажатии кнопки светодиод мигает раз в секунду. Проблема в том, что при отпускании кнопки в момент свечения светодиода, светодиод продолжает гореть. Пробовал вынести мигание светодиода в процедуру - тоже самое. В Proteus'е тоже самое.
Код: Выделить всё
$regfile = "attiny13.dat"
$crystal = 8000000
Led Alias Pinb.0
But Alias Pinb.1
Config Led = Output
Config But = Input
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
End If
Loop
EndСмысл простой: при нажатии кнопки светодиод мигает раз в секунду. Проблема в том, что при отпускании кнопки в момент свечения светодиода, светодиод продолжает гореть. Пробовал вынести мигание светодиода в процедуру - тоже самое. В Proteus'е тоже самое.
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: BASCOM AVR в вопросах и ответах
А если еще Led = 0 после If вставить:
Код: Выделить всё
$regfile = "attiny13.dat"
$crystal = 8000000
Led Alias Pinb.0
But Alias Pinb.1
Config Led = Output
Config But = Input
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
End If
Led = 0
Loop
End-
maloicds
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Вт янв 24, 2012 16:43:03
- Откуда: Москва
Re: BASCOM AVR в вопросах и ответах
Непомогло 
По идее код между if..then..end if должен целиком выполняться, а происходит зависание
По идее код между if..then..end if должен целиком выполняться, а происходит зависание
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
осторожно! леоныч!!! писал(а):будет ли он у меня работать на длинной линии...
Ну это не проблема.
- Вложения
-
- Приём-передатчик.PNG
- (18.62 КБ) 435 скачиваний
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Да. Не плохой вариант. Но я подумал, сделаю как на платах управления лифтом. Два провода - общий и линия. Так платы лифта между собой общаются.Осталось придумать как передавать и принимать. Команды надо поискать.
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
maloicds писал(а):Всем привет. Помогите с простым кодом.Код: Выделить всё
$regfile = "attiny13.dat"
$crystal = 8000000
Led Alias Pinb.0
But Alias Pinb.1
Config Led = Output
Config But = Input
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
End If
Loop
End
...Проблема в том, что при отпускании кнопки в момент свечения светодиода, светодиод продолжает гореть. .
Можно сделать так -
Код: Выделить всё
$regfile = "attiny13.dat"
Input
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
Else
Led = 0
End If
Loopосторожно! леоныч!!! писал(а):Да. Не плохой вариант. Но я подумал, сделаю как на платах управления лифтом. Два провода - общий и линия. Так платы лифта между собой общаются.Осталось придумать как передавать и принимать. Команды надо поискать.
Не совсем понятно про какие команды идет речь.
В чем проблема отправить в порт байт, а на втором контроллере проверить этот байт. Если совпало с байтом в памяти, то выполнить действия. Для односторонней связи вполне достаточно двух проводов (минус питания и данные). Прост подключить TX ведущего к RX ведомого. Для длинной линии желательно поставит на оба конца преобразователь на max232.
-
осторожно! леоныч!!!
- Сверлит текстолит когтями
- Сообщения: 1156
- Зарегистрирован: Вт дек 09, 2008 20:31:56
Re: BASCOM AVR в вопросах и ответах
Про какие команды речь? Да про любые. Как вы и написали. Принял байт,сравнил,есть? - выполнил действие. Не совпал? - продолжил прием из линии или что нибудь передал в линию.
-
maloicds
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Вт янв 24, 2012 16:43:03
- Откуда: Москва
Re: BASCOM AVR в вопросах и ответах
Перепробовал все варианты. Держу кнопку - светодиод моргает. Отпускаю в потухшем состоянии - всё ок, светодиод не моргает. Но если отпускаю в зажённом состоянии - продолжает гореть 
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Вам надо чтобы горел при нажатой кнопке или просто мигал?
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
Else
Led = 0
End If
loop
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
Else
Led = 0
End If
loop
-
maloicds
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Вт янв 24, 2012 16:43:03
- Откуда: Москва
Re: BASCOM AVR в вопросах и ответах
Мигал при нажатой. Всё заработало. Вопрос снимается.
Код: Выделить всё
Led Alias Portb.0
But Alias Pinb.1- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
осторожно! леоныч!!! писал(а):Про какие команды речь? Да про любые. Как вы и написали. Принял байт,сравнил,есть? - выполнил действие. Не совпал? - продолжил прием из линии или что нибудь передал в линию.
А Вы на чём пишите? Асм или Баском. Если Баском, то не пойму в чём проблема? Input A? куда ж проще!
Все делают ошибки, только мудрецы - новые, а дураки - старые.