plop plop

Olivier MATZ a écrit :
>> j'ai fait un printf comme ça (dans le main ):
>>
>> printf("%lu %u\n",(unsigned long)sec,(unsigned int)nbre_tours);
>>
>> en déclarant sec comme "seconds" et j'ai quand même un débordement sur
>> 16bits.
>>     
>
> ça devrait marcher pourtant. Par défaut je mets "%ld" mais je pense que
> c'est pareil. Sinon rebalance le code ;)
>   
Ci-joint.
>   
>> ps : Sinon comment on fait pour arrêter  "tip" ? parce que pour
>> l'instant je suis obliger de le killer via une autre console ! pour info
>> mon tip vient du projet uLinux  là :
>> http://svn.digium.com/view/aadk/uClinux/trunk/uClinux-dist/user/tip/tip.c?view=markup&sortby=log&pathrev=13
>>     
>
> je sais plus si c'est ^. ou ~. sur la version de base.
>   
c'est ~.

Sinon, j'ai du mal à comprendre comment marche tout le bousin. Je
voudrai utiliser le timer0 pour avoir un rapport cyclique variable sur
OC0, est-ce que c'est possible de le faire tout en ayant le scheduler
sur le même timer ?

Merci.

FabM, on finira tous à vélo

ps : saloperie de BS170 qui qui a un pinout différent en fonction de sa
version (Dmos ou mosfet).

/*activation des ports. LED : ready !*/

//cbi (port, bit) = clear port
//sbi (port, bit) = set port
#include <aversive.h>
#include <aversive/wait.h>
#include <aversive/timers.h>
#include <uart.h>
#include <scheduler.h>
#include <time.h>
//#include <pwm.h>
//#include <adc.h>

//#include <scheduler.h>

#define VENT1 2 
#define VENT2 3
#define LED_BLEUE (1<<4)
#define LED_JAUNE (1<<5)

volatile static uint16_t nbre_tours;

void transmettre(seconds date){
  volatile unsigned long secondes;
  if(nbre_tours != 0){
  secondes = date;
  printf("%lu %u\n",secondes,(unsigned int)nbre_tours);
  }
  nbre_tours = 0;
}

void commute(void * pouet){
  static char etat=0;
  if(etat==0){
    etat = 1;
    PORTB |= (1<<3);
  }else{
    etat=0;
    PORTB &= ~(1<<3);
  }

}

int main(void)
{
  volatile seconds date;
  volatile char etat_prec,etat;
  volatile char transmis;
  /******************/
  /* initialisations*/
  /******************/
  uart_init();
  scheduler_init();
  time_init(200);
  sei();

  // truc bizarre pour faire marcher printf 
  fdevopen((int(*)(char))uart0_send,(int(*)(void))uart0_recv,0);

  // initialisation du logger
  scheduler_add_periodical_event(commute,NULL,1);

  /* les flags sont sur le GIFR bit 6 et 7 */
  DDRD = LED_BLEUE | LED_JAUNE;   //pind 4 et 5 en sortie (led)
  DDRA = 0;                       //adc en entrée
  DDRB |= 1<<3;         //portb 3 en sortie (PWM)

  printf("StationMeteo a bootee\n");  
  PORTD = LED_BLEUE | LED_JAUNE;   // extinction des leds
  etat=0;etat_prec=0;nbre_tours=0;

  while(1){
    /* clignotement de la led bleue a chaque tour de
     * l'anÃmomÃtre */
    if(PIND & 0x0C)
      PORTD &= ~LED_BLEUE;
    else 
      PORTD |= LED_BLEUE;
    
    /* detection des fronts montants sur les pin 2 et 3 */
    etat = ((PIND&0x0C)==0)?1:0;
    if(etat != etat_prec)nbre_tours++;
    etat_prec = etat;

    /* envoi des donnees toutes les 10 secondes */
    date = time_get_s();
    if(date%10 == 0){
      if(transmis==FALSE){
        transmis = TRUE;
        transmettre(date);
      }
    }else{
        transmis = FALSE;
    }
    
  }
  return 0;
}

_______________________________________________
Avr-list mailing list
Avr-list@droids-corp.org
CVSWEB : http://cvsweb.droids-corp.org/cgi-bin/viewcvs.cgi/aversive
WIKI : http://wiki.droids-corp.org/index.php/Aversive
DOXYGEN : http://zer0.droids-corp.org/doxygen_aversive/html/
BUGZILLA : http://bugzilla.droids-corp.org
COMMIT LOGS : http://zer0.droids-corp.org/aversive_commitlog

Répondre à