2014-05-09 05:40 AM
2014-05-09 06:53 AM
PLEASE PLEASE Learn How to use the Format Code Block tools (Paintbrush [<>] icon)
So do any GPIO get enabled on Board2?void RCC_Configuration(void)
{
#if Board1
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
#endif
#if Board1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
#endif
#if Board2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
#endif
}
In C, NUL terminated strings take an extra character, and the compiler is capable of figuring out how long it is.
#if Board1
uint8_t imu_data[7] = ''SANJIBD'';
..
#if Board2
uint8_t ACK[12] = ''BABABABABABA'';
2014-05-11 10:19 PM
Thanks Clive and sorry too.
NOW I have made the configuration for both the boards, I mean to say both the boards are using USART1. For instance void RCC_Configuration(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); } Still not working2014-05-12 05:55 AM
Hi Clive
I found some problem like for board 2 USART_Init(USART1, &USART_InitStructure) in USART_init was missing after adding this line and for checking purpose I have made the BOARD 2 as transmitter (checked with the same board as PB6 of the same board as acting transmitter and receiver alternately I mean half duplex) and I have found that it is able to transmit and received interrupt is also occuring but it occur for once only. that means it comes to only case 0 . but if I checked the variable USART2_SRC it is showing 0 (in debuuger).....In the same way I have checked in the BOARD 1 it is perfectly fine with the received interrupt I mean it is entering in every cases but USRT1_SRC ,USART_CMD and other variables shows value zero rather than showing SA of SANJIBD (checked same like BOARD 2).2014-05-12 09:22 PM
Can anybody help me
2014-05-12 10:25 PM
Can anybody help me
It's going to be limited, I don't have the hardware, and can't afford the time/resources to mock it up. All I can offer is cursory static analysis. The PB6 (USART1_TX AF_0) and PA2 (USART2_TX AF_1) seem reasonable enough, but do require an STM32F030R8 device.2014-05-13 12:09 AM
Hi Clive
Thanks for your reply for understanding purpose I have separated the two codes as BOARD1 and BOARD 2 instead of testing on USART1 and USART2 of same board. I have attached the two files Please have a look Procedure of checking: BOARD 1 Code flash into the BOARD1 and cheked as PB6 is configured as half duplex so I thought no need of connecting wire with any other pin PB6 itself will act as transmit and after that received....... .In the same way I have checked the BOARD 2 (normally It should received mode first but for checking purpose I have configured it to transmit mode to check Problems are 1. In BOARD 1 I have checked data is getting send (txe buffer empty interrupt) ..Received interrupt is also taking place but there is no data in Uart1_Src ,Uart1_Dst,Uart1_Cmd variable ? All the variable are showing zero. 2 In BOARD2 I have checked data is getting send (txe buffer empty interrupt) ..Received interrupt is also taking place but it taking for 1 time I mean entering into case 1 . When I checked the variable Uart1_Src of case 0 it too is showing the value zero ________________ Attachments : BOARD_1_.c : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I01V&d=%2Fa%2F0X0000000bSF%2FOZniW0HJewFOM39hzvw2QrvyVseG_c0Ww81Mn7I8RYY&asPdf=falseBOARD_2.c : https://st--c.eu10.content.force.com/sfc/dist/version/download/?oid=00Db0000000YtG6&ids=0680X000006I01Q&d=%2Fa%2F0X0000000bSG%2F6YrJ3H0KhcaThVDyVkHnw8yduJ64ZW7WJMoqQFF3g2o&asPdf=false2014-05-13 07:16 AM
I don't like the if-then-else stuff in the IRQHandler, I guess there's opportunity there for it to not do quite what you want, or oscillate.
Ponder that the IT flags may be set even when you don't have the interrupt enabled, the enablement is a mask which allows the physical interrupt to be generated, but the bit can still assert as a mirror to the status. What's ''if(Uart1_Src == 'S'|'A')'' do because it's not checking for S or A I would not use TXE as an indicator that the data crossed the wire, just that a holding buffer has started transmission. You should look at the TC bit. You might want to test the Tx side, pushing the data into a full-duplex Rx. Look at the whole signal on a scope or logic analyzer, confirm you can see all the bytes you expect to be transmitted. Then test the Rx side sending stuff from a Terminal2014-05-14 03:27 AM
It is transmitting ( I have checked with the oscilloscope as well as terminal) but it is not receiving really I am not understanding what is the problem
2014-05-14 03:28 AM
It is transmitting ( I have checked with the oscilloscope as well as terminal) but it is not receiving really I am not understanding what is the problem