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