Untitled

 avatar
unknown
plain_text
2 years ago
1.3 kB
4
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...