Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Показано с 1 по 5 из 5

Тема: Проблема управления портами PIC18F452

  1. #1
    Аватар для RA3PCS
    Регистрация
    12.10.2010
    Адрес
    г. Новомосковск Илья
    Сообщений
    155
    Позывной
    RA3PCS

    Проблема управления портами PIC18F452

    Добрый день!
    Наблюдается следующая проблема: При осуществлении передачи байта через UART микроконтроллера PIC18F452 установленный ранее в 1 вывод порта D сбрасывается в 0. Каким образом это происходит непонятно, все порты сконфигурированы правильно, UART работает тоже правильно. Компилятор microC PRO. Может быть у кого-то уже была такая проблема?

    Часть программы:

    LATD.B5 = 1; //Устанавливаем вывод в 1
    Uart1_Write(marker2) ; //Передача байта данных
    LATD.B5 = 0; //Устанавливаем вывод в 0


  2. #2
    Аватар для RA3PCS
    Регистрация
    12.10.2010
    Адрес
    г. Новомосковск Илья
    Сообщений
    155
    Позывной
    RA3PCS
    Попробовал реализовать ту-же задачу, но на другом PIC и с использованием компилятора CCS C, проблема осталась, подскажите пожалуйста, что делаю не так? Программу привожу:
    #include <16F628A.h>
    #use delay(clock=4000000)
    #fuses HS, NOWDT
    #use rs232(baud=19200, parity=N, xmit=PIN_B2, rcv=PIN_B1, stream=OUT_STREAM) //Настройки RS232
    char marker1 = 0x10;

    void main()
    {
    set_tris_B (0x00); //режимов
    set_tris_A (0x00); //портов ввода/вывода

    while (1)
    {
    output_bit (PIN_B6,1);
    putc (marker1);
    output_bit (PIN_B6,0);
    delay_ms(100);
    }

    Каждые 100 ms в поток UART выводится маркер, перед выводом вывод 6 порта В должен устанавливаться в 1, после вывода маркера вывод устанавливается в 0, но происходит иначе, вывод устанавливается в 1 и при начале передачи маркера в UART вывод сбрасывается в 0.

  3. #3
    А это уж надо смотреть, как работает функция вывода. Вообще логично предположить, что выход из нее происходит немедленно после записи в регистр данных UART, а вовсе не по окончанию физической передачи байта. Т.е. надо поллить регистр статуса UART на предмет завершения передачи, и лишь по завершению менять состояние бита.

  4. Спасибо от RA3PCS

  5. #4
    Аватар для vadim_d
    Регистрация
    29.10.2006
    Адрес
    Санкт-Петербург
    Сообщений
    14,919
    Цитата Сообщение от RA3PCS Посмотреть сообщение
    вывод устанавливается в 1 и при начале передачи маркера в UART вывод сбрасывается в 0
    Скорее всего, все правильно. Функция выдачи в канал видит готовый к передаче UART и пишет в его регистр данных, после чего возвращает управление вызвавшей программе, это происходит очень быстро. Дальше Вы сбрасываете бит, а UART только-только пошел выдвигать в канал биты данных. Как вариант: после выдачи маркера дождитесь освобождения регистра сдвига UART, а только потом сбрасывайте бит, или после выдачи маркера тупо отсчитайте задержку на один передаваемый символ.
    Вадим

  6. Спасибо от RA3PCS

  7. #5
    Аватар для RA3PCS
    Регистрация
    12.10.2010
    Адрес
    г. Новомосковск Илья
    Сообщений
    155
    Позывной
    RA3PCS
    Цитата Сообщение от vadim_d Посмотреть сообщение
    Как вариант: после выдачи маркера дождитесь освобождения регистра сдвига UART
    Да, всё заработало! Действительно программа выдаёт байт в поток UART и продолжает выполнять следующую инструкцию не смотря на неоконченную передачу. Благодарю за ответы, все мне очень помогли! ))

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Блок управления RA3AO
    от Vytas в разделе RA3AO
    Ответов: 4
    Последнее сообщение: 09.09.2012, 09:22
  2. Контроллер управления.
    от UN7RX в разделе Конструкции на микроконтроллерах для радиолюбителей
    Ответов: 40
    Последнее сообщение: 02.01.2012, 00:23
  3. Проблема управления синтезатором
    от Vit_K в разделе Технический кабинет
    Ответов: 11
    Последнее сообщение: 22.01.2011, 08:54
  4. Дистанционные пульты управления
    от rx4sx в разделе Бытовая техника, мой автомобиль, домашняя автоматизация
    Ответов: 3
    Последнее сообщение: 19.01.2011, 16:30
  5. Ручки управления
    от RV3GZ в разделе Технический кабинет
    Ответов: 8
    Последнее сообщение: 25.11.2005, 12:05

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •