Hallo,
Mijn naam is Daan Zeeuwe en ik heb een raar probleem met mijn 16F877a.
Ik ben bezig met de ADC functie van de 16F877a en ik gebruik de volgende code.
Device 16F877A
;CONFIG HS_OSC,PWRTE_ON,CP_OFF,WDT_OFF,BODEN_ON ;, MCRLE_OFF
Config CP_OFF , CPD_OFF , WDT_OFF , HS_OSC , PWRTE_ON , BODEN_OFF , LVP_OFF , DEBUG_OFF
All_Digital TRUE
Xtal=20
Declare LCD_Type 0
Declare LCD_Interface 4 ' 4-bit Interface
Declare LCD_Lines 4
Declare LCD_ENPin PORTC.1
Declare LCD_RSPin PORTC.0
Declare LCD_DTPin PORTB.0
'Read the value from channel 0 of the ADC and place in variable VAR1.
Adin_Res = 8 ;ADC resolutie
Adin_Tad = FRC ;de clock voor de adc extern / intern
Adin_Stime = 40;De conversie tijd
; 76543210
TRISA = %00000001
ADCON1= %01000000 ;adc instellen op de goede poorten RTFM
TRISB = %00000000 ;
TRISC = %11111100 ;
Dim adin1 As Word ;variabelen
Dim waardebuffer As Word
Clear
While 1=1
adin1 = ADIn 0
If waardebuffer <> adin1 Then ;tegen het nutteloos opnieuw op het display schrijven.
Cls
Print At 1,1, Dec adin1, " "
DelayMS 100
waardebuffer = adin1
EndIf
If adin1 > 30 And adin1 < 50 Then
DelayMS 500
ElseIf adin1 > 50 Then
DelayMS 500
EndIf ;20mSec = 50Hz, eventueel wijzigen bij ander type motor
Wend
End
Zelfs als ik de sensor niet aangesloten heb op de 16F877a PORTA.0 dan komt er al een waarde van rond de 110 op te staan en dan gaat hij langzamerhand naar beneden.
Mijn vraag is hoe komt dat en hoe kan ik dit voorkomen.
Kan dit liggen aan de condesatoren 22 uF en 0.1 uF condensator.
Of door mijn schakeling?
http://s1211.photobucket.com/albums/cc426/daanz1/?action=view&curr…
Ik heb trouwens ook de servo's even voor de zekerheid losgekopelt.
Weet iemand altublieft wat ik moet doen, want ik kom er niet meer uit.
Hoogachtend,
Daan Zeeuwe