Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2012
    Messages : 6
    Points : 0
    Points
    0

    Par défaut Signal triangulaire avec un XMEGA

    Salut à tous,

    Je dois créer un programme pour générer un signal triangulaire en langage C avec un XMEGA ce signal triangulaire aura une fréquence de 50khz en d'autre terme faire un compteur Up/Down qui monte et qui descend et ensuite un convertisseur DAC pour convertir à la fréquence désirée mais je ne sais pas comment m'y prendre pour y arriver. Est ce qu'il existe des exemples pour avoir une idée ou m'orienter vers un lien qui explique la génération de signaux.

    Merci

  2. #2
    Invité de passage
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2012
    Messages : 6
    Points : 0
    Points
    0

    Par défaut signal triangulaire avec un XMEGA

    Bonsoir,

    J'ai un programme pour la génération du signal triangulaire en C pour le XMEGA mais quand je le compile il me met une erreur que je ne vois pas. pourriez vous me dire si vous la voyez.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include "dac_driver.h"
     
    
    int main (void)
     {
     uint16_t angle;
     
    /* Given 2 MHz CPU speed, this is configured to 2µs separation time and
     * 16µs refresh time.*/
     
    DAC_DualChannel_Enable( &DACA,
     DAC_REFSEL_AVCC_gc,
     false,
     DAC_CONINTVAL_4CLK_gc,
     DAC_REFRESH_32CLK_gc );
     
    /* Use a 12 bit variable to output two triangle waves, separated by 180 degrees phase, as fast as possible. */
     
    while (1) {
     for ( angle = 0; angle < 0x1000; ++angle ) {
     while ( DAC_Channel_DataEmpty( &DACA, CH0 ) == false ) {
     
    /* Blocking code waiting for empty register. */
     }
     DAC_Channel_Write( &DACA, angle, CH0 );
     
    while ( DAC_Channel_DataEmpty( &DACA, CH1 ) == false ) {
     
    /* Blocking code waiting for empty register. */
     }
     
    DAC_Channel_Write( &DACA, 0xFFF - angle, CH1 );
     }
     
    for ( angle = 0; angle < 0x1000; ++angle ) {
     
    while ( DAC_Channel_DataEmpty( &DACA, CH0 ) == false ) {
     
    /* Blocking code waiting for empty register. */
     
    }
     
    DAC_Channel_Write( &DACA, 0xFFF - angle, CH0 );
     
    while ( DAC_Channel_DataEmpty( &DACA, CH1 ) == false ) {
     
    /* Blocking code waiting for empty register. */
     
    }
     
    DAC_Channel_Write( &DACA, angle, CH1 );
     }
     }
     }
    Et le message d'erreur est le suivant:

    21:21:18 **** Build of configuration Release for project dac_triangle ****
    make all
    Building file: ../dac_triangle.c
    Invoking: AVR Compiler
    avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atxmega256a3 -DF_CPU=32000000UL -MMD -MP -MF"dac_triangle.d" -MT"dac_triangle.d" -c -o "dac_triangle.o" "../dac_triangle.c"
    Finished building: ../dac_triangle.c

    Building target: dac_triangle.elf
    Invoking: AVR C Linker
    avr-gcc -Wl,-Map,dac_triangle.map -mmcu=atxmega256a3 -o "dac_triangle.elf" ./dac_triangle.o
    c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avrxmega6/crtx256a3.o.init9+0x0): undefined reference to `main'
    make: *** [dac_triangle.elf] Error 1

  3. #3
    Modérateur
    Avatar de Bktero
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 702
    Détails du profil
    Informations personnelles :
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2009
    Messages : 2 702
    Points : 7 179
    Points
    7 179

    Par défaut

    Code :
    1
    2
    Invoking: AVR C Linker...
    ....undefined reference to `main'
    Ce n'est pas une erreur de compilation mais d'édition des liens : ton code compile correctement mais il n'y a pas de fonction main, il est donc impossible pour l'éditeur des liens de créer le fichier exécutable.
    Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseignez ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

    Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

    Pour vos problèmes d'embarqué, utilisez le forum dédié !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •