Страница 161 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт янв 17, 2013 11:46:43
vanyap1
Здравствуйте!
Известно что а атмега64 есть два порта рс232.
Так собственно вопрос - как отправить во второй информацию, если <print var> запишет в первый порт.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт янв 17, 2013 12:39:15
Moto_v3x
PRINT [#channel , ] var ; " constant"
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт янв 17, 2013 13:15:35
vanyap1
Понял, спасибо.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 20, 2013 00:01:46
verzg
Здравствуйте.
Подскажите, как в BASCOM сделать прерывание по совпадению от таймера 0 для ATMega8535.
http://www.edm2007.narod.ru/startavr7.html Приведенный здесь пример у меня не работает.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 20, 2013 09:00:57
edm2007
Здравствуйте.
Да все прекрасно работает. Просто нужно хоть немного заглядывать в даташит, дабы посмотреть какие регистры имеются именно у этого МК, и как они называются.
Код: Выделить всё
$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:

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 20, 2013 10:00:37
verzg
edm2007 Благодарю.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 11:05:46
осторожно! леоныч!!!
Снова всем привет) Хочу вновь задать глупый вопрос
Мне нужно наладить связь между двумя разными МК. Attiny2313 и atmega16.
Оба контроллера работают с тактовой частотой 8мгц от встроенного генератора без делителя...
Нужно чтоб оба контроллера по одному порту "слушали" друг друга и передавали команды когда это необходимо друг другу. Посоветуйте что лучше передавать и как.
Я вот думал байт передавать,только надо скорость пониже чтоб ошибок не было. 800 герц хотя бы думаю скорость будет норм. Можно для приема и передачи наверное применять разные порты и "слить" их в одну линию при помощи транзисторов.
Что посоветуете друзья???

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 14:50:18
vanyap1
А rs232 чем неугодил?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 15:08:50
осторожно! леоныч!!!
Можно конечно и его. Но как наладить связь между контроллерами? Надо в обе стороны данные передавать и принимать. В одну линию (провод) этот интерфейс не впилишь по моему. Надо организовать реакцию контроллера на приходящие команды, я понятия не имею какие команды имеет этот протокол связи и будет ли он у меня работать на длинной линии...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 18:19:14
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
Смысл простой: при нажатии кнопки светодиод мигает раз в секунду. Проблема в том, что при отпускании кнопки в момент свечения светодиода, светодиод продолжает гореть. Пробовал вынести мигание светодиода в процедуру - тоже самое. В Proteus'е тоже самое.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 18:30:20
zero648
А если еще 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
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 18:35:48
maloicds
Непомогло

По идее код между if..then..end if должен целиком выполняться, а происходит зависание
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 18:41:53
max50
осторожно! леоныч!!! писал(а):будет ли он у меня работать на длинной линии...
Ну это не проблема.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 19:07:44
осторожно! леоныч!!!
Да. Не плохой вариант. Но я подумал, сделаю как на платах управления лифтом. Два провода - общий и линия. Так платы лифта между собой общаются.Осталось придумать как передавать и принимать. Команды надо поискать.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 19:30:39
vanyap1
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.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 19:47:37
осторожно! леоныч!!!
Про какие команды речь? Да про любые. Как вы и написали. Принял байт,сравнил,есть? - выполнил действие. Не совпал? - продолжил прием из линии или что нибудь передал в линию.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 20:43:18
maloicds
Перепробовал все варианты. Держу кнопку - светодиод моргает. Отпускаю в потухшем состоянии - всё ок, светодиод не моргает. Но если отпускаю в зажённом состоянии - продолжает гореть

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 21:35:04
vanyap1
Вам надо чтобы горел при нажатой кнопке или просто мигал?
Do
If But = 0 Then
Led = 1
Waitms 1000
Led = 0
Waitms 1000
Else
Led = 0
End If
loop
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 21, 2013 21:55:30
maloicds
Мигал при нажатой. Всё заработало. Вопрос снимается.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 22, 2013 14:09:25
kip96
осторожно! леоныч!!! писал(а):Про какие команды речь? Да про любые. Как вы и написали. Принял байт,сравнил,есть? - выполнил действие. Не совпал? - продолжил прием из линии или что нибудь передал в линию.
А Вы на чём пишите? Асм или Баском. Если Баском, то не пойму в чём проблема? Input A? куда ж проще!