Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2016, 10:40   #1
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию Что надо записать в регистры UART для передачи данных через сом порт?

Настраиваю регистры для передачи данных и не понял, что нужно записывать в регистр IER (база+1) , по идее в него нужно записать 02h (разрешить прерывание на передачу, когда регистр передачи пустой), но данные не передаются. На всякий случай выложу все настройки регистров
может подскажете где ошибка?
база +3 , 0x80 dlab
база +1, 0x00
база +0,0x0C 9600 бод
база +0, 0x03 8bit,1stop bit....
база +, 0x02 уст.разрешения прерывания на передачу
база +2, 0xC7 включение FIFO, очистка буферов
база +4, 0x0b out2,dtr,rts

в результате при передаче данных в регистре база+2 IIR находится код 0xC1 в котором указано, что фифо буфер включен , а прерывания нет
и в регистре база+5 MSR 0x60 сдвиговый регистр передатчика пуст и регистр защелка передатчика тоже пуст.

Последний раз редактировалось седьмой; 03.12.2016 в 10:41. Причина: операционка ms-dos, но это не принципиально наверно, можно на чистом си , можно под с++
седьмой вне форума Ответить с цитированием
Старый 03.12.2016, 11:47   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Настраиваю регистры для передачи данных и не понял, что нужно записывать в регистр IER (база+1) , по идее в него нужно записать 02h (разрешить прерывание на передачу, когда регистр передачи пустой), но данные не передаются.
Вы можете работать через прерывания так и без.

Цитата:
база+5 MSR
MSR это +6

Цитата:
база +0,0x0C 9600 бод
база +0, 0x03 8bit,1stop bit....
??? dlab не выключен пишем не в тот регистр.

Обработчик прерывания свой повесели?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 13.06.2017, 13:25   #3
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Вы можете работать через прерывания так и без.
Спасибо, не заметил во время ваш ответ, но проверю старый код, интересно посмотреть где была ошибка и в чем.
седьмой вне форума Ответить с цитированием
Старый 23.06.2017, 15:26   #4
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
??? dlab не выключен пишем не в тот регистр.
это была описка при копировании, вот так на самом деле
Код:
база +3, 0x03 8bit,1stop bit....
dlab выключен
Цитата:
Бит 7. DLAB(Divisor Latch Access Bit)- Этот бит доступа к делителю частоты. Если DLAB=1, то можно обратиться к регистрам DIM, DLL в которых хранятся младший и старший байт делителя частоты :16.Если DLAB=0, то можно обратиться к регистрам THR,RBR,IER.
dlab выключается нулем в крайнем левом бите, так что в реальном коде было все верно

Цитата:
MSR это +6
да вы правы тоже ошибся

Последний раз редактировалось седьмой; 23.06.2017 в 15:30.
седьмой вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для сканирования и посылки данных в СОМ порт HDiW Помощь студентам 10 18.03.2014 20:58
Шлагбаум через СОМ портом очень надо MACTAK Помощь студентам 1 13.12.2012 22:10
Приём данных через СОМ порт Серж_ Общие вопросы C/C++ 0 13.06.2010 01:25
Отправка данных в СОМ порт из под VBA Excel Abhcn Microsoft Office Excel 3 03.03.2009 23:56