Страница 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 герц хотя бы думаю скорость будет норм. Можно для приема и передачи наверное применять разные порты и "слить" их в одну линию при помощи транзисторов.

Что посоветуете друзья??? :dont_know: :idea:

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
Мигал при нажатой. Всё заработало. Вопрос снимается.

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

Led Alias Portb.0
But Alias Pinb.1

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

Добавлено: Вт янв 22, 2013 14:09:25
kip96
осторожно! леоныч!!! писал(а):Про какие команды речь? Да про любые. Как вы и написали. Принял байт,сравнил,есть? - выполнил действие. Не совпал? - продолжил прием из линии или что нибудь передал в линию.
А Вы на чём пишите? Асм или Баском. Если Баском, то не пойму в чём проблема? Input A? куда ж проще!