Picproje Elektronik Sitesi

DERLEYİCİLER => Proton+ => Konuyu başlatan: POWER - 07 Mayıs 2018, 00:41:28

Başlık: dht22 okuma sorunu
Gönderen: POWER - 07 Mayıs 2018, 00:41:28
Herkeze iyi geceler,
dht22 ısı-nem sensörü için kod mevcut.sensörün okunmasında problem yok.fakat kesme ile beraber çalıştıdığım zaman bir yerlerde takılıyor.tek başına sensör okuma kısmını gerçek devresinde uzun süre denedim problem yok.sensör kısmını iptal edip kesme bölümünü uzun süre denedim yine problem olmadı.fakat kesme ve sensör okuma kısmı beraber çalıştığı zaman bir iki dakika sonra kilitleniyor.stack sorunu yok.Protonu yeni kullamaya başladım kesmedemi bir problem var anlayamadım. 
Device 16F628A
Config INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,LVP_off,MCLRE_OFF ,BODEN_OFF 
Xtal 4

TRISA =0
TRISB =0
PORTA =0
PORTB =0

INTCON=%10100000       
TMR0=0
OPTION_REG=%10000101
On_Hardware_Interrupt GoTo KESME
CMCON =7

Declare All_Digital TRUE
Declare LCD_DTPin PORTB.0  ' LCD Data Pin 
Declare LCD_RSPin PORTB.4  ' LCD RS Pin
Declare LCD_ENPin PORTA.4  ' LCD EN Pin
Declare LCD_Lines 2        ' LCD Satır
Declare LCD_Interface 4    ' LCD Data Pin Sayısı 4

Dim I As Byte
Dim TaMrUt As Word
Dim OnDaRuT As Byte
Dim tAmIsI As Word
Dim OnDaIsI As Byte
Dim cOnTroL As Byte
Dim DAKIKA As Word
Dim SANIYE As Byte
Dim SAY As Byte

Symbol dTa  =PORTA.3
Cls
DAKIKA=0
SANIYE=0
SAY=0
DelayMS 200

BASLA:
      GoSub EKRAN
      PAUSE 100
      OnDaRuT=TaMrUt
      GoSub SeNsOROkU
      OnDaRuT=TaMrUt
GoTo BASLA

SeNsOROkU:     
    Output dTa
    dTa =1
    DelayUS 5
    dTa =0
    DelayMS 5      '1-10 ms bekle
    dTa =1        'Data pinini High yap
    DelayUS 40    '40 us bekle
    Input dTa
    DelayUS 5
    While dTa =0
    Wend
    DelayUS 80
    If dTa =1 Then  HaTa

TaMrUt=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend 
    DelayUS 30
    If dTa=1 Then
    SetBit TaMrUt,I
    EndIf
    While dTa =1
    Wend
    Next

tAmIsI=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa=0
    Wend
    DelayUS 30
    If dTa=1 Then
    SetBit tAmIsI,I
    EndIf
    While dTa =1
    Wend
    Next         

cOnTroL=0
    For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend
    DelayUS 30
    If dTa=1 Then
    SetBit cOnTroL,I
    EndIf
    While dTa =1
    Wend 
    Next
    Output dTa
    dTa=0
    OnDaRuT=TaMrUt//10 :TaMrUt =TaMrUt /10
    OnDaIsI=tAmIsI//10 :tAmIsI =tAmIsI /10
    Return

EKRAN:
    Print At 1,1,Dec2 TaMrUt ,".",Dec1 OnDaRuT," RH  ",Dec2 tAmIsI,".",Dec1 OnDaIsI," C"
    Print At 2,6,"        "
    Print At 2,1,Dec2 DAKIKA,":",Dec2 SANIYE
    Print At 2,15,Dec2 SAY 
    DelayMS 400
    Return

HaTa:
    Print At 1,12,"    "
    Print At 1,1,"S E N S O R"
    Print At 2,1,"    "
    Print At 2,6,"H A T A S I"
    DelayMS 1000
GoTo SeNsOROkU

KESME:
Context  Save
SAY=SAY+1
    If SAY<61 Then GoTo CIK
      SAY=0       
      SANIYE=SANIYE+1
    If SANIYE >= 60 Then
      SANIYE=0
      DAKIKA=DAKIKA+1
    If DAKIKA >= 60 Then
      DAKIKA=0
    EndIf
    EndIf
CIK:
INTCON.2=0
Context Restore
End
İsi ve Proton dosyaları.
http://s7.dosya.tc/server5/ga4txx/DHT22.rar.html
Başlık: Ynt: dht22 okuma sorunu
Gönderen: M.Salim GÜLLÜCE - 07 Mayıs 2018, 10:13:14
Alıntı yapılan: POWER - 07 Mayıs 2018, 00:41:28Herkeze iyi geceler,
dht22 ısı-nem sensörü için kod mevcut.sensörün okunmasında problem yok.fakat kesme ile beraber çalıştıdığım zaman bir yerlerde takılıyor.tek başına sensör okuma kısmını gerçek devresinde uzun süre denedim problem yok.sensör kısmını iptal edip kesme bölümünü uzun süre denedim yine problem olmadı.fakat kesme ve sensör okuma kısmı beraber çalıştığı zaman bir iki dakika sonra kilitleniyor.stack sorunu yok.Protonu yeni kullamaya başladım kesmedemi bir problem var anlayamadım. 

Herkez kelimesini görürlerse hiç şansın yok.
Onu diyim sana :)
(https://scontent.fist1-1.fna.fbcdn.net/v/t1.0-9/29683124_10214790857941726_4558766270999555858_n.jpg?_nc_cat=0&oh=91499b14d90b27f142d80fc76916d44f&oe=5B5D023E)
(https://scontent.fist1-1.fna.fbcdn.net/v/t1.0-9/10363322_10203315958476411_6439849232799648729_n.jpg?_nc_cat=0&oh=99bedd3fc8cd8f8f2b02a10e454bbc63&oe=5B52ADFA)
Dahi anlamındaki de ayrı yazılır. (https://www.facebook.com/groups/mutlubirgelecek/?fref=mentions)
Başlık: Ynt: dht22 okuma sorunu
Gönderen: F.T - 07 Mayıs 2018, 10:31:51
Power Hocam simülasyondamı oluyor bu sorun yoksa gerçek devredimi?
Sorunun  while wend kullanımı ile alakalı olduğunu düşünüyorum.
Ayrıca kesme içinde tmr ön yüklemesi olması gerekiyor.
 PAUSE 100 yeine delayms 100 kullanmalısınız.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 07 Mayıs 2018, 11:27:18
sağol, mehmet salim hocam çözüm dışındaki cevabınızdan dolayı
FT hocam,sorun gerçek devredede simülasyondada oluyor.söylediklerinizi deneyeceğim.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: M.Salim GÜLLÜCE - 08 Mayıs 2018, 10:58:22
Alıntı yapılan: POWER - 07 Mayıs 2018, 11:27:18sağol, mehmet salim hocam çözüm dışındaki cevabınızdan dolayı
FT hocam,sorun gerçek devredede simülasyondada oluyor.söylediklerinizi deneyeceğim.
Eywallah.
Biraz nükte katayım istedim :)
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Maxim - 08 Mayıs 2018, 11:42:00
@POWER
evet, senin hex dosyası kitleniyor simulasyonda 30sn 40sn sonra.

ben kodu tekrar derledim, 2 düzeltme yaptım pause ve declare
15dk çalıştırdım bir sorun yok. (versiyon 3.6.0.7)
*Bu arada proteusta bas kodunu gösterip, satır satır komutu çalıştırabiliyoruz.
(proton için geçerlidir)

Device 16F628A
Config INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,LVP_off,MCLRE_OFF ,BODEN_OFF 
Declare Xtal=4

TRISA =0
TRISB =0
PORTA =0
PORTB =0

INTCON=%10100000       
TMR0=0
OPTION_REG=%10000101
On_Hardware_Interrupt GoTo KESME
CMCON =7

Declare All_Digital TRUE
Declare LCD_DTPin PORTB.0  ' LCD Data Pin 
Declare LCD_RSPin PORTB.4  ' LCD RS Pin
Declare LCD_ENPin PORTA.4  ' LCD EN Pin
Declare LCD_Lines 2        ' LCD Satır
Declare LCD_Interface 4    ' LCD Data Pin Sayısı 4

Dim I As Byte
Dim TaMrUt As Word
Dim OnDaRuT As Byte
Dim tAmIsI As Word
Dim OnDaIsI As Byte
Dim cOnTroL As Byte
Dim DAKIKA As Word
Dim SANIYE As Byte
Dim SAY As Byte

Symbol dTa  =PORTA.3
Cls
DAKIKA=0
SANIYE=0
SAY=0
DelayMS 200

BASLA:
      GoSub EKRAN
      DelayMS 100
      OnDaRuT=TaMrUt
      GoSub SeNsOROkU
      OnDaRuT=TaMrUt
GoTo BASLA

SeNsOROkU:     
    Output dTa
    dTa =1
    DelayUS 5
    dTa =0
    DelayMS 5      '1-10 ms bekle
    dTa =1        'Data pinini High yap
    DelayUS 40    '40 us bekle
    Input dTa
    DelayUS 5
    While dTa =0
    Wend
    DelayUS 80
    If dTa =1 Then  HaTa

TaMrUt=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend 
    DelayUS 30
    If dTa=1 Then
    SetBit TaMrUt,I
    EndIf
    While dTa =1
    Wend
    Next

tAmIsI=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa=0
    Wend
    DelayUS 30
    If dTa=1 Then
    SetBit tAmIsI,I
    EndIf
    While dTa =1
    Wend
    Next         

cOnTroL=0
    For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend
    DelayUS 30
    If dTa=1 Then
    SetBit cOnTroL,I
    EndIf
    While dTa =1
    Wend 
    Next
    Output dTa
    dTa=0
    OnDaRuT=TaMrUt//10 :TaMrUt =TaMrUt /10
    OnDaIsI=tAmIsI//10 :tAmIsI =tAmIsI /10
    Return

EKRAN:
    Print At 1,1,Dec2 TaMrUt ,".",Dec1 OnDaRuT," RH  ",Dec2 tAmIsI,".",Dec1 OnDaIsI," C"
    Print At 2,6,"        "
    Print At 2,1,Dec2 DAKIKA,":",Dec2 SANIYE
    Print At 2,15,Dec2 SAY 
    DelayMS 400
    Return

HaTa:
    Print At 1,12,"    "
    Print At 1,1,"S E N S O R"
    Print At 2,1,"    "
    Print At 2,6,"H A T A S I"
    DelayMS 1000
GoTo SeNsOROkU

KESME:
Context  Save
SAY=SAY+1
    If SAY<61 Then GoTo CIK
      SAY=0       
      SANIYE=SANIYE+1
    If SANIYE >= 60 Then
      SANIYE=0
      DAKIKA=DAKIKA+1
    If DAKIKA >= 60 Then
      DAKIKA=0
    EndIf
    EndIf
CIK:
INTCON.2=0
Context Restore
End
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 08 Mayıs 2018, 12:53:48
[quote author=POWER link=msg=558371 date=1525642888]
cOnTroL=0
    For I=7 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend
    DelayUS 30
    If dTa=1 Then
    SetBit cOnTroL,I
    EndIf
    While dTa =1
    Wend 
    Next
dün akşam proğramı satır satır çalıştırdım.
yukarıdaki
While dTa =1
wend
döngüsünde takılıp kaldığı gördüm.bu döngüyü iptal edip çalıştırdım proğramı(simülasyon ver gerçek devresinde)bir sıkıntı olmadı.fakat iptal ettiğim bölümün sensörün sağlıklı çalışmasına etkisi nedir bilmiyorum.şimdi işte olduğum için imkanım yok sizin derlemenizide deneyeceğim maxim hocam.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Maxim - 08 Mayıs 2018, 16:06:27
:10000000000000000000DF28FF0003088301FE005D
:10001000492A8030A100FE309A2001309A207530A4
:10002000A6003030AB28A101A117AE00FE309A2007
:100030002E089A28A401A900AA01A01124080319D6
:10004000A0150530A3002730A8001030332003305E
:10005000A800E8303320A80164303320A8010A301A
:10006000332029083A28A7002A08A6002908A50055
:10007000BF202508A500A3030319A0112408031914
:100080004428230203184B282508031DA011A0199A
:100090004B28303E9A280800AC0005120612831641
:1000A00005120612F030860583122C08A018762857
:1000B0003E30A6008030AB203330AB008B201330B5
:1000C000A6008830AB208B206430AA208B206430BF
:1000D000AA202230AB008B20283075200C307520F0
:1000E00006307520A0142C0876282014AB00201CA4
:1000F00084280612033C031C892889200730A600A7
:10010000D030AB20031408002014FE3C03199828BB
:100110000616AB0E201C20100516F03086052B08A5
:100120000F3986040512AB0E20188B283230AA2016
:100130002C08DB28A11B4C280800A801A700FF30D1
:10014000A707031CA807031CDB280330A600DF3029
:10015000AB209F28A601E83EA500A609FC30031CA1
:10016000B428A5070318B128A5070000A60FB128D9
:100170002518BA28A51CBE280000BE280800AA0120
:10018000A9011030AB00260DA90DAA0D2708A90260
:100190002808031C280FAA020318D5282708A90736
:1001A00028080318280FAA070310A50DA60DAB0BEE
:1001B000C328250808008313831203130800830152
:1001C000A00107309F0083168501860183128501F7
:1001D0008601A0308B0081018530831681000730B5
:1001E00083129F000920B801B701B901BA01C830D4
:1001F0009D20A62164309D203008B20002213008E5
:10020000B200F9288316851183128515072908295C
:100210000000851105309D2085152830AA20831601
:10022000851512291329000083128519182914290C
:100230005030AA208519FD29B101B0010F30AF005F
:100240008519232920291E30AA20851D35292F082C
:10025000A200A501A601A20A0314A50DA60DA20BDA
:100260002D292608B1042508B004851D3829352913
:100270000130AF0203182029B401B3010F30AF00E1
:100280008519432940291E30AA20851D55292F088C
:10029000A200A501A601A20A0314A50DA60DA20B9A
:1002A0004D292608B4042508B304851D582955296D
:1002B0000130AF0203184029B6010730AF0085199D
:1002C00062295F291E30AA20851D70292F08A200EF
:1002D000A501A20A0314A50DA20B6B292508B604DB
:1002E000851D732970290130AF0203185F29831619
:1002F0008511831285113108A6003008A500A801D8
:100300000A30A700BF202908B2003108A600300833
:10031000A500A8010A30A700BF20B0002608B10040
:100320003408A6003308A500A8010A30A700BF20A2
:100330002908B5003408A6003308A500A8010A3032
:10034000A700BF20B3002608B40008008030A10039
:1003500013200230A4003008A9003108AA001D2093
:100360002E304C200130A40032081B2020304C20BD
:1003700052304C2048304C2020304C204C204C2017
:100380000230A4003308A9003408AA001D202E3032
:100390004C200130A40035081B2020304C20433075
:1003A0004C208030A100C530132020304C204C2040
:1003B0004C204C204C204C204C204C204C20803099
:1003C000A100C03013200230A4003708A90038086B
:1003D000AA001D203A304C200230A40039081B200E
:1003E0008030A100CE3013200230A4003A081B2038
:1003F0000130A80090309E2008008030A1008B3092
:10040000132020304C204C204C204C204C2080309D
:10041000A100132053304C2020304C2045304C207C
:1004200020304C204E304C2020304C2053304C207B
:1004300020304C204F304C2020304C2052304C206B
:100440008030A100C030132020304C204C204C20A4
:100450004C204C208030A100C530132048304C2067
:1004600020304C2041304C2020304C2054304C2047
:1004700020304C2041304C2020304C2053304C2038
:1004800020304C2049304C200330A800E8309E201A
:100490000229BA0A3D303A02031C632ABA01B90A9A
:1004A0003C303902031C632AB901B70A0319B80AA0
:1004B000B808031D5F2A3C303702031C632A8312ED
:1004C0000313B801B7010B117E088300FF0E7F0EE6
:0604D0000900692A6A2AF6
:02400E00103F61
:00000001FF
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 08 Mayıs 2018, 17:40:39
maxim hocam derlemeden sonra sigorta ayarları ile ilgili tek satırlık mesaj veriyor onun anlamı nedir?
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Maxim - 08 Mayıs 2018, 18:15:37
nedir mesaj?
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 09 Mayıs 2018, 23:45:46
(https://thumb.ibb.co/jcUMyy/ads_z.jpg) (https://ibb.co/jcUMyy)
Hocam kusura bakmayın yoğunluktan dolayı geciktim.Sizin düzeltme yaptığınız proğramda,hazır verdiğiniz hex dosyasınıda denedim malesef donma yapıyor.Bu aralar biraz yoğunum üzerinde fazla çalışamıyorum.hata/uyarı mesajınında resmini verdim çok önemli değil anladığım kadarıyla.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Maxim - 10 Mayıs 2018, 19:08:34
oradaki mesaj uyarı (hint) bende çıkmıyor bu arada
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 11 Mayıs 2018, 00:33:49
birinci mesajda verdiğim proğramdaki sigorta ayarlarını 16f88 için kullanamıyorum hata veriyor
(https://thumb.ibb.co/jOEr0d/ads_z.jpg) (https://ibb.co/jOEr0d)
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Maxim - 11 Mayıs 2018, 07:15:17
olmaz tabi o ayar 16F628A için

@CONFIG_REQ
@__CONFIG _CONFIG1, INTRC_IO & WDT_OFF & PWRTE_ON & MCLR_OFF & BODEN_ON & LVP_OFF & WRT_PROTECT_OFF & CP_OFF & CPD_OFF & DEBUG_OFF
Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 05 Haziran 2018, 00:25:33
iyi geceler,
dht22 nin okunması ile ilgili proğram.
Device = 16F88
@CONFIG_REQ
@__CONFIG _CONFIG1, INTRC_IO & WDT_OFF & PWRTE_ON & MCLR_OFF & BODEN_OFF & LVP_OFF & WRT_PROTECT_OFF & CP_OFF & CPD_OFF & DEBUG_OFF
Xtal 4

'Device = 16F628A
'Config INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,LVP_off,MCLRE_OFF ,BODEN_OFF
'Xtal 4
 
TRISA=%00000000
TRISB=%11100000
PORTA=0
PORTB=0
OPTION_REG.7=0
CMCON =7
ANSEL=0

Declare All_Digital TRUE
Declare LCD_DTPin PORTB.0  ' LCD Data Pin 
Declare LCD_RSPin PORTB.4  ' LCD RS Pin
Declare LCD_ENPin PORTA.4  ' LCD EN Pin
Declare LCD_Lines 2        ' LCD Satır
Declare LCD_Interface 4    ' LCD Data Pin Sayısı 4

Symbol dTa =PORTA.3

Dim Y As Byte
Dim I As Byte
Dim TaMrUt As Word
Dim OnDaRuT As Byte
Dim tAmIsI As Word
Dim OnDaIsI As Byte
Dim cOnTroL As Byte
Dim saat As Byte
Dim dakika As Byte
Dim saniye As Byte

DelayMS 400
BASLA:
      GoSub SeNsOROkU
      GoSub EKRAN
      DelayMS 100
GoTo BASLA
   
EKRAN:
    Print At 1,1,"ISI= ",Dec2 tAmIsI,".",Dec1 OnDaIsI ,"  C  "
    Print At 2,1,"NEM= ",Dec2 TaMrUt ,".",Dec1 OnDaRuT," RH  "
Return
                             
SeNsOROkU:     
    Output dTa
    dTa =1
    DelayUS 5
    dTa =0
    DelayMS 5      '1-10 ms bekle
    dTa =1        'Data pinini High yap
    DelayUS 40    '40 us bekle
    Input dTa
    DelayUS 5
    While dTa =0
    Wend
    DelayUS 80
    If dTa =1 Then HaTa
TaMrUt=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend 
    DelayUS 30
    If dTa =1 Then LoadBit TaMrUt,I,1
    If dTa=1 Then
    SetBit TaMrUt,I
    EndIf
    While dTa =1
    Wend
    Next

tAmIsI=0
    For I=15 To 0 STEP-1  'MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa=0
    Wend
    DelayUS 30
    If dTa=1 Then LoadBit tAmIsI,I,1
    If dTa=1 Then
    SetBit tAmIsI,I
    EndIf
    While dTa =1
    Wend
    Next         
cOnTroL=0
    For I=7 To 0 STEP-1  '7 de hata veriyo.MSB bitleri önce geleceği için döngümüzü tersten kuruyoruz.
    While dTa =0
    Wend
    DelayUS 30
    If dTa=1 Then LoadBit cOnTroL,I,1
    If dTa=1 Then
    SetBit cOnTroL,I
    EndIf
''-------------------------------BURASI SORUNLU-------------------------------------------
    While dTa =1
    Wend 
''''---------------------------------------------------------------------------------------
    Next
    Output dTa
    dTa=0

    OnDaRuT=TaMrUt//10
    TaMrUt =TaMrUt /10
    OnDaIsI=tAmIsI//10
    tAmIsI =tAmIsI /10
Return

HaTa:
    Print At 1,12,"    "
    Print At 1,1,"S E N S O R"
    Print At 2,1,"    "
    Print At 2,6,"H A T A S I"
    DelayMS 1000
Return

End
16f628 ile simülasyonda ve gerçek devresinde de sorunsuz çalışıyor.16f88 için sigorta ayarlarını ve ansel=0 ekleyip derleme yapıyorum sorunsuz derliyor.fakat simülasyondada gerçek devresindede sensor hatası veriyor.aynı sensoru kullanıyorum.atladım nokta nerde bilemedim.
tüm dosyaları yüklüyorum.
http://s7.dosya.tc/server6/hmvtwv/ISI-NEM.rar.html
Başlık: Ynt: dht22 okuma sorunu
Gönderen: ete - 05 Haziran 2018, 09:11:11
16F88 dahili osilatörü tek seçenekli değildir. (628A da tek seçenek 4Mhz vardır) .
Bu nedenle OSCCON registerine de değer vererek çalışma freansını belirlemek gerekir.
Zaten aynı kod birini çalıştırıyor diğerini çalıştırmıyor ise kesinlikle zamanlama hatası var demektir. Onun da yaratan OSCCON registerine değer verilmemesi olmalıdır.

OSCCON=%01101100  bu değer 4Mhz içindir.
Verip deneyin lütfen.

Ete

Başlık: Ynt: dht22 okuma sorunu
Gönderen: POWER - 06 Haziran 2018, 10:41:00
Hocam,
verdiğiniz değerleri uyguladım sorun çözüldü.Teşekkür ederim.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: mustafa_cmbz - 16 Haziran 2018, 21:33:09
benim de bir sorum olacak bu konu ile ilgili..

Benimde mesela herhangi bir seri ile DHT11 kullanırken 4mhz de çalıştırdığımda sorun yok ama farklı bir ihtiyaç için atıyorum 20mhz çalışmak istediğimde DHT11 ile haberleşemiyorum.

Anladığım kadarıyla haberleşme kısmı delayms ile yapıldığı için kristal değiştiğinde sorun yaratıyor.Bu durumu nasıl çözeriz ?

yani bekleme sürelerini kullanacağımız kristal e göre tekrar mı hesaplamak gerek yoksa ekstra bir ayar mı gerekiyor ?
Başlık: Ynt: dht22 okuma sorunu
Gönderen: Hattusa - 17 Haziran 2018, 10:07:22
ETE hocam;

şimdi delayms 100 dediğimizde, 4mhz ile 40 mhz arasında 100mS lerin farkı oluyormu? oluyorsa ben yanlış biliyorum demektir.
Başlık: Ynt: dht22 okuma sorunu
Gönderen: ete - 17 Haziran 2018, 12:18:44
Normal şartlarda programlara eklediğiniz çalışma frekansını belirleyen komut satırları;
DEFINE OSC 4 veya DEFINE OSC 20 yada Xtal = 4 veya Xtal = 20 gibi komutlar işte bu işe yaramaktadır. Derleyici bu komuta göre delayms 100 denildiği zaman;
4 mhz de 100.000 komut çevrimi (bir komut çevrimi 1us dir)
20 mhz de ise 500.000 komut çevrimi (1 komut çevrimi 0,2us dir) kadar süre geçireceğini bilir.
Sonuçta programcının bir tedbir alması gerekmiyor. 4mhz de 100 ms lik gecikme komutu ile 20 Mhzde 100ms lik gecikme komutu aynı sürelerde bekleme yaptırır.
 DHT sensör ile çalışırken kodlara çok dikkat etmek gerekir. Bazı kodlar vardır örneğin 4 mhz de çalışırken oraya 10 adet NOP komutu eklerseniz bu 10us lik bir gecikme yaratır. Ama aynı komutlar 20 Mhz de 2 us lik bir gecikme yaratır. Sonuçta kodları inceleyip süreye etki eden komutları tespit etmek ona göre yeniden hesaplayıp yazmak gerekir. DHT kodları aklımda değil şu an kim etkiler bilmeden bunları yazıyorum. Kısaca 20Mhzde çalışmıyor ise sorunu süreye etki eden komutlarda aramak ve bazen de bir pinin hem giriş hem çıkış olarak kullanılırken dönüşüm için yeterli süre verilip verilmediğine bakmak gerekir. Malup DHT tek pin den haberleşen bir sensör. Bunun anlamı haberleşme pini bazen giriş bazen çıkış çalışır. O pini girişten çıkışa çevirmek az da olsa bir süre gerektirebilir. 4 Mhzde dikkate alınmayan bu süre 20 Mhz de alınması gereken bir tedbir olarak karşınıza çıkabilir.
Sonuçta sistem yüksek frekansta çalışmıyor ise bu tür farklara dikkat etmek gerekir.

Ete