Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Будет ли UART работать без сбоев


Будет ли UART работать без сбоев

Сообщений 1 страница 9 из 9

1

Есть 7 сегментный дисплей на 4 цифры, к нему пытаюсь прикрутить ЮАРТ. Т.е смысл в том что этот дисплей получает по ЮАРТ от второго МК строку которую он должен вывести на экран.Строка представляет собой десятичную дробь.Так вот....будет ли правильно работать путем простого посыла второго контроллера первому  print`ом и приема первого от второго мк путем input?Не будет ли никаких пропусков.Мне кажется что будут ошибки и будет часто пропускать.

Отредактировано jimbaton (2009-12-06 15:09:15)

0

2

а кто мешат в прерывании таймера делать динамическую индикацию??

0

3

а как заставить чтобы при посылке первым МК скажем символа "R" начать второи МК читать UART?

Отредактировано jimbaton (2009-12-06 21:14:13)

-1

4

Блин..... Почитай все таки мат часть.

Парой слов.  При приеме уарт складывает пришедший байт в регистр UDR. Если  при этом включено прерывание по этому событию - программа остановит свое выполнение и проц передаст управление подпрограмме прерывания.
В принципе достаточно строк
(подпрограмма прерывания приема UART)
asm
push r17
in r17,UDR
sts {переменная},r17
pop r17
endasm
Как видишь, стандартный inkey input и подобные операторы не катят.
Я сам с этим долго возился, пока сам на асме не написал как надо, ничего толком не работало.

0

5

без асма никак?

0

6

у меня работает и без асма передается 3 различных числа и никаких сбоев, а использовал команды printbin и inputbin прием осуществлялся в прерывании

On Urxc Aaa

Enable Urxc

Enable Interrupts

Отредактировано SyncMVGP (2009-12-07 07:35:18)

0

7

SyncMVGP расшифруйте по-русски, что этот код значит.Так как я еще неважно программирую.Также жду от вас, товарищи, и другие мнения и примеры.

-1

8

эксперементировал с 7сегментником на 3 цифры. через терминал посылал поочереди 3 числа (от 0 до 254 что соответствует числу символу или кракозябле) после приема мега выводила эти три значения на дисплей. Сбоев не наблюдал. Вобщем разбирайтесь в коде...

Код:
$regfile = "m8def.dat"                                      'определяем контроллер
$crystal = 8000000                                          ' Сообщаем компилятору тактовую частоту задабщего генератора микроконтроллера
$baud = 9600                                                ' use baud rate  тут несколько строк по настройке UART
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

     Config Portb = Output , Portd = Output ,
     Config Timer0 = Timer , Prescale = 8
     On Timer0 Pulse                                        ' назначаем подпрограмму, которая будет запускатся по переполнению 1го таймера
     Enable Interrupts                                      'разрешаем прерывания
     Enable Timer0

Dim Dig1 As Byte , Dig2 As Byte , Dig3 As Byte , Y As Byte
Y = 5
Wait 1

     Enable Interrupts                                      'разрешаем прерывания
     Enable Timer0                                          ' начало основного цикла
Do
Input "dig1 " , Dig1                                        'Noecho                     ' Отправляем строку Enter you name и ждем ответа от ПК (ноу эхо без обратной отправки принятого значения в уарт)

Input "dig2 " , Dig2
Input "dig3 " , Dig3

Loop                                                        'конец основного цикла
End



 Pulse:
Portb = 0 ' тут прицеплен 7 сегментник
Set Portd.5 ' тут прицепленны общие выводы 
Set Portd.6
Set Portd.7

 Incr Y
 If Y = 4 Then Y = 1

 Select Case Y                                              ' динамическая индикация с выводом принятых значений
 Case 1 :
 Reset Portd.5
 Portb = Dig1
 Case 2 :
 Reset Portd.6
 Portb = Dig2
 Case 3 :
 Reset Portd.7
 Portb = Dig3
 End Select

 Return

а вот простейшая схема соединения меги и рс-232
http://bascomavr.3bb.ru/uploads/0000/25/b8/1527-1.jpg

0

9

вот это уже стоящее.Ближе к теме.Спасибо

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Будет ли UART работать без сбоев