AVR IO Prioridad de funciones alternativas

1

Si en un microcontrolador AVR hay al menos dos funciones, por ejemplo, SPI, analógica Comp y GPIO en un puerto de 8 bits, ¿cuál es la prioridad de las funciones? por ejemplo: si SPI habilita primero y luego usa DDRx para configurar un PIN que se usa de SPI como GPIO (como entrada o salida), ¿cuál es la función final?

EDITAR: ¿Puedo configurar en un puerto una función multible? Por ejemplo: quiero habilitar SPI y usar los otros pines normalmente como pines GPIO. o, para habilitar UART y usar otros pines de descanso como GPIO. ¿Cómo puedo hacer eso?

    
pregunta MrBit

2 respuestas

1

La subsección "Funciones de puerto alternativas" de la sección "Puertos de E / S" de la hoja de datos describe exactamente cómo se comportará cada pin teniendo en cuenta los periféricos habilitados. En el caso de SPI, solo MISO (maestro) o los otros tres pines (esclavo) están forzados en una dirección específica (entrada en ambos casos); los otros pines pueden tener su dirección configurada para que se ajuste a SPI o no según se requiera / desee.

Tenga en cuenta que DDRx , PORTx y PINx pueden siempre ser leídos y escritos, independientemente de las funciones actuales de los pines correspondientes, incluso si dicha acción no se realiza Sentido dada su configuración.

    
respondido por el Ignacio Vazquez-Abrams
0

Los chips AVR tendrán sus pines IO predeterminados a las entradas de E / S digital en el inicio. Todas las "funciones alternativas" estarán inactivas, lo que significa que las patillas serán solo GPIOS de entrada digital hasta que active un componente que requiera una de las patillas.

Por ejemplo, si desea utilizar el ADC en el ATTiny85, escriba 0x80 en el registro ADCSRA para habilitarlo (que coloca un "1" en el bit de habilitación del registro de control ADC). Cuando haga eso, el controlador ADC esencialmente tomará los pines que necesita y los configurará según sea necesario. Dependiendo de su configuración de ADC, puede tomar varios pines. Digamos que está utilizando una referencia de voltaje externo para su ADC, que se encuentra en el pin PB0. En este punto, PB0 ya no se puede usar como un pin de entrada digital porque la función alternativa está activa, y los pines solo pueden hacer una cosa a la vez.

Como mencionó Ignacio en su respuesta, siempre puede leer / escribir desde / hacia los pines independientemente de la función seleccionada, pero es probable que interfiera con la operación de lo que esté usando ese pin.

Ahora digamos que quiero usar una interrupción externa. Tendré que elegir uno además de PCINT0, porque esa interrupción también usa PB0, que ya está en mi ADC. No hay una "prioridad": las funciones alternativas interferirán entre sí si intenta habilitar varios periféricos que usan los mismos pines.

Ahora, si desactivo el ADC, los pines que usó están libres nuevamente. No creo que los pines vuelvan a sus estados anteriores, por lo que si desea utilizarlos como entrada digital nuevamente, primero escribiría en los registros necesarios para confirmar que están en ese modo.

    
respondido por el skrrgwasme

Lea otras preguntas en las etiquetas