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

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

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

Ответ
 
Опции темы Опции просмотра
Старый 11.08.2013, 15:28   #1
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию работа с UART dspic33

Здравствуйте форумчане. помогите с настройкой UART на dsPIC33FJ128MC804. нашел на форуме тему http://www.microchip.su/showthread.php?t=15259&page=2 и по его примеру пытаюсь сделать так же:
Код:


#include <htc.h>

#include "main.h"



#include "dspic33fj128mc804.h"



__CONFIG(FOSCSEL, FRCPLL & IESODIS  ); 
__CONFIG(FOSC, FCKSMEN & OSC2OUT & POSCDIS );
__CONFIG(FWDT, WDTDIS ); 
__CONFIG(FPOR, PWRT128  );  
//__CONFIG(FICD,  DEBUGEN & ICS1 & ICS2 ); 


#define FCY 40000000
#define BAUDRATE 115200
#define BRGVAL ((FCY/BAUDRATE)/16)-1

void main(void){

// OSCCON = 0b0111011100000000;

	


// Configure Oscillator to operate the device at 40 MHz
// Fosc = Fin * M/(N1 * N2), Fcy = Fosc/2
// Fosc = 8M * 40(2 * 2) = 80 MHz for 8M input clock
PLLFBD = 40;// M = 40
CLKDIVbits.PLLPOST = 0; // N1 = 2
CLKDIVbits.PLLPRE = 0; // N2 = 2
OSCTUN = 0b001110; // Tune FRC oscillator, if FRC is used
RCONbits.SWDTEN = 0; // Disable Watch Dog Timer - Отключить Сторожевой таймер
while(OSCCONbits.LOCK!= 1); // Wait for PLL to lock - Подождите, пока PLL для блокировки



//Настройка портов

	LATA = 0x0;			//Установка всех портов в "0"
	LATB = 0x0;				//
	LATC = 0b0000000000000000;				//
	AD1PCFGL = 0xFFFF;		//
	ODCA = 0x0;		//Настройка открытых коллектроров портов
	ODCB = 0x0;		//
	ODCC = 0x0;		//
	TRISA = 0x0;	//Настройка направления портов
	TRISB = 0x0000000000000000;
	TRISC = 0b0000000000010000;
//Инициализация прерываний



PORTA = 0x0;
PORTB = 0x0;
PORTC = 0x0;



// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 6;
RPOR2bits.RP5R = 0b00011;



U1MODEbits.STSEL = 0;// 1 Stop bit
U1MODEbits.PDSEL = 0;// No Parity, 8 data bits
U1MODEbits.ABAUD = 0;// Auto-Baud Disabled
U1MODEbits.BRGH = 0;// Low-Speed mode
U1BRG = BRGVAL; // BAUD Rate Setting for 9600

U1STAbits.UTXISEL0 = 0; // Interrupt after one TX Character is transmitted
U1STAbits.UTXISEL1 = 0;

U1STAbits.URXISEL0 = 0;// Interrupt after one RX character is received;
U1STAbits.URXISEL1 = 0;// 

U1MODEbits.UARTEN = 1;// Enable UART



while(1){


U1TXREG = 0xee;
U1STAbits.UTXEN = 1; // Enable UART TX


}



}
только Advanced Serial Port Monitor пишет: Ошибка приема данных.
использую компилятор HI-TECH C for dsPIC-PIC24 V9.62 и переходник на FTDI232R
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 10:53   #2
Vlad27
Member
 
Регистрация: 27.02.2007
Адрес: Polotsk, Belarus
Сообщений: 72
Вес репутации: 205/39
Vlad27 has a spectacular aura aboutVlad27 has a spectacular aura aboutVlad27 has a spectacular aura about
По умолчанию Re: работа с UART dspic33

Не вижу в коде, где при назначении выводов UARTа определена разлочка (запись в регистр OSCCON соответствующей комбинации). Дэйтшит 70291G, параграф 11.6.3.1
Vlad27 вне форума   Ответить с цитированием
Старый 12.08.2013, 13:23   #3
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

я правильно понял нужно сделать так ?:

OSCCON = 0x46;
OSCCON = 0x57;


while(OSCCONbits.IOLOCK!= 1); //



// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 6;
RPOR2bits.RP5R = 0b00011;
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 13:29   #4
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/117
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
я правильно понял нужно сделать так ?:

OSCCON = 0x46;
OSCCON = 0x57;


while(OSCCONbits.IOLOCK!= 1); //



// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 6;
RPOR2bits.RP5R = 0b00011;
Код:
/*Разблокировать настройку выводов RPX*/
	__builtin_write_OSCCONL(OSCCON & ~(1<<6));

/*SDO1 к ноге RP5 */
	BFA(BFA_WR,  RPOR2, RP5R,  0x7);

/*SCK1 к ноге RP6 */
	BFA(BFA_WR,  RPOR3, RP6R,  0x8);

/*SDO2 к ноге RP23 */
	BFA(BFA_WR,  RPOR11, RP23R,  0xa);

/*SCK2 к ноге RP24 */
	BFA(BFA_WR,  RPOR12, RP24R,  0xb);

/*RxD к ноге RP12 */
	BFA(BFA_WR,  RPINR18, U1RXR,  12);

/*TxD к ноге RP13 */
	BFA(BFA_WR,  RPOR6, RP13R,  3);  

/*RTS к ноге RP11 */
//	BFA(BFA_WR,  RPOR5, RP11R,  4);

/*CTS к ноге RP10 */
//	BFA(BFA_WR,  RPINR18, U1CTSR,  10);

#ifdef ZigBee
/*RxD2 к ноге RP3 */
	BFA(BFA_WR,  RPINR19, U2RXR,  3);

/*TxD2 к ноге RP2 */
	BFA(BFA_WR,  RPOR1, RP2R,  5);
#endif

/*Заблокировать настройку выводов RPX*/
	__builtin_write_OSCCONL(OSCCON | (1<<6));
__________________

Vanizma вне форума   Ответить с цитированием
Старый 12.08.2013, 13:44   #5
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

а что делает функция __builtin_write_OSCCONL? она на HI-TECH C for dsPIC-PIC24 V9.62 есть ?
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 14:20   #6
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

не пойму что нужно сделать? вроде в даташите написано:
Цитата:
To set or clear the IOLOCK bit, a specific command
sequence must be executed:
1. Write 0x46 to OSCCON<7:0>.
2. Write 0x57 to OSCCON<7:0>.
3. Clear (or set) the IOLOCK bit as a single
operation.
и я делаю так правильно?:
Цитата:
OSCCON = 0x46;
OSCCON = 0x57;

OSCCONbits.IOLOCK = 0;

// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 6;
RPOR2bits.RP5R = 0b00011;

OSCCON = 0x46;
OSCCON = 0x57;

OSCCONbits.IOLOCK = 1;
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 15:45   #7
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/117
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
не пойму что нужно сделать? вроде в даташите написано:

и я делаю так правильно?:
посмотри дисасм - тут вроде команды должны за один такт их выполнения быть, да и
Код:
3. Clear (or set) the IOLOCK bit as a single
operation.
а у тебя наверняка там огород компилятор нагородил.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 12.08.2013, 16:01   #8
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

на дисасме :
Цитата:

44: OSCCON = 0x46;
0FF3C 200466 mov.w #0x46,0x000c
0FF3E 883A16 mov.w 0x000c,0x0742
45: OSCCON = 0x57;
0FF40 200576 mov.w #0x57,0x000c
0FF42 883A16 mov.w 0x000c,0x0742
46:
47: OSCCONbits.IOLOCK = 0;
0FF44 A9C742 bclr.b 0x0742,#6
48:
49: // Назначение переопределямых линий
50: // UART1
51: RPINR18bits.U1RXR = 6;
0FF46 200066 mov.w #0x6,0x000c
0FF48 206A47 mov.w #0x6a4,0x000e
0FF4A 2001F4 mov.w #0x1f,0x0008
0FF4C 620206 and.w 0x0008,0x000c,0x0008
0FF4E DD2240 sl 0x0008,#0,0x0008
0FF50 2FFE05 mov.w #0xffe0,0x000a
0FF52 628297 and.w 0x000a,[0x000e],0x000a
0FF54 728B84 ior.w 0x000a,0x0008,[0x000e]
52: RPOR2bits.RP5R = 0b00011;
0FF56 200036 mov.w #0x3,0x000c
0FF58 206C47 mov.w #0x6c4,0x000e
0FF5A 2001F4 mov.w #0x1f,0x0008
0FF5C 620206 and.w 0x0008,0x000c,0x0008
0FF5E DD2248 sl 0x0008,#8,0x0008
0FF60 2E0FF5 mov.w #0xe0ff,0x000a
0FF62 628297 and.w 0x000a,[0x000e],0x000a
0FF64 728B84 ior.w 0x000a,0x0008,[0x000e]
53:
54: OSCCON = 0x46;
0FF66 200466 mov.w #0x46,0x000c
0FF68 883A16 mov.w 0x000c,0x0742
55: OSCCON = 0x57;
0FF6A 200576 mov.w #0x57,0x000c
0FF6C 883A16 mov.w 0x000c,0x0742
56:
57: OSCCONbits.IOLOCK = 1;
0FF6E A8C742 bset.b 0x0742,#6
58:
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 16:18   #9
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/117
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
на дисасме :
и что, не переназначается?
__________________

Vanizma вне форума   Ответить с цитированием
Старый 12.08.2013, 16:40   #10
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

нет может и переназначается не знаю(как проверить?) но только Advanced Serial Port Monitor как и было пишет: Ошибка приема данных(Строка Break).
Lab №1 вне форума   Ответить с цитированием
Старый 12.08.2013, 16:50   #11
Vlad27
Member
 
Регистрация: 27.02.2007
Адрес: Polotsk, Belarus
Сообщений: 72
Вес репутации: 205/39
Vlad27 has a spectacular aura aboutVlad27 has a spectacular aura aboutVlad27 has a spectacular aura about
По умолчанию Re: работа с UART dspic33

Вот мой код дизассемблера, компилятор С30:
Код:
45:                  __builtin_write_OSCCONL(OSCCON & 0xFFBF); /* снимаем бит защиты от перезаписи */
  0D66  803A10     mov.w 0x0742,0x0000
  0D68  A16000     bclr 0x0000,#6
  0D6A  200464     mov.w #0x46,0x0008
  0D6C  200573     mov.w #0x57,0x0006
  0D6E  207421     mov.w #0x742,0x0002
  0D70  784884     mov.b 0x0008,[0x0002]
  0D72  784883     mov.b 0x0006,[0x0002]

47:                  UART1RX = 3;            /* прием UART              -> вывод RP3  (RB3) */
  0D80  BFC6A4     mov.b 0x06a4,0x0000
  0D82  604001     and.b 0x0000,0x0002,0x0000
  0D84  B34030     ior.b #0x3,0x0000
  0D86  B7E6A4     mov.b 0x0000,0x06a4

48:                  UART1TX = 3;            /* передача UART           -> вывод RP16 (RC0) */
  0D88  BFC6D0     mov.b 0x06d0,0x0000
  0D8A  604001     and.b 0x0000,0x0002,0x0000
  0D8C  B34030     ior.b #0x3,0x0000
  0D8E  B7E6D0     mov.b 0x0000,0x06d0

52:                  __builtin_write_OSCCONL(OSCCON | 0x40); /* выставляем бит защиты от перезаписи */
  0DA8  803A10     mov.w 0x0742,0x0000
  0DAA  A06000     bset 0x0000,#6
  0DAC  207425     mov.w #0x742,0x000a
  0DAE  784A84     mov.b 0x0008,[0x000a]
  0DB0  784A83     mov.b 0x0006,[0x000a]
  0DB2  784A80     mov.b 0x0000,[0x000a]
Vlad27 вне форума   Ответить с цитированием
Старый 13.08.2013, 09:25   #12
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

в асме не селен. установил MC30 так же не работает.
Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 09:47   #13
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

в асме не селен. установил MC30 так же не работает. делаю так:
Цитата:
#include <stdio.h>
#include <stdlib.h>
#include <pwm.h>
#include <math.h>
#include <rtcc.h>
#include <uart.h>
#include <p33FJ128MC804.h>



_FOSCSEL(FNOSC_FRCPLL) /* Выбираем в качестве начального источника часов МК RC-осциллятор */
_FOSC(OSCIOFNC_OFF & FCKSM_CSECMD & IOL1WAY_OFF) /* Режима переключения часов МК нет,используем первичный осциллятор*/
_FWDT(FWDTEN_OFF) /* Выключить сторожевой таймер */
_FPOR(FPWRT_PWR128) /* Задержка для стабилизации напряжения питания */
_FICD(ICS_PGD1 & JTAGEN_OFF)



#define FCY 40000000
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1


int main()
{



// Configure Oscillator to operate the device at 40 MHz
// Fosc = Fin * M/(N1 * N2), Fcy = Fosc/2
// Fosc = 8M * 40(2 * 2) = 80 MHz for 8M input clock
PLLFBD = 40;// M = 40
CLKDIVbits.PLLPOST = 0; // N1 = 2
CLKDIVbits.PLLPRE = 0; // N2 = 2
OSCTUN = 0; // Tune FRC oscillator, if FRC is used
RCONbits.SWDTEN = 0; // Disable Watch Dog Timer - Отключить Сторожевой таймер
while(OSCCONbits.LOCK!= 1); // Wait for PLL to lock - Подождите, пока PLL для блокировки




//Настройка портов

LATA = 0x0; //Установка всех портов в "0"
LATB = 0x0; //
LATC = 0b0000000000000000; //
AD1PCFGL = 0xFFFF; //
ODCA = 0x0; //Настройка открытых коллектроров портов
ODCB = 0x0; //
ODCC = 0x0; //
TRISA = 0x0; //Настройка направления портов
TRISB = 0x0000000000000000;
TRISC = 0b0000000000010000;
//Инициализация прерываний



PORTA = 0x0;
PORTB = 0x0;
PORTC = 0x0;



/*Разблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON & ~(1<<6));




/*RxD к ноге RP12 */
// BFA(BFA_WR, RPINR18, U1RXR, 12);

/*TxD к ноге RP13 */
// BFA(BFA_WR, RPOR6, RP13R, 3);






// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 12;
RPOR6bits.RP13R = 3;



/*Заблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON | (1<<6));




U1MODEbits.STSEL = 0;// 1 Stop bit
U1MODEbits.PDSEL = 0;// No Parity, 8 data bits
U1MODEbits.ABAUD = 0;// Auto-Baud Disabled
U1MODEbits.BRGH = 0;// Low-Speed mode
U1BRG = BRGVAL; // BAUD Rate Setting for 9600

U1STAbits.UTXISEL0 = 0; // Interrupt after one TX Character is transmitted
U1STAbits.UTXISEL1 = 0;

U1STAbits.URXISEL0 = 0;// Interrupt after one RX character is received;
U1STAbits.URXISEL1 = 0;//

U1TXREG = 0x1;
U1MODEbits.UARTEN = 1;// Enable UART



while (1){

U1TXREG = 0x1;

}

}
+ не понял как подключить BFA()
Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 10:01   #14
alexdos
Senior Member
 
Регистрация: 12.09.2007
Адрес: Херсон
Возраст: 45
Сообщений: 988
Вес репутации: 535/49
alexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of light
По умолчанию Re: работа с UART dspic33

И что Вы хотите увидать "Advanced Serial Port Monitor" при вот таком способе передачи ?

Код:
while (1){

U1TXREG = 0x1;

}
Организуйте правильно передачу для начала.
alexdos вне форума   Ответить с цитированием
Старый 13.08.2013, 10:12   #15
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

правильно это так?:
Цитата:

#include <stdio.h>
#include <stdlib.h>
#include <pwm.h>
#include <math.h>
#include <rtcc.h>
#include <uart.h>
#include <p33FJ128MC804.h>

_FOSCSEL(FNOSC_FRCPLL) /* Выбираем в качестве начального источника часов МК RC-осциллятор */
_FOSC(OSCIOFNC_OFF & FCKSM_CSECMD & IOL1WAY_OFF) /* Режима переключения часов МК нет,используем первичный осциллятор*/
_FWDT(FWDTEN_OFF) /* Выключить сторожевой таймер */
_FPOR(FPWRT_PWR128) /* Задержка для стабилизации напряжения питания */
_FICD(ICS_PGD1 & ICS_PGD2 & JTAGEN_OFF)

#define FCY 40000000
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1

void __attribute__((interrupt, no_auto_psv)) _U1TXInterrupt(void)
{
IFS0bits.U1TXIF = 0; // clear TX interrupt flag
U1TXREG = 'a'; // Transmit one character
}

int main()
{
int i;


// Configure Oscillator to operate the device at 40 MHz
// Fosc = Fin * M/(N1 * N2), Fcy = Fosc/2
// Fosc = 8M * 40(2 * 2) = 80 MHz for 8M input clock
PLLFBD = 40;// M = 40
CLKDIVbits.PLLPOST = 0; // N1 = 2
CLKDIVbits.PLLPRE = 0; // N2 = 2
OSCTUN = 0; // Tune FRC oscillator, if FRC is used
RCONbits.SWDTEN = 0; // Disable Watch Dog Timer - Отключить Сторожевой таймер
while(OSCCONbits.LOCK!= 1); // Wait for PLL to lock - Подождите, пока PLL для блокировки

//Настройка портов

LATA = 0x0; //Установка всех портов в "0"
LATB = 0x0; //
LATC = 0b0000000000000000; //
AD1PCFGL = 0xFFFF; //
ODCA = 0x0; //Настройка открытых коллектроров портов
ODCB = 0x0; //
ODCC = 0x0; //
TRISA = 0x0; //Настройка направления портов
TRISB = 0x0000000000000000;
TRISC = 0b0000000000010000;
//Инициализация прерываний

PORTA = 0x0;
PORTB = 0x0;
PORTC = 0x0;

/*Разблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON & ~(1<<6));

/*RxD к ноге RP12 */
// BFA(BFA_WR, RPINR18, U1RXR, 12);

/*TxD к ноге RP13 */
// BFA(BFA_WR, RPOR6, RP13R, 3);

// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 12;
RPOR6bits.RP13R = 3;


/*Заблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON | (1<<6));


U1MODEbits.STSEL = 0; // 1 Stop bit
U1MODEbits.PDSEL = 0; // No Parity, 8 data bits
U1MODEbits.ABAUD = 0; // Auto-Baud Disabled
U1MODEbits.BRGH = 0; // Low Speed mode
U1BRG = BRGVAL; // BAUD Rate Setting for 9600
U1STAbits.UTXISEL0 = 0; // Interrupt after one TX Character is transmitted
U1STAbits.UTXISEL1 = 0;
IEC0bits.U1TXIE = 1; // Enable UART TX Interrupt
U1MODEbits.UARTEN = 1; // Enable UART
U1STAbits.UTXEN = 1; // Enable UART TX


/* wait at least 104 usec (1/9600) before sending first char */
for(i = 0; i < 4160; i++)
{
Nop();
}
U1TXREG = 'a'; // Transmit one character

while (1){
}

}



и Port Monitor выдает ошибку даже когда я не передаю данные
Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 10:25   #16
alexdos
Senior Member
 
Регистрация: 12.09.2007
Адрес: Херсон
Возраст: 45
Сообщений: 988
Вес репутации: 535/49
alexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of light
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
правильно это так?:


и Port Monitor выдает ошибку даже когда я не передаю данные
Перед загрузкой U1TXREG, в особенности в цикле, нужно проверять а пуст ли он. Передача данных она ведь занимает какое то время, приблизительно 1 мS (BAUD Rate Setting for 9600). А за это время Вы в цикле напихаете в U1TXREG очень много всякого.
alexdos вне форума   Ответить с цитированием
Старый 13.08.2013, 10:57   #17
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/117
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
правильно это так?:


и Port Monitor выдает ошибку даже когда я не передаю данные
что в U1BRG = BRGVAL ?
не нравятся мне длинные константы без UL, еще и операции с ними. Не обрезает ли препроцессор?
__________________

Vanizma вне форума   Ответить с цитированием
Старый 13.08.2013, 11:11   #18
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

все нормально вроде (записывается 259):
Цитата:
123: U1BRG = BRGVAL; // BAUD Rate Setting for 9600
0035E 201030 mov.w #0x103,0x0000
00360 881140 mov.w 0x0000,0x0228
и Port Monitor выдает ошибку даже когда я просто сделаю вот такую конфигурацию


Цитата:
// Configure Oscillator to operate the device at 40 MHz
// Fosc = Fin * M/(N1 * N2), Fcy = Fosc/2
// Fosc = 8M * 40(2 * 2) = 80 MHz for 8M input clock
PLLFBD = 42;// M = 40
CLKDIVbits.PLLPOST = 0; // N1 = 2
CLKDIVbits.PLLPRE = 0; // N2 = 2
OSCTUN = 0; // Tune FRC oscillator, if FRC is used
RCONbits.SWDTEN = 0; // Disable Watch Dog Timer - Отключить Сторожевой таймер
while(OSCCONbits.LOCK!= 1); // Wait for PLL to lock - Подождите, пока PLL для блокировки




//Настройка портов

LATA = 0x0; //Установка всех портов в "0"
LATB = 0x0; //
LATC = 0x0; //
AD1PCFGL = 0x0; //
ODCA = 0x0; //Настройка открытых коллектроров портов
ODCB = 0x0; //
ODCC = 0x0; //
TRISA = 0x0; //Настройка направления портов
TRISB = 0x0;
TRISC = 0x0;
//Инициализация прерываний



PORTA = 0x0;
PORTB = 0x0;
PORTC = 0x0;


/*Разблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON & ~(1<<6));

/*RxD к ноге RP12 */
// BFA(BFA_WR, RPINR18, U1RXR, 12);

/*TxD к ноге RP13 */
// BFA(BFA_WR, RPOR6, RP13R, 3);

// Назначение переопределямых линий
// UART1
RPINR18bits.U1RXR = 12;
RPOR6bits.RP13R = 3;


/*Заблокировать настройку выводов RPX*/
__builtin_write_OSCCONL(OSCCON | (1<<6));

Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 11:27   #19
alexdos
Senior Member
 
Регистрация: 12.09.2007
Адрес: Херсон
Возраст: 45
Сообщений: 988
Вес репутации: 535/49
alexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of lightalexdos is a glorious beacon of light
По умолчанию Re: работа с UART dspic33

Что то мне подсказывает, что нужно выкинуть этот "Advanced Serial Port Monitor" и попробовать как вариант "COM port toolkit".
Данные или передаются (пускай даже не верные) или не передаются. А то всё "ошибка", "ошибка". Какая такая ошибка "шибка приема данных(Строка Break)", кто передаёт строку? какую строку ?
alexdos вне форума   Ответить с цитированием
Старый 13.08.2013, 11:35   #20
Вова
Senior Member
 
Регистрация: 20.09.2008
Адрес: Гродно, Беларусь
Возраст: 29
Сообщений: 1,661
Вес репутации: 1877/65
Вова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant futureВова has a brilliant future
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от alexdos Посмотреть сообщение
Что то мне подсказывает, что нужно выкинуть этот "Advanced Serial Port Monitor" и попробовать как вариант "COM port toolkit".
Данные или передаются (пускай даже не верные) или не передаются. А то всё "ошибка", "ошибка". Какая такая ошибка "шибка приема данных(Строка Break)", кто передаёт строку? какую строку ?
А ещё лучше - купить что-то типа такого. Очень полезная вещь оказалась в хозяйстве.
Тоже вчера отлаживал обмен по UART, удобно - аж жуть.
__________________
Железяка должна быть такой: нажал кнопку — работает
Вова вне форума   Ответить с цитированием
Старый 13.08.2013, 11:43   #21
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

в COM port toolkit :
Код:
000001 11:42:23.104  00                                              .
000002 11:42:38.086  00                                              .
000003 11:42:40.260  F0 00                                           р.
и все.
Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 11:50   #22
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,139
Вес репутации: 4300/117
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: работа с UART dspic33

Цитата:
Сообщение от Lab №1 Посмотреть сообщение
в COM port toolkit :
Код:
000001 11:42:23.104  00                                              .
000002 11:42:38.086  00                                              .
000003 11:42:40.260  F0 00                                           р.
и все.
переходник какой UART<->COM. Проверен? работает?
__________________

Vanizma вне форума   Ответить с цитированием
Старый 13.08.2013, 12:05   #23
Lab №1
Junior Member
 
Регистрация: 28.06.2013
Возраст: 27
Сообщений: 26
Вес репутации: 100/15
Lab №1 will become famous soon enoughLab №1 will become famous soon enough
По умолчанию Re: работа с UART dspic33

сейчас перепроверил еще раз на другом устройстве все норм UART<->COM работает.
Lab №1 вне форума   Ответить с цитированием
Старый 13.08.2013, 12:23   #24
ILYAMP
Member
 
Регистрация: 11.12.2010
Адрес: Рязань
Сообщений: 61
Вес репутации: 208/25
ILYAMP has a spectacular aura aboutILYAMP has a spectacular aura aboutILYAMP has a spectacular aura about
По умолчанию Re: работа с UART dspic33

Вот обрати внимание:
твой код:
на дисасме :

Код:
44:                OSCCON = 0x46;
 0FF3C  200466     mov.w #0x46,0x000c
 0FF3E  883A16     mov.w 0x000c,0x0742
45:                OSCCON = 0x57;
 0FF40  200576     mov.w #0x57,0x000c
 0FF42  883A16     mov.w 0x000c,0x0742
46:                
47:                OSCCONbits.IOLOCK = 0;
 0FF44  A9C742     bclr.b 0x0742,#6
Вот дизассемблерный код встроенной функции:
Код:
 ...
0D66  803A10     mov.w 0x0742,0x0000   
0D68  A16000     bclr 0x0000,#6   
0D6A  200464     mov.w #0x46,0x0008   
0D6C  200573     mov.w #0x57,0x0006   
0D6E  207421     mov.w #0x742,0x0002
...
Разница в том, что у тебя команды записи идут НЕ ПОДРЯД (между ними вклиниваются другие) а во встроенной функции - ПОДРЯД
если почитать дэйташит - сразу понятна разница )))

Это комментарий к первому вопросу )))

Последний раз редактировалось ILYAMP; 13.08.2013 в 12:29. Причина: исправил оформление
ILYAMP вне форума   Ответить с цитированием
Старый 13.08.2013, 13:48   #25
Vlad27
Member
 
Регистрация: 27.02.2007
Адрес: Polotsk, Belarus
Сообщений: 72
Вес репутации: 205/39
Vlad27 has a spectacular aura aboutVlad27 has a spectacular aura aboutVlad27 has a spectacular aura about
По умолчанию Re: работа с UART dspic33

AD1PCFGL = 0x0 -?
Vlad27 вне форума   Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная работа UART killerbb Вопросы начинающих 29 12.03.2012 16:04
проблема с UART микроконтроллера dsPic33 iman85 Продукция MICROCHIP 1 19.03.2011 17:55
dsPIC33 UART RTS/CTS Vanizma Продукция MICROCHIP 0 19.04.2009 16:41
Проблема с UART и dsPic33 kotlyara Продукция MICROCHIP 6 05.01.2009 16:18
Помогите разобраться dsPIC33 + UART + dsPic33 + PROTEUS 7.4 kotlyara Продукция MICROCHIP 10 27.11.2008 07:29


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


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