2017-12-17 27 views
1

현재 PIC를 배우고 있습니다. PIC18F46K22를 사용하고 있습니다. 블루투스 HC06 모듈을 사용하여 휴대 전화에서 PIC로 명령을 보내려고합니다. Arduino에서 모든 것이 정상적으로 작동합니다. 그러나, 내가 PIC로 전환하면 작동하지 않습니다. 연결 중이지만 Rx와 Tx는 수행하지 않습니다. arduino 코드와 비교 한 후, 유일한 문제는 blueooth 초기화입니다. 나는 블루투스의 Tx와 Rx 핀을 각각 PIC의 Rx와 Tx에 연결했다. 내가 읽은 모든 웹 사이트는 동일하며 이미 시도 했으므로 나는 무엇을해야할지 모릅니다. 제발, 어떤 도움이되는지에 대한 도움이 많이 들었습니다. 이것은 내 코드입니다Blueooth HC06 PIC18F와의 인터페이스

char receive; 
    void main(){ 

      TRISA=0x00; 
      ANSELA=0; 
      PORTA.F0=0; 
      UART1_Init(9600); 
      Delay_ms(100); 

      while(1){ 

      if (UART1_Data_Ready()) { 
      receive = UART1_Read(); 
       if (receive=='1') { 
        PORTA.F0=1; 
       } 
       else{ 
       PORTA.F0=0; 
         } 

          } 
            } 
             } 

답변

0

먼저 어떤 컴파일러를 사용하고 있지 않습니까? 코드를 디버깅 했나요? 어쩌면 시계 설정이 잘못되었을 수도 있습니다. 그리고 그것은 잘못된 통신 속도를 설정하기 때문입니다. uart 초기화를 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. 나는 microC 컴파일러를 사용하고있다. 이 언어는 PIC 용 microC입니다. 코드에서 볼 수있는 통신 속도는 9600입니다. 동일한 전송 속도는 Arduino에서도 작동합니다. 나는 더 높은 것을 시도했다. 그러나 그것은 또한 일을 didnt한다. 귀하의 경험에서, 실수는 UART 초기화 또는 것 같습니다? –

+0

먼저 데이터 수신에 대해 검토해야합니다. 변수 "receive"를 보았습니다. 또한, 귀하의 uart 설정은 무엇입니까? init 함수는 하나만 볼 수 있습니다. 시계 설정을 구성 할 수 있습니다. –

0

당신은 아주 간단한 실수를 저질렀습니다. PORTC는 기본적으로 아날로그 포트로 초기화됩니다. 따라서 Tx 및 Rx 핀은 기능을 수행하지 않습니다. PORTC를 아날로그 (디지털로 구성)로 비활성화하려면 PIC18F46K22를 사용하면이 기능은 ANSELC=0; 이 될 것입니다.

+0

고마워요! 그것은 효과가있다! 당신의 도움은 많이 감사합니다! –