Ik ben al een uur aan het surfen maar kan nergens vinden hoe je een programma schrijft in bascom dat een analoog signaal aan een microcontroller binnenleest en dit omzet naar een digitaal getal.
Het kan toch niet zo moeilijk zijn? Kan iemand me helpen?
Als je in de help file kijkt of in je sample directory was je klaar.
Uit de sample dir van Bascom ADC.BAS.
[code=Bascom]
'--------------------------------------------------------------------
' ADC.BAS
' demonstration of GETADC() function for 8535 or M163 micro
' Getadc() will also work for other AVR chips that have an ADC converter
'--------------------------------------------------------------------
$regfile = "8535def.dat" ' we use the 8535
'configure single mode and auto prescaler setting
'The single mode must be used with the GETADC() function
'The prescaler divides the internal clock by 2,4,8,15,32,64 or 128
'Because the ADC needs a clock from 50-200 KHz
'The AUTO feature, will select the highest clockrate possible
Config Adc = Single , Prescaler = Auto
'Now give power to the chip
Start Adc
'With STOP ADC, you can remove the power from the chip
'Stop Adc
Dim W As Word , Channel As Byte
Channel = 0
'now read A/D value from channel 0
Do
W = Getadc(channel)
Print "Channel " ; Channel ; " value " ; W
Incr Channel
If Channel > 7 Then Channel = 0
Loop
End
'The new M163 has options for the reference voltage
'For this chip you can use the additional param :
'Config Adc = Single , Prescaler = Auto, Reference = Internal
'The reference param may be :
'OFF : AREF, internal reference turned off
'AVCC : AVCC, with external capacitor at AREF pin
'INTERNAL : Internal 2.56 voltage reference with external capacitor ar AREF pin
'Using the additional param on chip that do not have the internal reference will have no effect.
[/code]
Dat is dus hetgene wat ik niet snap. Wat wordt hier uitgelezen of gesampeld? Je moet toch een signaal uitlezen dat je bijvoorbeeld aan pina.0 aanlegt? Hoe maak je dit bascom dan wijs?
klein is fijn
Moderator
Op 11 oktober 2009 11:48:13 schreef hazefeets:
Je moet toch een signaal uitlezen dat je bijvoorbeeld aan pina.0 aanlegt? Hoe maak je dit bascom dan wijs?
Als je dit:
W = Getadc(channel)nou eens vergelijkt met de pinout van een gemiddelde AVR met ADC's, hoe denk je dan dat bascom weet welke adc ie op dat moment aan het samplen is?
[Bericht gewijzigd door klein is fijn op (11%)]
klein is fijn
Moderator
wah.. Gooi die pina.0 aub even het raam uit, die heeft hier niets mee te maken.
In de pinout van een AVR staat ADC1, ADC2, etc bij een stel pinnen.
ADC1 = channel 1
ADC2 = channel 2
etc.
Met getadc(1) sample je de waarde van ADC1. Aan welke pin dat ding hangt, dat moet je opzoeken in de pinout van dat ding.
Als je nu in de datasheet v/d M32 kijkt dan zie je dat pina.0 = ADC0, pina.1 = ADC1, pina.2 = ADC2, etc...
De 1 in ADC1 staat voor de channel.
Wil jij dus pina.0 gebruiken dan gebruik je dus channel 0.
In Bascom is dat dan dus;
[code=Bascom]
W = Getadc(0)
[/code]
Of zoals in het voorbeeld
[code=Bascom]
Channel=0
W = Getadc(Channel)
[/code]