Форум программистов, компьютерный форум, киберфорум
Наши страницы
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
moksbumym
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 10
1

Вывод строки в терминал

30.10.2010, 04:44. Просмотров 3413. Ответов 4
Метки нет (Все метки)

Пробую в терминал, из "флэша" вывести данные, строка за строкой с помощью прерывания UDRE. Результат, в окне терминала от первой строки только первая буква, далее выводиться текст второй строки без перехода на новою строку
Поставил задержку 20ms между выводом строк, все ОК.
Может флаг какой-нибудь нужно проверить, подскажите, пожалуйста, куда тороплюсь?
...
ldi ZL, low(String1)*2
ldi ZH, high(String1)*2

sts StrPrint, ZL
sts StrPrint+1, ZH
ldi temp, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)
out UCSRB, temp
...
String2

... обработчик прерывания
UD_OK:
pushf
push ZL
push ZH

lds ZL, StrPrint
lds ZH, StrPrint+1

lpm temp, Z+

cpi temp, 0
breq STOP_RX

out UDR, temp

sts StrPrint, ZL
sts StrPrint+1, ZH
EXIT_RX:
pop ZH
pop ZL
popf
reti
STOP_RX:
ldi temp, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(0<<UDRIE)
out UCSRB, temp
rjmp EXIT_RX
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2010, 04:44
Ответы с готовыми решениями:

Вывод в терминал, 4 потока
Здравствуйте, для дисциплины ОС требовалось написать программу, рекурсивно копирующую содержимое...

Вывод данных в терминал
как вывести хотя бы тот же &quot;Hello, world&quot; в терминал? (Ubuntu, Netbeans)

Терминал, вывод данных
Всех приветствую! Пытаюсь написать программу для работы с ком портом, наподобие терминала. ...

Вывод символов ASCII в терминал
Добрый вечер господа возник вопрос связанный с выводом на экран зашифрованного текста. Когда...

Передача данных c МК51 по UART и вывод в терминал
Нужно передать 2-х байтовое число через UART по каналу RS-485 на терминал.

4
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
30.10.2010, 14:49 2
Смотри:
Код
ldi ZL, low(String1)*2
ldi ZH, high(String1)*2

sts StrPrint, ZL
sts StrPrint+1, ZH
ldi temp, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE)
out UCSRB, temp
Выполняется, и сразу-же выполняется загрузка указателя на вторую строку. Поэтому от первой вылетает только 1 байт, а вторая целиком.

Тебе нужно завести какой-нибудь флаг, который ты будешь ставить в "STOP_RX:". А основной программе ждать пока этот флаг установится - потом загружать новую строку (и не забудь сбрость флаг!)
0
boss
0 / 0 / 0
Регистрация: 02.03.2012
Сообщений: 3
30.10.2010, 21:34 3
а
Код
ldi ZL, low(String1)*2
ldi ZH, high(String1)*2
и
Код
ldi ZL, low(String1*2)
ldi ZH, high(String1*2)
разные вещи? Какой вариант правильнее? На мой взгляд должно быть как во 2м варианте.
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
30.10.2010, 21:43 4
Да, второй правильнее. Точнее, он единственно правильный!
Но пока адрес < 128 будут работать оба. Потом начнуться приколы.
0
moksbumym
0 / 0 / 0
Регистрация: 25.09.2010
Сообщений: 10
31.10.2010, 05:16 5
Сделал проверку флага, все заработало.
Заметил, что можно еще проверять бит UDREI между выводом строк, я же им запрещаю прерывание UDRE в STOP_RX
Спасибо за помощь
0
31.10.2010, 05:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2010, 05:16

вернуть вывод программы в терминал, или в файл
есть программа mlnet, которая стартует при загрузке оси скриптом из init.d при помощи...

Не могу найти ошибку, на терминал не вывод массив
помогите пожалуйста найти ошибку, первый массив выводит хорошо, а измененный нет, получаю только...

Настройка syslog - будет ли параллельно вывод в терминал и консоль?
Здравствуйте! Возник следующий вопрос: Если к примеру настроить на коммутаторе/маршрутизаторе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.