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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » INPUT для программного UARTa


INPUT для программного UARTa

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

1

Использую программный юарт на Атмеге32, получаю ошибку при компиляции следующего кода:

Код:
$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 250
$swstack = 250
$framesize = 250

. . .

Open "coma.6:19200,8,n,1" For Output As #1                  'TX
Open "coma.7:19200,8,n,1" For Input As #2                   'RX

Dim S As String * 8

Do

Input #2 , "enter command" , S
Print #1 , S

Loop
End

Вот что пишет бэйсик
Error : 60    Line :   129   Duplicate label [_SENDSTRCONST0COMA.6            ]
Error : 60    Line :   129   Duplicate label [_SENDSTRCONSTEXIT0COMA.6        ]
Error : 61    Line :   129   Label not found [_SENDSTRCONST0COMA.7            ]

Еще один вопрос -  можно ли организовать прерывание по софтварному юарту? Мне нужно чтобы прога работа в цикле и как только на вход по юарту придет что-то больше нуля, отреагировала на это моментально. Спасибо)

0

2

А аппаратный нельзя? По нему работать проще.

0

3

Есть такая вещь как "Ischarwaiting", когда она ровна 1, то пора считывать данные из порта. Очень удобно заниматься своими делами, пока нет событий и прерывания использовать не нужно.
На счет кода софтварного уарта - вроде верный, у меня практически так же организовано два порта (только один аппаратный (по умолчанию)).

Отредактировано RDW (2011-11-25 12:41:14)

0

4

Спасибо RDW за ответ. Sva-don аппаратный занят уже)

0

5

Но к сожаланию Ischarwaiting() только для аппаратного юарта

0

6

Попробуйте такой подход:

Cm01:
      In_data = Inkey()
      If In_data = 0 Then Goto Cm01
      If Len(str_in) = 48 Or In_data = Chr(13) Then Return
      Str_in = Str_in + Chr(in_data)
      Goto Cm01

Ограничение работы область только текста (в этих пределах, но можно расширить).
Правда у меня эта вещь работает опять же на аппаратном уарте, может подойдет на софтовом.
Если будет непонятно с переменными, говорите - объясню.
В любом случае отписывайте (любопытны результаты).

Отредактировано RDW (2011-11-27 13:50:54)

0

7

Вообще, если это своё стройство, то можно скажем добавить хотя бы эквивалент CTS (доп.сигнал).

0

8

RDW спасибо за помошь! Это для проекта на Atmega32. HW uart используется для подключения к компу (для перепрошивки через бутлоадер) а SW uart для модуля bluetooth. Но CTS и RTS на моем модуле синезуба не дышат вообще) (BTM-112). На самом деле уже заканчиваю использовать Атмеги в своих проектах, так как начал заменять их на  Atxmega, у которых несколько аппаратных юартов.

0

9

У меня BTM-222, там CTS на глазок вроде работает, а RTS - мертвый, но у меня модуль в режиме "slave" (если бы "master" был, думаю возможно тогда CTS/RTS заработали полноценно).

Отредактировано RDW (2011-11-27 19:46:51)

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » INPUT для программного UARTa