Pinos

A biblioteca Pins fornece meios simples para trabalhar com pins AVR de entrada e saída digitais. O utilizador pode criar uma variável associada a um pin e fazer qualquer operação com essa mesma variável. Desta forma não é necessário lidar directamene com nomes de registos e indíces de bits como quando se programa acedendo directamente aos registos. Os portos e indíces dos pins têm de ser especifiados apenas uma vez de forma a tornar as alterações fáceis de implementar.

Tipos de Dados

  • pin
    Tipo que permite guardar moradas de registos e máscaras de bits. Para tornar os programas mais eficientes, variáveis do tipo pin devem ser constantes e devem também ser inicializadas no início do programa. A inicialização pode ser feita com a função macro PIN, cujo primeiro parâmetro é a letra correspondente ao porto (maiúsculas A, B, C, etc) e o outro o número de indíce do pin (0 a 7). Apenas portos e pins existentes podem ser usados.

Constantes

  • led_green, led_yellow, led_red - LEDs do interface de utilizador Homelab por cor
  • LED1, LED2, LED3 - LEDs do interface de utilizador Homelab por número de LED
  • S1, S2, S3 - Botões da placa do interface do utilizador Homelab

Funções

  • void pin_setup_output(pin pin)

Configura um pin como saída. Parâmetros:

  • pin - Variável do pin.
  • void pin_setup_input(pin pin)

Configura um pin como entrada sem resistência “pull-up” ligada. Parâmetros:

  • pin - Variável do pin.
  • void pin_setup_input_with_pullup(pin pin)

Configura um pin como entrada com resistência “pull-up” ligada. Parâmetros:

  • pin - Variável do pin.
  • void pin_set(pin pin)

Define o pin de saída para “high”. Parâmetros:

  • pin - Variável do pin.
  • void pin_clear(pin pin)

Define o pin de saída para “low”. Parâmetros:

  • pin - Variável do pin.
  • void pin_toggle(pin pin)

Inverte o estado do pin de saída. Parâmetros:

  • pin - Variável do pin.
  • void pin_set_to(pin pin, bool value)

Define o estado do pin de saída. Parâmetros:

  • pin - Variável do pin.
  • value - Valor lógico do estado.
  • bool pin_get_value(pin pin)

Obtém o valor do pin. Parâmetros:

  • pin - Variável do pin.
  • Devolve true quando o pin está high e false quando o pin está low.
  • bool pin_get_debounced_value(pin pin)

Lê o valor do pin através do filtro de debounce. A filtragem demora pelo menos 8 ms e pode demorar até 100 ms, dependendo do debouncing. se este não acaba, false é devolvido. A função utiliza delay. Parâmetros:

  • pin - Variável do pin.
  • Devolve o valor lógico do pin - true quando o pin está high e false quando o pin está low ou é indeterminado.

Exemplo

Exemplo de como obter e definir o valor de um pin. O valor do pin PC0 é invertido e copiado para o pin PC3.

#include <homelab/pin.h>
 
pin output_pin = PIN(C, 3);
pin input_pin = PIN(C, 0);
 
int main(void)
{
	bool value;
 
	// Configuring pin as an output pin
	pin_setup_output(output_pin);
 
	// Configuring pin as an input pin with pull-up
	pin_setup_input_with_pullup(input_pin);
 
	// Endless loop
	while (true)
	{
		// Getting an input pin value
		value = pin_get_value(input_pin);
 
		// Setting an output pin value
		pin_set_to(output_pin, !value);
	}
}

led_on, led_off, button_read commands example

#include <homelab/pin.h>
 
// Homelab buttons and LEDs are predefined in the library
 
int main(void)
{
	// Set LED pin as output
	pin_setup_output(led_green);
 
	// Set Button S1 pin as input
	pin_setup_input(S1);
 
	// Endless loop
	while (true)
	{
		// If button is pressed, turn on LED, if not pressed, turn LED off.
		if(button_read(S1) == true)
			led_on(led_green);
		else
			led_off(led_green);
	}
}
pt/software/homelab/library/pin.txt · Last modified: by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0