В настоящее время я работаю с контроллером серии Microchip PIC12LF1822. В этом мне нужно настроить EUSART в 8-битном асинхронном режиме и генерацию импульсов 1 МГц с использованием ШИМ ...
Сначала я начал с отправки и получения данных через UART ... Но после настройки, включая выбор генератора в регистре конфигурации, мой код не работает и не может отправить символ через вывод tx (RA0).
Я глубоко проанализировал, но не могу найти для этого решения. Кто-нибудь может предложить решить эту проблему.
Ниже я вставил свой код,
#include<htc.h>
#include <PIC12LF1822.H>
#include "BIPOLAR_SERIAL.C"
#define _XTAL_FREQ 12000000
//Configuration word 1 register for oscillator selection
__CONFIG(CP_OFF & BOREN_OFF & WDTE_OFF & IESO_OFF & FCMEN_OFF & PWRTE_ON & CPD_OFF & FOSC_XT);
//Configuration word 2 register for disabling Low-Voltage program
__CONFIG(LVP_OFF);
void PWM_Duty_Cyle(unsigned int duty_cyc)
{
CCPR1L = duty_cyc>>2;
CCP1CON &= 0xcf;
CCP1CON |= ((duty_cyc & 0x03)<<4);
}
void PWM_Init()
{
TRISA2 = 0; //PWM Pin as output
CCP1CON = 0x0c; //PWM mode: P1A, P1C active-high; P1B, P1D active-high
PR2 = 0x00; //Timer Period Configuration
T2CON = 0x00; //Timer2 Prescale as 1
PWM_Duty_Cyle(0); //Initialize PWM to 0 percent duty cycle
T2CON |= 0x04; //Enable Timer2
}
void main()
{
APFCON = 0;
ANSA0=0;ANSA1=0;ANSA2=0;
serial_init();
serial_tx('S');
// PWM_Init();
// serial_str("PIC12LF1822_TEST");
while(1)
{
serial_tx('A');
serial_tx(' ');
}
}
В приведенном выше коде я не могу получить символ «A», а также «S».
Примечание: я использую 12 МГц как Fosc, и я установил скорость передачи в соответствии с этим .. (SPBRG = 77 для baud = 900, brgh = 1)