Blame view

site/upload/main.c 1.5 KB
11668b90   root   MAJ
1
2
3
  #include <avr/io.h>
  #include <avr/interrupt.h>
  #include <util/delay.h>
19ae2416   jnduwamu   MAJ du site
4
  #include <string.h>
1334aed2   root   Site lie au git
5
  #include <stdlib.h>
11668b90   root   MAJ
6
7
8
9
  #include <stdio.h>
  
  //#ifndef RETOUR_H_
  //#define RETOUR_H_
679fa31a   root   Fichiers RPI
10
  
bb21808e   root   MAJ
11
  #include "retour.h"
679fa31a   root   Fichiers RPI
12
  
11668b90   root   MAJ
13
  //#endif 
19ae2416   jnduwamu   MAJ du site
14
15
  #define PRESCALER 1024
  #define TIME_SLOT 20
19ae2416   jnduwamu   MAJ du site
16
17
  #define BAUDRATE	103
  
11668b90   root   MAJ
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
  static volatile int pulse = 0;
  static volatile int i = 0;
  
  
  //////////////////////////////////////////////
  
  ISR(INT0_vect){
    //i=1 indique lcho HIGH
    if(i == 1)
    {
      //On arrête le timer
      TCCR1B = 0;
      //On stocke la valeur précédente du timer (l'aller-retour)
      pulse = TCNT1;
      //On reset la valeur de TCNT1 et de i à Zero
      TCNT1 = 0;
      i = 0;
    }
    
    //i=0 indique lcho à LOW
    if(i==0)
    {
      //On set le bit CS10 à HIGH, debut du timer qui compte
      TCCR1B |= (1<<CS10);
      i = 1; 
    }
1334aed2   root   Site lie au git
44
45
  }
  
11668b90   root   MAJ
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
  
  int main(void){
    init_serial();
    int16_t count_a = 0; 
    char show_a[16];
    //Trigger = PIND0 et ECHO = PIND2
    DDRD = 0b11111011;
    _delay_ms(50);
    //Selection INT0
    EIMSK |= (1<<INT0);
    //Interruption sur changement logique
    EICRA = 0x01;
    sei();
   
    while(1)
    { 
      //TRIGGER HIGH
      PORTD |= 1<<PIND0;
      //Durée de l'impulsion TRIGGER
      _delay_us(15);
      //TRIGGER LOW
      PORTD &= ~(1<<PIND0);
      //On calcule la distance en cm : pulse/(58/2/10)  (en cm)
      count_a = pulse/1160.0;
      
      itoa(count_a,show_a,10);
      //dtostrf(count_a, 5,2, show_a);
      sprintf(show_a, "%d", count_a);
      //send_serial('D');
679fa31a   root   Fichiers RPI
75
76
      //send_serial('=');
      //RETOUR
11668b90   root   MAJ
77
78
79
80
81
      retour(show_a);
      _delay_ms(1000);
      
    }
    return 0;
19ae2416   jnduwamu   MAJ du site
82
  }