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 ?
#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();
}
}
}
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub