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

Вернуться   Форум Микро-Чип > Вопросы начинающих

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

Ответ
 
Опции темы Опции просмотра
Старый 10.03.2012, 21:07   #1
killerbb
Junior Member
 
Регистрация: 10.03.2012
Возраст: 20
Сообщений: 7
Вес репутации: 100/0
killerbb will become famous soon enoughkillerbb will become famous soon enough
По умолчанию Странная работа UART

Доброе время суток. Я недавно занимаюсь с контроллерами, и столкнулся с проблемой на UART.
По даташиту разобрался со скоростью сконфигурировал передатчик. Через Pickit2 uart tool проверяю то, что он посылает.
Например шлю два байта 0xf0f0 все работает правильно.
Но если посылаю что то другое без F, например 4b - буква k в ASCII приходят вообще рандомные байты.
Контроллер pic16f690 на плате от Microchip starter kit. Вот код.

Код:
#include <htc.h>
#define _XTAL_FREQ 4000000
unsigned int data;
void interrupt isr()
{
	GIE = 0;
	if(TXIF)
	{
	TXREG = data;
	TXREG = data >> 8 ;
	while(!TXIF) continue;
	TXIE  = 0;
	}
	
}

void init(void)
{
	SPBRG = 25;
	BRGH = 0;
	BRG16 = 0;	
	SYNC = 0;
	SPEN = 1;
	TX9 = 0;
	TXEN = 1;
	//CREN = 1;
	GIE = 1;
	PEIE = 1;
	TXIE = 0;
	//RCIE = 1;
	TRISB = 0;
	TRISC = 0;
	PORTC = 0;
	OPTION_REG += 128; 
	WPUB = 80;
}

void main(void)
{
	init();

	data = 7557; // тут тупо для проверки пишу то что посылать
	TXIE = 1;
	RC1 = 1;
		while(1)
		{
			if(TXIF) TXIE = 1; // типо спам бота
			__delay_ms(500);
		
		}
}
killerbb вне форума   Ответить с цитированием
Старый 10.03.2012, 21:58   #2
syv
Guest
 
Сообщений: n/a
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от killerbb Посмотреть сообщение
Доброе время суток....
Поправил, как смог.
Код:
#include <htc.h>
#define _XTAL_FREQ 4000000
unsigned int data;
void interrupt isr()
{
    if(TXIF)
    {
    TXREG = data;
    TXIF=0;
    }
    
}

void init(void)
{
    GIE = 0;
    SPBRG = 25;
    BRGH = 0;
    BRG16 = 0;    
    SYNC = 0;
    SPEN = 1;
    TX9 = 0;
    TXEN = 1;
    //CREN = 1;

    PEIE = 1;
    TXIE = 1;
    //RCIE = 1;
    TRISB = 0;
    TRISC = 0;
    PORTC = 0;
    OPTION_REG += 128; 
    WPUB = 80;
    TXIF=0;
    GIE = 1;
}

void main(void)
{
    init();

    data = 7557; // тут тупо для проверки пишу то что посылать
        while(1)
        {
            __delay_ms(500);
        
        }
}
  Ответить с цитированием
Старый 10.03.2012, 22:06   #3
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от syv Посмотреть сообщение
Поправил, как смог.
Код:
    TXIF=0;
лишнее, так этот флаг не сбросить
Greg вне форума   Ответить с цитированием
Старый 10.03.2012, 22:12   #4
Slav-Sla
Member
 
Регистрация: 05.12.2010
Возраст: 39
Сообщений: 56
Вес репутации: 104/26
Slav-Sla will become famous soon enoughSlav-Sla will become famous soon enough
По умолчанию Re: Странная работа UART

Немного странноватый язык....
Пишу на асме....
Зачем же ждать 500 мс, достаточно же только проверять флаг окончания передачи и сразу слать еще один байт. Замечал такой глюк: при пакетной отправки (некоторое число байт) первый байт всегда идет не тот, который ты посылаешь....
Slav-Sla вне форума   Ответить с цитированием
Старый 10.03.2012, 22:14   #5
syv
Guest
 
Сообщений: n/a
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от Greg Посмотреть сообщение
лишнее, так этот флаг не сбросить
А это, чтобы не вникать, автоматом, так сказать.
Хуже не будет.
Есть варианты, где руками надо...
  Ответить с цитированием
Старый 11.03.2012, 07:17   #6
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от Slav-Sla Посмотреть сообщение
Немного странноватый язык....
Пишу на асме....
Зачем же ждать 500 мс, достаточно же только проверять флаг окончания передачи и сразу слать еще один байт. Замечал такой глюк: при пакетной отправки (некоторое число байт) первый байт всегда идет не тот, который ты посылаешь....
Первые байты портиться не должны. Что-то делаете не так. Для начала нужно выяснить, какой интерйфейс Вы юзаете, на какой скорости?
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 09:38   #7
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от syv Посмотреть сообщение
А это, чтобы не вникать, автоматом, так сказать.
Хуже не будет.
Есть варианты, где руками надо...
просто человек может подумать, что здесь так и надо делать
Greg вне форума   Ответить с цитированием
Старый 11.03.2012, 09:42   #8
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
Первые байты портиться не должны.
Интересно, а не кого не смутило вот это
Код:
	TXREG = data;
	TXREG = data >> 8 ;
?
Может, всё-таки, второй байт нужно записывать когда регистр TXREG освободится ?
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 09:53   #9
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Интересно, а не кого не смутило вот это
Код:
    TXREG = data;
    TXREG = data >> 8 ;
?
Может, всё-таки, второй байт нужно записывать когда регистр TXREG освободится ?
Я хотел тоже на этом акцентировать внимание, но с утра времени не было. По идее, это может прокатить, а может и нет. Все зависит от того, как быстро из TXREG в shift регистр упадут данные.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 09:54   #10
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Интересно, а никого не смутило вот это
Код:
    TXREG = data;
    TXREG = data >> 8 ;
?
Может, всё-таки, второй байт нужно записывать когда регистр TXREG освободится ?
посмотрите внимательно даташит, там буфер на два байта, даже картинка есть соответствующая. Т.е. на самом деле, "когда освободится" (буфер), нужно записывать первый байт.
Greg вне форума   Ответить с цитированием
Старый 11.03.2012, 10:13   #11
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от killerbb Посмотреть сообщение
Доброе время суток. Я недавно занимаюсь с контроллерами, и столкнулся с проблемой на UART.
По даташиту разобрался со скоростью сконфигурировал передатчик. Через Pickit2 uart tool проверяю то, что он посылает.
Например шлю два байта 0xf0f0 все работает правильно.
Но если посылаю что то другое без F, например 4b - буква k в ASCII приходят вообще рандомные байты.
Контроллер pic16f690 на плате от Microchip starter kit. Вот код.

Код:
#include <htc.h>
#define _XTAL_FREQ 4000000
unsigned int data;
void interrupt isr()
{
    GIE = 0;
    if(TXIF)
    {
    TXREG = data;
    TXREG = data >> 8 ;
    while(!TXIF) continue;
    TXIE  = 0;
    }
    
}

void init(void)
{
    SPBRG = 25;
    BRGH = 0;
    BRG16 = 0;    
    SYNC = 0;
    SPEN = 1;
    TX9 = 0;
    TXEN = 1;
    //CREN = 1;
    GIE = 1;
    PEIE = 1;
    TXIE = 0;
    //RCIE = 1;
    TRISB = 0;
    TRISC = 0;
    PORTC = 0;
    OPTION_REG += 128; 
    WPUB = 80;
}

void main(void)
{
    init();

    data = 7557; // тут тупо для проверки пишу то что посылать
    TXIE = 1;
    RC1 = 1;
        while(1)
        {
            if(TXIF) TXIE = 1; // типо спам бота
            __delay_ms(500);
        
        }
}
В принципе косяк понятен где.
В основном цикле, записав в data=7557, а затем установив TXIE=1, вы сразу попадете в обработчик прерывания. Там , происходит отправка первого байта (по идее первый должен быть всегда правильным.) Второй байт data все же просится писать в таком стиле:
Код:
    TXREG = data;
    while(!TXIF) continue;
    TXREG = data >> 8 ;
    while(!TXIF) continue;
    TXIE  = 0;
Выпрыгнув из прерывания, мы должны знать, что у нас еще передается байт из сдвигового регистра. И тут сразу же мы натыкаемся на проверку
Код:
   if(TXIF) TXIE = 1; // типо спам бота
Которая конечно же сработает. Т.к. TXREG у нас уже пустой.
Попадаем опять в прерывания. Предыдущий байт еще из сдвигового регистра еще не успел выйти. А мы еще 2 байта в TXREG плюнули. А это уже переполнение буфера на передачу. Не помню точно по какому принципу будет формироваться байт на передачу, если в TXREG перетереть, старый, еще непереданный байт. Вторйо цикл и дальше, по идее должен работать, т.к. пауза начнет отрабатывать и за это время сдвиговый регистр успеет отдать данные.
Если все оставить как Вы сделали (это далеко неправильный вариант, но вполне будет работать), то нужно паузу в основном цикле поставить перед проверкой.
Вот так:
Код:
        while(1)
        {
            __delay_ms(500);
             if(TXIF) TXIE = 1; // типо спам бота
        }
И обязательно в прерываниях после первой записи в TXREG, контролировать свободен он или нет, как это сделать я писал выше.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 10:26   #12
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от Greg Посмотреть сообщение
посмотрите внимательно даташит, там буфер на два байта, даже картинка есть соответствующая. Т.е. на самом деле, "когда освободится" (буфер), нужно записывать первый байт.
Насколько я помню, передающий буфер на 2 значения имеется в виду, шифт регистр и регистр TXREG. Т.е. реально буфер то на 1 значение, но т.к. первое значение сразу падает в шифт регистр, то получается, что подряд можно записать сразу 2 байта. Но единственный минус, нужно, чтобы шифт сначала был пустой.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 10:29   #13
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
По идее, это может прокатить, а может и нет. Все зависит от того, как быстро из TXREG в shift регистр упадут данные.
Из TXREG в Shift данные падают по тактированию Shift-регистра, т.е. после делителя, настраиваемого с помощью SPBRG и BRGH. Так что мало вероятно что такт попадёт между командами
Код:
TXREG = data;
и
Код:
TXREG = data >> 8 ;
. И, естественно, на это нельзя надеятся. Необходимо дождаться когда данные туда упадут, и TXREG освободится.

Цитата:
Сообщение от Greg Посмотреть сообщение
посмотрите внимательно даташит, там буфер на два байта, даже картинка есть соответствующая.
Это Вы мне или ТС'у ?
Вы меня "заставили" заглянуть в ДШ. Если честно, ничего нового я там не увидел. TSR как был 1-байтный, так и остался

PS: Упс, 2AplusA уже всё расписал, пока я тут даташиты качал
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 10:33   #14
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
Насколько я помню, передающий буфер на 2 значения имеется в виду, шифт регистр и регистр TXREG. Т.е. реально буфер то на 1 значение, но т.к. первое значение сразу падает в шифт регистр, то получается, что подряд можно записать сразу 2 байта. Но единственный минус, нужно, чтобы шифт сначала был пустой.
да, это я и имел в виду под словами "первый байт".
НА самом деле, как вы правильно заметили, техника рискованная, там полно еррат на эту тему было, что у совсем старых 16-х камней, что у поновее 18.
Т.е. по хорошему, надо не выпендриваться, а слать тупо байты по прерываниям (вход-выход из прерывания автоматически создадут нужную задержку).
Greg вне форума   Ответить с цитированием
Старый 11.03.2012, 10:36   #15
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Из TXREG в Shift данные падают по тактированию Shift-регистра, т.е. после делителя, настраиваемого с помощью SPBRG и BRGH. Так что мало вероятно что такт попадёт между командами
Код:
TXREG = data;
и
Код:
TXREG = data >> 8 ;
. И, естественно, на это нельзя надеятся. Необходимо дождаться когда данные туда упадут, и TXREG освободится.
Код:
Once the TXREG
register transfers the data to the TSR register (occurs
in one TCY)
Это из оригинального даташита на 16 PIC. Т.е. за 1 командный цикл Tcy, данные упадут в TSR. И на SPBRG никак это не завязано.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 10:44   #16
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
ы меня "заставили" заглянуть в ДШ. Если честно, ничего нового я там не увидел. TSR как был 1-байтный, так и остался
смотреть надо картинку с подписью "back to back transmission".
никто вроде и не говорил, что tsr многобайтный, имелось в виду, что в регистр TXREG можно смело писать два байта подряд.
Greg вне форума   Ответить с цитированием
Старый 11.03.2012, 10:49   #17
2AplusA
Senior Member
 
Аватар для 2AplusA
 
Регистрация: 26.02.2007
Адрес: Penza
Возраст: 36
Сообщений: 1,385
Вес репутации: 1267/64
2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of2AplusA has much to be proud of
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
RC1 = 1;
Проглядел вот эту запись. Если это включение передатчика RS -485, то тогда совсем все понятно, почему у Вас белиберда принимается. Т.к. у Вас передача включится, где-то на моменте передачи второго байта.
__________________
Лучше день потерять, потом за час долететь!
2AplusA вне форума   Ответить с цитированием
Старый 11.03.2012, 11:03   #18
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
Сообщение от 2AplusA Посмотреть сообщение
за 1 командный цикл Tcy, данные упадут в TSR. И на SPBRG никак это не завязано.
Действительно.
Смутило то, что на диаграмме запись 2-ого байта идёт после очередного такта от BRG (shift clock). А на то, что флаг поднимается сразуже, после записи 1-ого байта, внимание никогда не обращал
Виноват, исправимся
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 11:16   #19
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,578
Вес репутации: 5056/154
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Виноват, исправимся
да, век живи - век учись...
только если надумаете такое использовать, поднимите все ерраты, там в жизни не всё так гладко было. Могли передаваться лишние байты (с нулевым значением) или надо было всё-таки делать паузу хотя бы на один ноп, я-то так уверенно говорил потому, что в данном конкретном случае сдвиг, реальный или мнимый (чтение старшего байта), такую паузу создавал.
Greg вне форума   Ответить с цитированием
Старый 11.03.2012, 11:32   #20
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
Сообщение от Greg Посмотреть сообщение
да, век живи - век учись...
Да уж, эт точно... Никогда бы не подумал, что я в этом модуле что-то не знаю.
Но, в любом случае, я так никогда не делаю. Всегда передаю в прерывании побайтно. Перед отправкой инициализирую указатель на передаваемую область, переменную кол-ва передаваемых байт, обнуляю счётчик переданных байт и разрешаю прерывание. В прерывании увеличиваю счётчик с проверкой на равность кол-ву байт и, по смещению указателя, передаю байт. Как счётчик насчитал (сравнялся с переменной кол-ва байт) - запрет прерываний от уарта.
Практически всегда создаю отдельный модуль для работы с уартом.

Последний раз редактировалось al.kl; 11.03.2012 в 11:41.
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 14:45   #21
killerbb
Junior Member
 
Регистрация: 10.03.2012
Возраст: 20
Сообщений: 7
Вес репутации: 100/0
killerbb will become famous soon enoughkillerbb will become famous soon enough
По умолчанию Re: Странная работа UART

Странно но даже исправив эту ошибку не работает передача. Залил картинки с лог анализатора, в обоих случаях передавал 0xfa 1 байт, просто записывая его в data и включая прерывания, задержка стоит для того, чтобы программа не начиналась заного и байты разделялись между собой.


И судя по ним ошибка не в скорости и количестве байтов. Ведь здесь я
посылаю только 1.
Миниатюры
1.png  

Последний раз редактировалось killerbb; 11.03.2012 в 14:51.
killerbb вне форума   Ответить с цитированием
Старый 11.03.2012, 14:48   #22
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
исправив эту ошибку не работает передача
Какую Вы ошибку исправили ? Что сделали ?

По диаграмме сложно о чём-то говорить. Неизвестна скорость передачи и цена деления шкалы.

Последний раз редактировалось al.kl; 11.03.2012 в 14:53.
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 14:58   #23
killerbb
Junior Member
 
Регистрация: 10.03.2012
Возраст: 20
Сообщений: 7
Вес репутации: 100/0
killerbb will become famous soon enoughkillerbb will become famous soon enough
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Какую Вы ошибку исправили ? Что сделали ?

По диаграмме сложно о чём-то говорить. Неизвестна скорость передачи и цена деления шкалы.
Ошибку посылки второго байта я убрал, тоесть там на схеме только 1 идет, скорость я ставил из таблицы нетиповую , в даташите для моего кварца 4 МГц скорость 10417 для работы без ошибок.По картинке можно определить ширину 1 бита, должно передаватся 11 11 10 10 = 0xfa но там явно другое. Причем скорость тут особо не влияет если на анализаторе смотреть.
killerbb вне форума   Ответить с цитированием
Старый 11.03.2012, 15:12   #24
al.kl
Senior Member
 
Регистрация: 11.10.2011
Возраст: 22
Сообщений: 233
Вес репутации: 750/31
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: Странная работа UART

Цитата:
должно передаватся 11 11 10 10 = 0xfa
Ну всё правильно. Передача идёт с младшего бита, т.е. 01011111
al.kl вне форума   Ответить с цитированием
Старый 11.03.2012, 15:20   #25
killerbb
Junior Member
 
Регистрация: 10.03.2012
Возраст: 20
Сообщений: 7
Вес репутации: 100/0
killerbb will become famous soon enoughkillerbb will become famous soon enough
По умолчанию Re: Странная работа UART

Цитата:
Сообщение от al.kl Посмотреть сообщение
Ну всё правильно. Передача идёт с младшего бита, т.е. 01011111
Попробовал в дату записывать байты младшим впред с юарт тула смотрю. Послыаю 0x69 если наоборот 0x4b приходит
RX: FF
RX: FF
RX: FB
RX: FD
RX: FB
killerbb вне форума   Ответить с цитированием
Ответ

Метки
pic, uart


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с прерыванием от UART на ds pic 30f2011 Zlodei Продукция MICROCHIP 2 14.08.2011 01:33
Проблема с UART Alex_Al Продукция MICROCHIP 6 23.02.2011 15:40
Странная работа MC34063 SomlicH Источники питания и силовая электроника 4 08.11.2009 18:01
Проблема с UART и dsPic33 kotlyara Продукция MICROCHIP 6 05.01.2009 16:18
программный UART в microC alexaf Продукция MICROCHIP 4 28.12.2007 16:26


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


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