IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Embarqué Discussion :

Modification/ programmation attiny13


Sujet :

Embarqué

  1. #121
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Je serai disponible après la guerre (enfin je veux dire après avoir foutu mes 4 gosses au dodo)

    Par contre, prendre un autre 2N2222 pour couper l'alimentation n'est pas une bonne idée car ça devrait fonctionner avec le PWM. Ça cache donc quelque chose de pas normal ce qui se passe.

    Le PWM devrait être en mesure de faire accélérer le ventilateur à fond et de l'arrêter (ou du moins le faire tourner tout doucement)

    On va modifier un chouilla le soft pour que ça fonctionne pile poils comme tu veux. En même temps ça permettra que je te l'explique.

    A tout à l'heure.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  2. #122
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    oki je ne bouge pas alors

  3. #123
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Tu peux essayer ça ?
    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
    // 9.6 MHz, built in resonator
    #define F_CPU 9600000
    #define LED PB1 
     
     
    #include <avr/io.h>
     
    void adc_setup (void)
    {
        // Set the ADC input to PB2/ADC1
        ADMUX |= (1 << MUX0);
        ADMUX |= (1 << ADLAR);
     
        // Set the prescaler to clock/128 & enable ADC
        // At 9.6 MHz this is 75 kHz.
        // See ATtiny13 datasheet, Table 14.4.
        ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
    }
     
    int adc_read (void)
    {
        // Start the conversion
        ADCSRA |= (1 << ADSC);
     
        // Wait for it to finish
        while (ADCSRA & (1 << ADSC));
     
        return ADCL;
    }
     
    void pwm_setup (void)
    {
        // Set Timer 0 prescaler to clock/8.
        // At 9.6 MHz this is 1.2 MHz.
        // See ATtiny13 datasheet, Table 11.9.
        TCCR0B |= (1 << CS01);
     
        // Set to 'Fast PWM' mode
        TCCR0A |= (1 << WGM01) | (1 << WGM00);
     
        // Clear OC0B output on compare match, upwards counting.
        TCCR0A |= (1 << COM0B1);
    }
     
    void pwm_write (int val)
    {
        OCR0B = val;
    }
     
    int main (void)
    {
        int adc_in;
     
        // LED is an output.
        DDRB |= (1 << LED);  
     
        adc_setup();
        pwm_setup();
     
        while (1) {
            // Get the ADC value
            adc_in = adc_read();
            // Now write it to the PWM counter
            pwm_write(adc_in);
        }
    }
    C'est pas évident car c'est un micro que je ne connais pas bien et je ne peux même pas essayer le code !!!
    Tiens moi au jus
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  4. #124
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    re , je vient essayer plus rien ne réagis le ventilo tourne a une vitesse sans varier , peut importe la consigne du potentiomètre

  5. #125
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    bon l attiny et mort il me dit ceci

    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.


    avrdude.exe done. Thank you.

    j ai essayer sur un neuf cela fonctionne

  6. #126
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    C'est incroyable car dans ce code il n'y a strictement rien qui peut faire ce que tu me décris comme comportement !!!!
    Essaye ce code
    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
    // 9.6 MHz, built in resonator
    #define F_CPU 9600000
    #define LED PB1 
     
     
    #include <avr/io.h>
     
    void adc_setup (void)
    {
        // Set the ADC input to PB2/ADC1
        ADMUX |= (1 << MUX0);
        ADMUX |= (1 << ADLAR);
     
        // Set the prescaler to clock/128 & enable ADC
        // At 9.6 MHz this is 75 kHz.
        // See ATtiny13 datasheet, Table 14.4.
        ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
    }
     
    int adc_read (void)
    {
        // Start the conversion
        ADCSRA |= (1 << ADSC);
     
        // Wait for it to finish
        while (ADCSRA & (1 << ADSC));
     
        return ADCH;
    }
     
    void pwm_setup (void)
    {
        // Set Timer 0 prescaler to clock/8.
        // At 9.6 MHz this is 1.2 MHz.
        // See ATtiny13 datasheet, Table 11.9.
        TCCR0B |= (1 << CS01);
     
        // Set to 'Fast PWM' mode
        TCCR0A |= (1 << WGM01) | (1 << WGM00);
     
        // Clear OC0B output on compare match, upwards counting.
        TCCR0A |= (1 << COM0B1);
    }
     
    void pwm_write (int val)
    {
        OCR0B = val;
    }
     
    int main (void)
    {
        int adc_in;
     
        // LED is an output.
        DDRB |= (1 << LED);  
     
        adc_setup();
        pwm_setup();
     
        while (1) {
            // Get the ADC value
            adc_in = adc_read();
     
    //*********************************
            if(adc_in < 5)  // di le l'ADC renvoi une valeur inférieure a 5 alors forcer a 0
                    adc_in = 0;
    //*********************************
     
            // Now write it to the PWM counter
            pwm_write(adc_in);
        }
    }


    Il va falloir que tu modifies une condition pour l'ajuster au mieux.
    c'est a dire la valeur dans le if (moi j'ai mis 5 mais c'est peut être 10 ou 3 ou autre)

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //*********************************
            if(adc_in < 5)  // di le l'ADC renvoi une valeur inférieure a 5 alors forcer a 0
                    adc_in = 0;
    //*********************************
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #127
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Citation Envoyé par moijerem Voir le message
    bon l attiny et mort il me dit ceci

    avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude.exe: error: programm enable: target doesn't answer. 1
    avrdude.exe: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.


    avrdude.exe done. Thank you.

    j ai essayer sur un neuf cela fonctionne
    Alors là, si on se bat avec une équation à 3 inconnues (hard, soft et programmateur) à 1000km l'un de l'autre et dans le brouillard (sans oscillo) on y arrivera jamais !
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  8. #128
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    ton code est passe surement un mauvais contact j ai souder un attiny13a on ne sera plus embeter

  9. #129
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    par contre avec ce code le ventillo ne varie pas je vais televerser l ancien pour verrifier

  10. #130
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    j ai remits le premier code , la led connecter au pb1 ne varie pas elle reste alumé fix , n y a t il pas un programme qui ferais juste varier cette pate de 0a100 pour verrifier ?

  11. #131
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    j ai tout sonner au metrix tout est bien connecter

  12. #132
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Alors il y a un problème hard car ça marchait bien tout à l'heure (avec quelques petits défauts mais ça marchait)
    C'est le pire des problèmes car du coup on ne sait pas si il faut fouiller dans le code ou sur le hard. Pour là suite ça va être hyper important que le hard soit fiable et ce n'est pas simple sur une plaque d'essai car par moment un simple fil ne fait plus contact mais ça ne se voit pas.

    Essai ça :
    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
    #include <avr/io.h>
    #define F_CPU 1000000UL
    #include <util/delay.h>
     
    int main(void)
    {
    	DDRB |= (1 << 1);		/* Set PORTB bit 1 to output. */
     
    	while (1) {
    		PORTB &= ~(1 << 1);	/* LED on */
    		_delay_ms(1000);
    		PORTB |= (1 << 1);	/* LED off */
    		_delay_ms(1000);
    	}
     
    	return 0;
    }
    La LED devrait clignoter sur PB1
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  13. #133
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    la led reste fix toujours tu pence que l attiny peut etre endomager ?

  14. #134
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    Qu'est ce que dit Avrdude ?
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  15. #135
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    il dit ceci
    Writing | ################################################## | 100% 0.08s

    avrdude.exe: 94 bytes of flash written
    avrdude.exe: reading input file "ventilation attiny13a.hex"
    avrdude.exe: writing flash (94 bytes):

    Writing | ################################################## | 100% 0.08s

    avrdude.exe: 94 bytes of flash written

    avrdude.exe: safemode: Fuses OK (E:FF, H:FF, L:6A)

    avrdude.exe done. Thank you.

  16. #136
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    bon cela fonctionne j ai juste redemare atmel studio ....
    tout le cablage et mis au propre donc je fais quoi ? je tente quel code ?

  17. #137
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    j ai mits ce code le ventillo varie bien
    Code : 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
    // 9.6 MHz, built in resonator
    #define F_CPU 9600000
    #define LED PB1 
     
     
    #include <avr/io.h>
     
    void adc_setup (void)
    {
        // Set the ADC input to PB2/ADC1
        ADMUX |= (1 << MUX0);
        ADMUX |= (1 << ADLAR);
     
        // Set the prescaler to clock/128 & enable ADC
        // At 9.6 MHz this is 75 kHz.
        // See ATtiny13 datasheet, Table 14.4.
        ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
    }
     
    int adc_read (void)
    {
        // Start the conversion
        ADCSRA |= (1 << ADSC);
     
        // Wait for it to finish
        while (ADCSRA & (1 << ADSC));
     
        return ADCH;
    }
     
    void pwm_setup (void)
    {
        // Set Timer 0 prescaler to clock/8.
        // At 9.6 MHz this is 1.2 MHz.
        // See ATtiny13 datasheet, Table 11.9.
        TCCR0B |= (1 << CS01);
     
        // Set to 'Fast PWM' mode
        TCCR0A |= (1 << WGM01) | (1 << WGM00);
     
        // Clear OC0B output on compare match, upwards counting.
        TCCR0A |= (1 << COM0B1);
    }
     
    void pwm_write (int val)
    {
        OCR0B = val;
    }
     
    int main (void)
    {
        int adc_in;
     
        // LED is an output.
        DDRB |= (1 << LED);  
     
        adc_setup();
        pwm_setup();
     
        while (1) {
            // Get the ADC value
            adc_in = adc_read();
     
    //*********************************
            if(adc_in < 5)  // di le l'ADC renvoi une valeur inférieure a 5 alors forcer a 0
                    adc_in = 0;
    //*********************************
     
            // Now write it to the PWM counter
            pwm_write(adc_in);
        }
    }

  18. #138
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    j ai bien peur que tout ne probleme soit du a la valeur de mon potentiometre comme c est un 100k

    car en gros
    potentiometre a------------ 0%------20%-------------------------100% donne :
    ventillo a------------------100%------20%( limite arreté)--------100%



    le top serait un de 0 a 100% potentiometre donne de 0a20% ventillo

    j ai remplace le transistor du ventillo par une led pourtant elle varive bien de 100% a 2% , pourquoi le ventillo fais deux revolution ?

  19. #139
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 187
    Points : 11 568
    Points
    11 568
    Par défaut
    C'est quand même très bizarre ça !
    Je ne l'explique pas sauf si il y a de l'électronique dans le ventilateur mais comme j'en ignore tout c'est compliqué d'interpréter.

    Je pense qu'il faut remettre la LED (à la place du 2n2222) et s'assurer que le soft n'a pas de problème.
    J'ai juste modifier les variables de type int (avec un signe positif ou négatif) par unsigned int (non signé donc toujours supérieur a 0)

    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
    // 9.6 MHz, built in resonator
    #define F_CPU 9600000
    #define LED PB1 
     
     
    #include <avr/io.h>
     
    void adc_setup (void)
    {
        // Set the ADC input to PB2/ADC1
        ADMUX |= (1 << MUX0);
        ADMUX |= (1 << ADLAR);
     
        // Set the prescaler to clock/128 & enable ADC
        // At 9.6 MHz this is 75 kHz.
        // See ATtiny13 datasheet, Table 14.4.
        ADCSRA |= (1 << ADPS1) | (1 << ADPS0) | (1 << ADEN);
    }
     
    unsigned int adc_read (void)
    {
        // Start the conversion
        ADCSRA |= (1 << ADSC);
     
        // Wait for it to finish
        while (ADCSRA & (1 << ADSC));
     
        return ADCH;
    }
     
    void pwm_setup (void)
    {
        // Set Timer 0 prescaler to clock/8.
        // At 9.6 MHz this is 1.2 MHz.
        // See ATtiny13 datasheet, Table 11.9.
        TCCR0B |= (1 << CS01);
     
        // Set to 'Fast PWM' mode
        TCCR0A |= (1 << WGM01) | (1 << WGM00);
     
        // Clear OC0B output on compare match, upwards counting.
        TCCR0A |= (1 << COM0B1);
    }
     
    void pwm_write (unsigned int val)
    {
        OCR0B = val;
    }
     
    int main (void)
    {
        unsigned int adc_in;
     
        // LED is an output.
        DDRB |= (1 << LED);  
     
        adc_setup();
        pwm_setup();
     
        while (1) {
            // Get the ADC value
            adc_in = adc_read();
     
    //*********************************
            if(adc_in < 5)  // si l'ADC renvoi une valeur inférieure a 5 alors forcer a 0
                    adc_in = 0;
    //*********************************
     
            // Now write it to the PWM counter
            pwm_write(adc_in);
        }
    }
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  20. #140
    Nouveau membre du Club
    Homme Profil pro
    electricien
    Inscrit en
    Janvier 2013
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : electricien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 200
    Points : 34
    Points
    34
    Par défaut
    hello , j ai donc uploader ton code la led varie bien de 2% a 100% sans souci

    Dans le ventillo il y a bien de l Electronique comme dans tout ventilo pwm

Discussions similaires

  1. [FB4] Aide modification programme
    Par bensefaj dans le forum Flex
    Réponses: 5
    Dernier message: 18/07/2013, 09h48
  2. empecher modifications programme sas
    Par herkitz dans le forum Administration et Installation
    Réponses: 4
    Dernier message: 23/08/2010, 18h16
  3. Modification programme portCOM
    Par cyriltec dans le forum C#
    Réponses: 1
    Dernier message: 12/03/2010, 11h34
  4. Programme de modification de XML en fonction de conditions
    Par greg2 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 31/07/2006, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo