Gostaria de saber a que "Função Alternativa" se refere no contexto das portas de E / S de um microcontrolador.
Não preciso saber como ativá-lo ao conectar-me a um periférico, mas gostaria de saber exatamente o que é e por que precisamos disso.
Muitos pinos do seu microcontrolador têm funções diferentes. A função 'normal' se refere a GPIO, Entrada / Saída de Uso Geral . Nesse caso, você pode usar esses pinos diretamente escrevendo e lendo os registros relevantes.
As funções 'alternativas' se referem a outras funções, que podem incluir I 2 C, SPI, USART, CCP, PWM, Relógio, ADC, etc ... Como você controla os pinos quando em uma função alternativa depende do periférico, mas geralmente se resume a escrever e ler registros especiais de função (SFR); o periférico cuida do resto.
Qual função é padrão depois que um RESET depende ( nem sempre é GPIO!), E você pode encontrá-lo na folha de dados relevante. Na maioria das vezes, você pode selecionar a função que deseja usar on-the-fly, para poder alternar entre periféricos.
Ao usar um pino para vários periféricos, você pode criar microcontroladores com muitos recursos. No entanto, como você na maioria das vezes deseja aquele periférico nesse pino o tempo todo (e não deseja alternar funções on-the-fly), não pode usar todos os periféricos em um programa ou, pelo menos, não no mesmo Tempo. Por outro lado, isso nem sempre é necessário.
Como Connor aponta , 'função alternativa' também pode se referir a outra coisa, em apenas um contexto um pouco diferente: aqui não se trata de qual função você coloca em um pino, mas de qual pino você usa para uma função. Isso é chamado de seleção de pino periférico e basicamente significa que você pode selecionar qual pino seu periférico está usando. Você pode, por exemplo, fazer o RS232 por RA1 e RA2 ou por RB1 e RB2.
Veja a resposta de Connor para uma descrição mais detalhada (e faça uma votação positiva para ele).
Além da resposta @CamilStaps, há outro contexto em que "função alternativa de pinos" é um termo comumente usado.
Alguns microcontroladores têm a opção de alternar seus periféricos internos entre vários conjuntos de linhas de E / S. Dessa forma, você pode evitar problemas se desejar usar módulos internos (SPI, I2C, etc ...) que tenham suas funções mapeadas para o mesmo conjunto de pinos.
Geralmente, existe um registro de controle que determina para qual conjunto de pinos os vários periféricos são mapeados.
Sei que trabalhei com um microcontrolador que possuía essa instalação, mas vou me danar se conseguir lembrar o número de peça específico.
Edit: Found it - Está disponível em muitas partes do PIC24 e dsPIC:
Eles o chamam de "Seleção Periférica de Pino", mas é basicamente um mecanismo para configurar as funções alternativas dos pinos.