Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 15.11.2017, 10:24   #1
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 176
Вес репутации: 100/15
Руслан will become famous soon enoughРуслан will become famous soon enough
По умолчанию Прерывания по USART

Всем привет!
Пытаюсь разобраться с прерываниями при работе с USART в PIC18F4620.
Плату использовал демо для ICD2.
Подключился к COM1, через терминальную программу из компа отправляю на USART данные, не важно
какие - главное проверить что что-то пришло.
Предварительно проверил без прерываний что что-то приходит - зажигаю светодиод если что-то пришло
- это работает.
Затем уже попробовал зайдет ли в функцию обработки прерываний void interrupt isr(void) тоже через светодиоды т.е. если зашло в функцию зажигаю светодиод LATB2, а если это прерывание от USART то зажигаю LATB1. Но безуспешно - светодиоды НЕ загорелись.

При включении начинает работать функция Test_USART_Int(), которая вращается в цикле.

Приведу код. Подскажите, пожалуйста, что я не правильно делаю, с прерываниями до этого не работал.


Код:
void InitUsart()
{ //в данной ф-ции и инициализация PORTC

    //** инициализация PORTC (часть 1 из 2-х частей)    
    PORTC = 0; //инициализация с очисткой выходной защёлки данных
    LATC = 0;  //альтернативный метод очистки выходной защёлки данных
    //***END инициализация PORTC (часть 1 из 2-х частей)
    //--------------------------------------------------------


    SPBRG = 64;             //9600 bod                

    //**Регистр управления и статуса передатчика TXSTA
                                
    CSRC = 0; //внешний тактовый сигнал с входа CK
    TX9  = 0;     //8-разрядная передача
    TXEN = 1; //передача разрешена
    SYNC = 0; //асинхронный режим USART    
    BRGH = 0; //низкоскоростной режим
    TRMT = 1; //сдвиговый регистр передатчика TSR пуст
    TX9D = 0; //9-й бит передаваемых данных (может использоваться для проверки чётности)

    //***END Регистр управления и статуса передатчика TXSTA
    //...............................................................
    //** Регистр управления и статуса приёмника RCSTA

    SPEN = 1; //модуль USART включен (выводы RX/DT, TX/CK подключены к USART)
    RX9  = 0;     //8-разрядный приём
    SREN = 0; //не имеет значения для асинхронного режима USART        
    CREN = 1; //приём разрешён
    ADDEN = 0;//детектирование адреса запрещено. Принимаются все байты, 
                         //девятый бит может использоваться для проверки чётности
    FERR = 0; //флаг: ошибки кадра не было
    OERR = 0; //флаг: ошибки переполнения не было
    RX9D = 0; //9-й бит принятых данных (может использоваться для проверки чётности)

    //***END Регистр управления и статуса приёмника RCSTA


    //--------------------------------------------------
    //** инициализация PORTC (часть 2 из 2-х частей)

    TRISC0 = 1; //вход для кварца TMR1
    TRISC1 = 1; //вход для кварца TMR1

    TRISC2 = 0; //OUTPUT;
    TRISC3 = 0; //OUTPUT;
    TRISC4 = 0; //OUTPUT;
    TRISC5 = 0; //OUTPUT;

    TRISC6 = 0; //OUTPUT USART (TX);
    TRISC7 = 1; //INPUT USART (RX);


    //***END инициализация PORTC (часть 2 из 2-х частей)
    //--------------------------------------------------------
    LATC4 = 0; 

    //** for interrupt
    INTCON=0b10000000;  //  Разрешены прерывания GIE=1 глобальное разрешение прерываний

    GIE=1; // на всяк случай продублирую
    RCIE=1;             // Разрешить прерывания от приёмника USART
    //***
    //---------------------------------------------------------


}//InitUsart

//////////////////////////////////////////////////////////////////

void interrupt isr(void)
{
    unsigned char tmp;

    LATB2 = 1;

    if(RCIF)
    {
        LATB1 = 1;


        //** проверка и сброс флагов ошибок USART
        if(FERR || OERR)
        {
            if(FERR)
            {
                tmp = RCREG;
            }
    
            if(OERR)
            {
                 CREN = 0;      
                 CREN = 1;      
            }
        }//if(FERR || OERR)
        //*** проверка и сброс флагов ошибок USART

        uc_byte_USART = RCREG;//? думать вроде надо тут 
    }

//    GIE=0;
//    RCIE=0;          

}

///////////////////////////////////////////////////////////////////

int Test_USART_Int()
{

    TRISB = 0b00000000; //Set RB<7:0> as output
    
    LATB3 = 1; 
    LATB2 = 0; 
    LATB1 = 0; 
    LATB0 = 0; 

/**************************************************/


    GIE=1;
    RCIE=1;             // Разрешить прерывания от приёмника USART
    uc_byte_USART = 0;


    while(1)
    {
        if (uc_byte_USART == 0)
            LATB0 = 0; 
        else
            LATB0 = 1; 
    }

    while(1) 
        continue;    

    return 0;
}
Руслан вне форума   Ответить с цитированием
Старый 15.11.2017, 13:47   #2
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 362
Вес репутации: 1041/50
tsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud of
По умолчанию Re: Прерывания по USART

Главное, чего не хватает в Вашем коде для прерываний от USART, - должен быть еще включен бит разрешения "периферийных" прерываний
Код:
PEIE = 1;
И еще, разрешения прерываний, особенно GIE, обычно не включают в функциях настройки отдельных периферийных модулей. Это нужно делать в "главной" программе.
tsb58 вне форума   Ответить с цитированием
Старый 15.11.2017, 15:51   #3
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 176
Вес репутации: 100/15
Руслан will become famous soon enoughРуслан will become famous soon enough
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Главное, чего не хватает в Вашем коде для прерываний от USART, - должен быть еще включен бит разрешения "периферийных" прерываний
Код:
PEIE = 1;
спасибо, вечером попробую


Цитата:
Сообщение от tsb58 Посмотреть сообщение
И еще, разрешения прерываний, особенно GIE, обычно не включают в функциях настройки отдельных периферийных модулей. Это нужно делать в "главной" программе.
т.е. GIE = 1 включаю при начальной инициализации программы.
А потом, если мне нужно НЕ обрабатывать прерывания какое-то время, то я его выключаю в самой проге и потом в ней же включаю? Это делать с GIE и с PEIE или одного из них достаточно?
Руслан вне форума   Ответить с цитированием
Старый 15.11.2017, 16:27   #4
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 362
Вес репутации: 1041/50
tsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud oftsb58 has much to be proud of
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от Руслан Посмотреть сообщение
...если мне нужно НЕ обрабатывать прерывания какое-то время, то я его выключаю в самой проге и потом в ней же включаю? Это делать с GIE и с PEIE или одного из них достаточно?
Зависит от задачи. Если в программе разрешено несколько источников прерываний, то бывает нужно на время отключить прерывание от какого-то одного источника. В этом случае отключаем бит разрешения этого конкретного прерывания (например, RCIE=0). Но в этом случае в обработчике прерываний нужно анализировать не только флаг прерывания (например, RCIF), а и его разрешение.
В других случаях может быть какой то критичный участок программы, когда ВСЕ прерывания должны быть запрещены. В этом случае снимают общее (глобальное) разрешение прерываний (GIE = 0).
Бит разрешения "периферийных" прерываний PEIE "отвечает" за прерывания от нескольких источников. Каких именно - нужно смотреть в даташит конкретного микроконтроллера.
tsb58 вне форума   Ответить с цитированием
Старый 16.11.2017, 00:59   #5
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 176
Вес репутации: 100/15
Руслан will become famous soon enoughРуслан will become famous soon enough
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от tsb58 Посмотреть сообщение
Главное, чего не хватает в Вашем коде для прерываний от USART, - должен быть еще включен бит разрешения "периферийных" прерываний
Код:
PEIE = 1;
так сделал - заработало, спасибо!

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

Например, в приведенной выше коде моей программы надо бы глобальную переменную uc_byte_USART объявить через этот volatile:
volatile unsigned char uc_byte_USART;
хотя как я вижу - и без него работает...

Последний раз редактировалось Руслан; 16.11.2017 в 01:05.
Руслан вне форума   Ответить с цитированием
Старый 16.11.2017, 03:49   #6
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: МО
Возраст: 59
Сообщений: 2,339
Вес репутации: 3076/95
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: Прерывания по USART

С volatile вопрос как раз не сложный. Компилятор в отсутствии этого квалификатора полагает, что переменная и ее копия (значение считанное из этой переменной в РОН, аккумулятор или другую переменную) - это одно и то же. Проблема может возникнуть при оптимизации и/или при обработке переменных с разрядностью отличной от разрядности контроллера. Например, компилятор побайтно читает переменную в РОН для двухбайтного сложения. Если эта переменная модифицируется в прерывании, то с определенной вероятностью прерывание может возникнуть МЕЖДУ чтениями переменной в основном коде. Таким образом, один байт будет считан до прерывания, а другой после. И в результате получаем совершенно другое значение переменной, например при переносе из младшего байта в старший. Тоже самое может произойти при побитном анализе переменной.
Таким образом, отсутствие квалификатора МОЖЕТ привести к трудно определяемой ошибке. А может и не привести. Все зависит от вероятности возникновения прерывания во время использования переменной.
Марк вне форума   Ответить с цитированием
Старый 16.11.2017, 07:59   #7
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Прерывания по USART

Марк
volatile никак не спасает от проблем, связанных с модификацией переменной в другом потоке выполнения. что с volatile, что без него переменная будет считываться кусками, без намека на анализ того, что она была модифицирована где-то там еще.
besogon вне форума   Ответить с цитированием
Старый 16.11.2017, 10:53   #8
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 36
Сообщений: 1,140
Вес репутации: 3762/81
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от Руслан Посмотреть сообщение
Почитал про это в инете - не такой это простой вопрос как пишут
http://www.pic24.ru/doku.php/osa/art...e_for_chainiks
После статьи Tester'a вопросов возникать не должно.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 16.11.2017, 11:37   #9
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Прерывания по USART

yeskela
вопросы наверное будут, однако они будут касаться не volatile, а того, как в результате решать те или иные вещи.
besogon вне форума   Ответить с цитированием
Старый 16.11.2017, 16:54   #10
Руслан
Senior Member
 
Регистрация: 26.05.2015
Возраст: 41
Сообщений: 176
Вес репутации: 100/15
Руслан will become famous soon enoughРуслан will become famous soon enough
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от yeskela Посмотреть сообщение
http://www.pic24.ru/doku.php/osa/art...e_for_chainiks
После статьи Tester'a вопросов возникать не должно.
еще до того как написать на форум читаю я эту статью, читаю, читаю...
как раз в ней про неоднозначности и пишут, и вот в форуме тоже написали, что могут появиться трудно определимые ошибки...
а мне и без этого алгоритм не простой, а тут еще этот volatile - когда прибор будет стоять у заказчика и появятся неизвестные проблемы... которые то ли от volatileто ли от других ошибок. Нет однозначности.
Напрашивается отключить оптимизацию компилятора...
Руслан вне форума   Ответить с цитированием
Старый 16.11.2017, 17:37   #11
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 36
Сообщений: 1,140
Вес репутации: 3762/81
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от Руслан Посмотреть сообщение
еще до того как написать на форум читаю я эту статью, читаю, читаю...Нет однозначности.
У Вас в примере как раз однозначность есть. Переменная uc_byte_USART модифицируется в прерывании, используется в фоне. Значит должна быть объявлена volatile.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 19.11.2017, 13:17   #12
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 23
Сообщений: 264
Вес репутации: 750/35
al.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to behold
Отправить сообщение для al.kl с помощью ICQ
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от yeskela Посмотреть сообщение
Переменная uc_byte_USART модифицируется в прерывании, используется в фоне. Значит должна быть объявлена volatile.
И чем обусловлена такая обязанность ?
Проблему с атомарным доступом, как уже выше сказали, volatile не решает. Если речь идёт об оптимизации, то ещё не факт, что компилятор вырежет эту переменную.
Зачем давать такие советы ?
Если вы ставите volatile "в каждую дырку", то не нужно советовать это делать другим. Он может и навредить при одновременном доступе к переменной разными потоками. Например, его присутствие, обычный инкремент может развернуться в операцию ЧМЗ, вместо обычной одиночной команды инкремента. О последствиях, думаю, не нужно рассказывать ?

Последний раз редактировалось al.kl; 19.11.2017 в 13:37.
al.kl вне форума   Ответить с цитированием
Старый 19.11.2017, 14:11   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Прерывания по USART

al.kl
в 18пиках нет возможности для нормальной организации атомарного доступа к памяти как такового.

максимум, что возможно, запрещать на время доступа прерывания.
besogon вне форума   Ответить с цитированием
Старый 20.11.2017, 09:54   #14
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 36
Сообщений: 1,140
Вес репутации: 3762/81
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от al.kl Посмотреть сообщение
И чем обусловлена такая обязанность ?
Проблему с атомарным доступом, как уже выше сказали, volatile не решает.
Напомните, пожалуйста, где я говорил про атомарный доступ. Естественно не решает.

Цитата:
Сообщение от al.kl Посмотреть сообщение
Если вы ставите volatile "в каждую дырку", то не нужно советовать это делать другим. Он может и навредить при одновременном доступе к переменной разными потоками.
Давайте без личностей. Мы обсуждаем конкретный случай. однобайтная переменная модифицируется в прерывании, используется в фоне. В main uc_byte_USART устанавливается в ноль и далее бесконечно проверяется на ноль. По графу вызовов обработчик прерывания и main не связаны. Почему компилятор с включеннной оптимизацией должен эту проверку делать, а не полагать, что uc_byte_USART как был установлен в 0, так и остался?
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 20.11.2017, 10:17   #15
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Прерывания по USART

yeskela
по моему опыту, уверен что gcc и sdcc со включенной оптимизацией вырежут циклическую проверку uc_byte_USART переменной, если ее не объявить volatile.
это будет абсолютно нормальное, правильное поведение компилятора исходя из моих представлений об оптимизациях.
besogon вне форума   Ответить с цитированием
Старый 20.11.2017, 10:33   #16
yeskela
Senior Member
 
Аватар для yeskela
 
Регистрация: 28.01.2010
Адрес: Новочеркасск
Возраст: 36
Сообщений: 1,140
Вес репутации: 3762/81
yeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond reputeyeskela has a reputation beyond repute
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от besogon Посмотреть сообщение
yeskela
по моему опыту, уверен что gcc и sdcc со включенной оптимизацией вырежут циклическую проверку uc_byte_USART переменной, если ее не объявить volatile.
это будет абсолютно нормальное, правильное поведение компилятора исходя из моих представлений об оптимизациях.
И я о том-же.
__________________
Отсутствие доступа в интернет с рабочего места очень замедляет работу. Наличие - полностью парализует её.
yeskela вне форума   Ответить с цитированием
Старый 24.11.2017, 09:42   #17
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 23
Сообщений: 264
Вес репутации: 750/35
al.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to beholdal.kl is a splendid one to behold
Отправить сообщение для al.kl с помощью ICQ
По умолчанию Re: Прерывания по USART

Цитата:
Сообщение от yeskela Посмотреть сообщение
Напомните, пожалуйста, где я говорил про атомарный доступ. Естественно не решает.

Давайте без личностей. Мы обсуждаем конкретный случай. однобайтная переменная модифицируется в прерывании, используется в фоне. В main uc_byte_USART устанавливается в ноль и далее бесконечно проверяется на ноль. По графу вызовов обработчик прерывания и main не связаны. Почему компилятор с включеннной оптимизацией должен эту проверку делать, а не полагать, что uc_byte_USART как был установлен в 0, так и остался?
Какие личности, уважаемый ?
В КОНКРЕТНОМ СЛУЧАЕ, который тут обсуждается, имеет место быть проблема с атомарным доступом. И Ваш совет, сударь, относительно volatile, в КОНКРЕТНОМ СЛУЧАЕ - ТС'у, как собаке пятая нога.
Зачем давать такие советы, которые, по Вашим же словам, В КОНКРЕТНОМ СЛУЧАЕ, проблему не решают ?
Просто глаз режут подобные посты. Абы что написать, заумное...
al.kl вне форума   Ответить с цитированием
Старый 24.11.2017, 09:50   #18
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,885
Вес репутации: 3528/77
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Прерывания по USART

al.kl
в pic16 чтение байта, если переменная названная byte, имеет разрядность действительно байт, читается атомарно.
Код:
        if (uc_byte_USART == 0)
            LATB0 = 0; 
        else
            LATB0 = 1;
и в этом случае без volatile этот кусок будет вырезан при оптимизации. наверное речь шла об этом, хотя я уже потерял нить дискуссии.
besogon вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен по USART (16f876a) aleXXX Продукция MICROCHIP 2 31.07.2008 09:55
PIC18F4520 проблемы с UART-ом AlHakim Продукция MICROCHIP 4 30.10.2007 07:31
Передача по радиоканалу с помощью USART Валерий Продукция MICROCHIP 14 29.03.2007 19:13
Вопрос по PIC16F916 USART soecho Продукция MICROCHIP 10 27.02.2007 11:06


Часовой пояс GMT +3, время: 17:20.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot