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

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

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

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


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Связь двух МК по UART


Связь двух МК по UART

Сообщений 31 страница 51 из 51

31

Алексей bird написал(а):

sasha_1973 написал(а):
Вопрос был в том, что командой PRINT посылался LF, а при приёме этот LF не убирался и выводился на экран

Это обычная реакция PRINT в Бэйсике. Достаточно строку завершать точкой с запятой ( пример - PRINT "ABC"; ) чтобы в конце не было "#0D" и "#0A". Азы.  :D

Отредактировано RDW (2014-02-26 12:24:44)

0

32

RDW написал(а):

Азы

только видимо никто этого не знал  :writing:

0

33

я знал - значит уже не "никто"  :rofl:

0

34

RDW написал(а):

я знал - значит уже не "никто"  :rofl:

А если знал, почему раньше не сказал? Значит делаем вывод - не знал.

0

35

sasha_1973 написал(а):

За всё время работы с Протеусом, ни разу небыло такого, что-бы работало там и не работало в железе, или наоборот. Если что-то не работало, то только из-за моих ошибок.

В реальной жизни бывает, что на столе в железе работает, а унесешь, поставишь глубоко и надежно - не работает. Протеус для отладки какого то кусочка, в реальных устройствах, где не только цифровая часть, но и аналог, к тому же нелинейный Протеус не подойдет.

0

36

Алексей bird написал(а):

А если знал, почему раньше не сказал? Значит делаем вывод - не знал.

это вместо "спасибо"?

+1

37

RDW написал(а):

это вместо "спасибо"?

Ну так твоей помощи не было  :tomato: , а вот sasha_1973 "впрягся" в мой вопрос по полной))
Но спасиб скажу, может в будущем поможешь  :cool:
Спасибо!

0

38

А что вы ругаетесь. В справке это ж все написано.  :crazyfun:

Код:
You can use a semicolon (;) to print multiple variables or constants after each other.

When you end a line with a semicolon, no linefeed and carriage return will be added.

0

39

Я вот так.

Код:
 If Ischarwaiting() = 1 Then                                'Прием данных из UART
   J = Inkey()                                              'При приеме от контроллера проскакивает лишний символ <LF> , скидываем его
   If J <> 10 Then
   Led_r = 1
    $timeout = 1000000
    Input S Noecho
    If J <> 10 Then S = Chr(j) + S
    Flagbuf = 1
    Led_r = 0
   End If
 End If

0

40

Димон написал(а):

Я вот так.

чуть позже попробую и отпишусь

MACTEPok написал(а):

А что вы ругаетесь

да мы и не ругаемся :)

0

41

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

0

42

sasha_1973 написал(а):

И чего не делаете???

так я и поправил этот фрагмент или надо было удалить?

0

43

sasha_1973 написал(а):

Как было, так и осталось!?

ну не знаю, у меня "лишнее" зачёркнуто......
ладно, удалю))

0

44

sasha_1973 написал(а):

Имеется ввиду фрагмент кода, надо не зачеркивать, а удалять!

Ах код надо удалить, ок

позже
вроде сделал как надо)))

Отредактировано Алексей bird (2014-02-27 10:02:55)

0

45

Интересно себя ведёт программа. Если вбить в прерывание, ну то которое срабатывает каждую секунду, команду CLS, то через несколько секунд счет индикация сбивается и до ресета не восстанавливается. Кстати не первое устройство где я это заметил, это в чем может быть проблема?

sasha_1973 написал(а):

Почистите лишние сообщения!

сделаю чуть позже )))

0

46

sasha_1973 написал(а):

Прерывание на ASM или силами Bascom?

Так в моем коде видно это прерывание под названием Pulse0: Туда я и запихнул CLS.

0

47

sasha_1973 написал(а):

Смотрите личку

Я думаю можно на "ты"))))
Хорошая идея - ограничить кол-во записей в индикатор, что-то я про это забыл)))) Спасибо!

0

48

sasha_1973 написал(а):

А зачем чистить экран, да ещё и в прерывании???

возможно в будущем понадобиться, ведь не просто так я отлаживаю это устройство чтобы какой-то нелепый счет выводить?

0

49

Вроде работает как надо. Осталось впаять микросхемку для преобразования в 485 интерфейс и отладить его. Кстати будут ли какие-нибудь изменения  коде? Насколько я помню нужно дополнительно управлять приёмом\передачей?

sasha_1973
спасиб за советы!

Отредактировано Алексей bird (2014-02-27 11:30:58)

0

50

sasha_1973 написал(а):

сделал-бы приём и передачу чисто на прерываниях, аппаратно

Так вроде в моём коде так и сделано или не?

0

51

sasha_1973 написал(а):

В прерывании сделан только приём.

А помочь с передачей сможешь?

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Связь двух МК по UART