Calcular el BAUD correcto para el ATMEGA168A

2

¿Cuál es la forma correcta de configurar el BAUD al programar un ATMEGA168A?

El siguiente código funciona bien, sin embargo, no sé exactamente qué hacer en caso de que decida trabajar con un BAUD superior, como 9600:

//CPU clock
#define F_CPU 1000000UL
//Baud
#define BAUD 1200
//Baud rate
#define BAUDRATE ((F_CPU)/(BAUD*16UL)-1)
    
pregunta Bob

1 respuesta

3

Hay algunas excelentes fórmulas en la página 178 de la hoja de datos que describen el generador de baudios y cómo calcular los divisores para obtener la velocidad de reloj de USART que desea.

Tambiénhayalgunosbuenosejemplosdeconfiguracióndevelocidaddetransmisiónenlapágina~200.Losejemplosparaelcasode1MHzestánaquí:

Tengacuidadoderealizarsuscálculosdeerrortambién,yaquealgunosdivisoresdebaudiosnoestánlosuficientementecercadelafrecuenciadeseadaypuedennofuncionarparaustedcuandoestátratandodeusarelUART.Engeneral,tratodeubicarmedentrode+/-2.5%omásalconfigurarelgeneradordebaudiosenestaspartes.

A1MHzpuedeestarintentandousarlafuentederelojRCinternoconelfusibleCLKDIV8programado.NoesunabuenaideacuandosetratadeconfigurarlascomunicacionesdeUSARTenestaspartes.ElrendimientodelosciladorRCnoesbuenoparalatensiónylatemperatura.LatoleranciainternadelosciladorRCenestaspartesesbastantemalaynoeslosuficientementebuenacomoparamantenerlascomunicacionesUARTsinerrores.

AquíestánlosdatosenlahojadedatossobreelrendimientodelosciladorRCinternoatravésdelvoltajeylatemperatura.NotaráqueacumularloserrorespuedegenerartoleranciasbastantemalasenlosvaloresfinalesdelosciladorRC:

Paraquefuncione,deberáusarunafuentederelojexternaorealizaralgunosprocedimientosdecalibracióncomosedescribeenestasnotasdelaaplicación.Sisabequeelvoltajeylatemperaturanosemoveránmucho,puedemovergradualmenteelvalorenOSCCALaunvalorquefuncione,peroserádiferentedeunaparteaotraynoesunagransolucióndeproducciónsiEstáshaciendomuchosdispositivos.Sivaaintentarlo,asegúresedeseguirlaspautasenlashojasdedatosylasnotasdelaaplicación.CambiarelvalorenOSCCALdemasiadoalavezpuedeperturbarelosciladorycausarproblemas.

enlace enlace

Buena suerte: diviértete configurándolo y haciendo que funcione.

    
respondido por el mhilden

Lea otras preguntas en las etiquetas