Bascom : getADC 10 bits => 8 bits
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Bascom : getADC 10 bits => 8 bits



  1. #1
    invite15e51044

    Bascom : getADC 10 bits => 8 bits


    ------

    Bonjour, j'ai un petit problème pour lire un tension analogique sur un ADC 10 bit d'un atmega 48 j'aimerais lire la tension suivante :


    Nom : Boutons.png
Affichages : 74
Taille : 21,9 Ko

    Le programme réaliser est le suivant :


    Code:
    $regfile = "M48def.dat"                                     ' défini le type de processeur
    $crystal = 8000000                                          ' a quelle vitesse il tourne ici 8Mhz
    $hwstack = 32                                               ' réserve 32 bytes pour un stack, interruptions
    $swstack = 32                                               ' 32 bytes de stack pour les appels de fonctions
    $framesize = 32                                             '32                                             ' 32 bytes de heap pour les variables locales
    $baud = 9600                                                ' uniquement si on utilise le port série
    
    
    ' Le portd c est configuré pour des sorties
    
    Config Portc = Output
    
    ' saut pc 5 qui est entrée (Boutons)
    Config Pinc.5 = Input
    
    
    Config Adc = Single , Prescaler = Auto , Reference = Internal
    
    Dim W As Word
    
    
    Led Verte Alias Portc.0
    Led Bleue Alias Portc.1
    Led Rouge Alias Portc.2
    
    
    Start Adc
    
          '  5V = 1024
         ' 1 unité = 4,88 mV
    
    Do
    
    
    'Lecture De La Valeur Du Potemtiomètre Sur Adc5
    
    W = Getadc(5)
    
    Shift W , Right , 2
    
    
    If W < 0 And W < 300 Then                                   ' pont diviseur pour 1V
    Set Led Rouge
    Reset Led Bleue
    Reset Led Verte
    End If
    
    
    If W > 300 And W < 700 Then
    Reset Led Rouge                                             'pont diviseur pour 2,5 V
    Set Led Bleue
    Reset Led Verte
    End If
    
    
    If W > 700 And W < 1024 Then                                'pont diviseur pour 3,8 V
    Reset Led Rouge
    Reset Led Bleue
    Set Led Verte
    End If
    
    
    Loop
    End
    J'ai un doute pour la conversion de 10 bit en 8 bit. Est ce bien comme ça ?
    Qu'est ce qui pourrait causer problème ?


    Merci

    -----
    Dernière modification par gienas ; 25/11/2011 à 20h53. Motif: Ajouté les balise code, obligatoires pour les programmes

  2. #2
    vincent66

    Re : Bascom : getADC 10 bits => 8 bits

    Bonsoir !
    Le shift w right, 2 est correct, w n'est alors plus qu'une valeur 8 bits, il faudrait peut-être faire un w=w and H00FF pour que ça soit plus propre...
    Alors pourquoi par la suite faire des comparaisons avec des valeurs 10 bits comprises entre 0 et 1024..!
    Et au passage bizarre non la comparaison if w<o and w<300 , non..?!
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    invite15e51044

    Re : Bascom : getADC 10 bits => 8 bits

    Oui juste, je suis repasser e valeur de 0 à 256 (8bits) mais ça ne fonctionne toujours pas. Je dois le placer ou le w=w and H00FF

    Code:
    W = Getadc(5)
    
    Shift W , Right , 2
    
    
    If W > 0 And W < 75 Then                                    ' pont diviseur pour 1V
    Set Led Rouge
    Reset Led Bleue
    Reset Led Verte                                             'End If
    End If
    
    
    If W > 75 And W < 175 Then
    Reset Led Rouge                                             'pont diviseur pour 2,5 V
    Set Led Bleue
    Reset Led Verte
    End If
    
    
    
    If W > 175 And W < 255 Then                                 'pont diviseur pour 3,8 V
    Reset Led Rouge
    Reset Led Bleue
    Set Led Verte
    End If
    Merci
    Dernière modification par gienas ; 25/11/2011 à 20h54. Motif: Ajouté les balise code, obligatoires pour les programmes

  4. #4
    vincent66

    Re : Bascom : getADC 10 bits => 8 bits

    Juste après le sift right, ça met les 8msb à 0 et garde tes 8lsb intacts, mais je ne suis pas sur du format H00FF pour spécifier de l'hexadécimal...
    Vincent
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  5. A voir en vidéo sur Futura
  6. #5
    invite15e51044

    Re : Bascom : getADC 10 bits => 8 bits

    Ce format ne fonctionne pas.
    Quelqu'un peut il me dire pourquoi ma lecture adc ne fonctionne elle pas ? Les 3 tensions différentes (1, 2.5 et 3.8 V) arrivent bien à la pin 28 de mon atmega48.

    Merci d'avance

  7. #6
    invite29971eb1

    Re : Bascom : getADC 10 bits => 8 bits

    Tu configures ton port C en sortie (comprendre sortie numérique) alors que c'est le port utilisé par l'ADC, on a droit à un joli conflit là.

    Edit: je viens de voir la ligne dessous...mais ça ne serait pas plutôt ANALOG ou un truc dans le genre?

  8. #7
    invite15e51044

    Re : Bascom : getADC 10 bits => 8 bits

    problème résolu :

    Config Adc = Single , Prescaler = Auto , Reference = Avcc

    Et non reference = internal.

    Merci

Discussions similaires

  1. VHDL : Conversion 16 bits vers 32 bits
    Par invite7d433016 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/10/2011, 21h34
  2. soustraction 16 bits,deux registres 8 bits, assembleur
    Par invite480f4512 dans le forum Électronique
    Réponses: 5
    Dernier message: 29/03/2011, 20h59
  3. [C] - Passage de mots de n bits en mode de 8 bits
    Par invite3c35244f dans le forum Électronique
    Réponses: 17
    Dernier message: 30/07/2009, 11h02
  4. récupération du mot de 8 bits sur 4 bits
    Par grd666 dans le forum Électronique
    Réponses: 3
    Dernier message: 09/07/2008, 11h16
  5. Convertir 12 bits série en 7 bits paralléle avec un HC11 ?
    Par invite0ee134f7 dans le forum Électronique
    Réponses: 2
    Dernier message: 03/03/2005, 09h39
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...