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(); } } }
Partager