IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Décodeur morse avec un atmega


Sujet :

Embarqué

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Décodeur morse avec un atmega
    Bonjour,

    J'essaie de faire un decodeur morse avec un atmega 8. J'arrive actuellement à savoir si le signal récu est un "." ou un "-". Mais je ne sais pas comment faire pour dire que c'est la fin du mot. J'ai pensé a faire que lorsque le temps est à 0 je mets un "/" dans ma chaine de caractère. Mais ce n'est pas possible car entre un . et un - il y a tfacon 0 dans la variable tPulse.

    Est ce que vous pouvez m'aider ?

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    #include <avr/io.h>
    #include <stdlib.h>
    #include  <util/delay.h>
    #include <avr/interrupt.h>
    #define F_CPU 8000000UL
    #include "dj_tools_lcd_V2.h"
    volatile uint16_t tPulse,time, tStart;
     
    ISR(TIMER1_CAPT_vect)
    {
     
     
        uint16_t t = ICR1 /8;
        if (TCCR1B & (1<<ICES1)) { // Si front montant
     
     
            tStart = t;
            TCCR1B &= ~(1<<ICES1); //front descendant en suite
     
        } else {
     
     
            time = t ;
            tPulse = time - tStart;
            TCCR1B |= (1<<ICES1); //front montant ensuite
        }
    }
    int main()
    {
        char chaine[100];
        char test[100];
        test[0]='a';
        int i=0;
        int a=1;
        int input;
        uint16_t temps[10];
     
     
        lcd_set4bit();    //initialise le mod 4 bits
        lcd_init();
        lcd_clear();
        DDRC = 0xFF;//PORT C en sortie
        DDRD=0x00;
        TCNT1=0;
        TIMSK=(1 << TICIE1); // input capture
        TCCR1B |= (1 << CS12) | (1 << CS10)  ; //prédiviseur par 1024
        TCCR1B |= (1 << ICNC1) | (1<<ICES1) ; //noice canceler + front montant sur ICP1
        sei(); // activer les interruptions
        while(1)
        {
            input=(PIND&0x01);
            dtostrf(tPulse,7,3,temps);
     
            if (tPulse < 0x23 && tPulse > 0x0A && tPulse != 0x00) {
                lcd_ligne(1,1);
                lcd_write_text(".");
                chaine[i]='.';
                tPulse=0;
                lcd_ligne(3,a);
                lcd_write_char(chaine[i]);
                i=i+1;
                a=a+1;
                i=i+1;
            }
     
            if (tPulse > 0x23 )
            {
                lcd_ligne(1,1);
                lcd_write_text("-");
                chaine[i]='-';
                tPulse=0;
                lcd_ligne(3,a);
                lcd_write_char(chaine[i]);
                i=i+1;
                a=a+1;
     
            }
            if(input>=0x01)
            {
                i=0;
                a=1;
                lcd_clear();
            }
     
     
     
        }
     
    }

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 830
    Points
    4 830
    Par défaut
    Bonjour

    Comment est définie la fin d'un mot?
    En répondant à cette question tu auras une piste sur comment détecté la fin d'un mot...

    Bonne suite

    Delias

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Pour detecter la fin dune lettre j'avais l'intention de mettre en séparateur par exemple un "/". Mais j'ai une idéé. C'est quand si pendant temps de temps rien ne c'est passé j'ajoute le caractère "/" a ma chaine. Je vais essayer cela. Je vous redis si j'ai réussi.

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut,
    Il me semble que tout ceci est normalisé en MORSE (il y a du handshaking ou des acknowledge, fin de transmission, répéter message etc...)

    Mon beau père ayant été dans les transmissions à l'armée, on ne fait pas transiter de phrase en français d'habitude. Ce sont des messages codés en chiffres/lettres
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 830
    Points
    4 830
    Par défaut
    Bonjour à tous

    J'ai toujours été une pige en morse donc la suite sans garantie d'être exact ou unique, il y a éventuellement des variantes que j'ai oublié!
    Normalement la spécification dont je parle est la durée des pauses entre les impulsions qui varie en fonction de sa signification: séparation entre deux impulsions d'une même lettre, séparation entre deux lettres ou séparation entre deux mots.

    Bonne suite

    Delias

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    retraite
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    un tiret est égal a 3 points
    l'espace entre 2 élements d'une meme lettre est égal à 1 point
    l'espace entre 2 lettres est égal a 3 points
    l'espace entre 2 mots est égal a la durée de 7 points

Discussions similaires

  1. [AVR] [ATmega] Problème avec 2 esclaves sur I2C
    Par fred7 dans le forum Embarqué
    Réponses: 9
    Dernier message: 23/10/2017, 22h52
  2. [AVR] Interpréter Bytes d'un modem avec un ATMEGA
    Par Bastien.02907 dans le forum Embarqué
    Réponses: 3
    Dernier message: 09/03/2017, 19h07
  3. Réponses: 0
    Dernier message: 20/03/2012, 22h13
  4. Réponses: 4
    Dernier message: 12/06/2009, 15h36
  5. Alphabet radio et code morse avec ASP
    Par Kerod dans le forum ASP
    Réponses: 1
    Dernier message: 01/04/2009, 23h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo