Untitled
unknown
plain_text
3 years ago
1.3 kB
6
Indexable
#include "Platform.h"
static volatile unsigned tick;
__attribute__((interrupt("machine")))
void irq_handler(void) {
// Appeler le gestionnaire d'interruptions du pilote de l'interface série.
UART_irq_handler(uart);
UART_irq_handler(sonar_uart);
// Incrémenter le compteur tick à chaque interruption du timer.
if (Timer_has_events(timer)) {
Timer_clear_event(timer);
tick ++;
}
}
void main(void) {
// Initialiser le pilote de l'interface série
// et afficher un message de bienvenue.
UART_init(uart);
UART_puts(uart, "Sonar Demo.\n");
// Configurer le timer pour demander des interruptions
// dix fois par seconde.
Timer_init(timer);
Timer_set_limit(timer, CLK_FREQUENCY_HZ / 10);
Timer_enable_interrupts(timer);
// Initialiser le récepteur série associé au sonar
Sonar_init(sonar);
tick = 0;
unsigned tock = 0;
// Exécuter jusqu'à ce que l'utilisateur presse une touche.
while (!UART_has_data(uart)) {
// Mettre à jour la distance mesurée par le sonar.
uint8_t dist = Sonar_update(sonar);
if (tick != tock) {
// Ici, on peut faire quelque chose avec dist.
// ...
tock ++;
}
}
}Editor is loading...