AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Modem AFSK 1200

Description détaillée

Ce module réalise un modem AFSK 1200 bauds utilisant HDLC.
Il sera généralement utilisé comme couche physique pour le module Liaison AX25.
A la compilation, il est possible de dévalider la partie transmission en ajoutant AFSK_TX_DISABLE à la variable AVRIO_CONFIG dans le Makefile. De la même façon, il est possible de dévalider la réception à l'aide de AFSK_RX_DISABLE (mais pas les 2 ensemble...).
Lorsque la partie réception est validée, le module utilise le convertisseur analogique-numérique ADC pour la démodulation ainsi que le TIMER1 pour le cadencement de l'échantillonnage en réception et en émission.
Lorsque la partie réception n'est pas validée, le module utilise un timer 8 bits pour le cadencement de l'échantillonnage en émission.
En émission, le module utilise un convertisseur numérique-analogique DAC à 4 bits, constitué de 4 résistances ou d'un réseau R-2R relié à des broches de ports.
La partie matérielle peut être modifier dans le fichier avrio-board-afsk.h décrite dans Driver

Graphe de collaboration de Modem AFSK 1200:

Modules

 Codes d'erreur
 
 Configuration
 
 Driver
 
 Mode de fonctionnement
 

Fonctions

bool bAfskDcd (void)
 
bool bAfskReceiving (void)
 
bool bAfskSending (void)
 
uint8_t ucAfskGetRssi (void)
 
uint8_t ucAfskGetRssiTh (void)
 
void vAfskInit (uint8_t ucMode)
 
void vAfskSetRssiTh (uint8_t ucRssi)
 
void vAfskToneSet (uint16_t usTxPhaseInc)
 Modifie la tonalité en sortie du modulateur. Plus de détails...
 
void vAfskToneToggle (void)
 Bascule la tonalité en sortie du modulateur. Plus de détails...
 

Variables

FILE xAfskPort
 Fichier permettant l'utilisation du modem avec les fonctions de la libc. Plus de détails...
 

Documentation des fonctions

bool bAfskDcd ( void  )

Indique si le module est synchronisé en réception

bool bAfskReceiving ( void  )

Indique si le module est en cours de réception

bool bAfskSending ( void  )

Indique si le module est en cours de transmission

uint8_t ucAfskGetRssi ( void  )

Retourne la qualité du signal reçu

uint8_t ucAfskGetRssiTh ( void  )

Lecture du seuil minimal de qualité du signal reçu

void vAfskInit ( uint8_t  ucMode)

Initialise le module Afsk

Après cet appel, les interruptions doivent être validées afin que le module puisse fonctionner. Cela peut se faire l'aide de sei().

Paramètres
ucModeMode de fonctionnement (Voir Mode de fonctionnement).
0 pour un fonctionnement par défaut (bloquant).
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.
void vAfskSetRssiTh ( uint8_t  ucRssi)

Modifie le seuil minimal de qualité du signal reçu

void vAfskToneSet ( uint16_t  usTxPhaseInc)

Modifie la tonalité en sortie du modulateur.

Cette fonction est prévue uniquement pour des raisons de mise au point (vérification de la fréquence des signaux en sortie)

Paramètres
usTxPhaseIncincrément de phase correspondant à la tonalité souhaitée.
La macro AFSK_PHASE_INC() permet de calculer cette valeur à partir de la fréquence.
Il est obligatoire d'utiliser les valeurs de fréquences pré-définies AFSK_MARK_FREQ et AFSK_SPACE_FREQ si on souhaite utiliser vAfskToneToggle()
void vAfskToneToggle ( void  )

Bascule la tonalité en sortie du modulateur.

Cette fonction permet de passer d'une tonalité MARK à une tonalité SPACE et inversement. ELle est prévue uniquement pour des raisons de mise au point.

Documentation des variables

FILE xAfskPort

Fichier permettant l'utilisation du modem avec les fonctions de la libc.

Pour utiliser le modem comme entrée et sortie pour le module Ax25, on mettra au début du main() :

1 int main(void) {
2  xAx25 ax25;
3  vAfskInit ();
4  vAx25Init (&ax25, &xAfskPort, &xAfskPort, vAx25RxCB);
5 ...
Exemples:
aprs/demo_aprs.c, et net/aprs/demo_aprs.c.