logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega32][bascom][ds18b20][karta sd]

sq3fyk 14 Wrz 2010 20:28 2566 2
REKLAMA
  • #1 8510836
    sq3fyk
    Poziom 11  
    Witam
    Napisałem mały programik w celu zrozumienia obsługi karty sd.
    Program powstał z kilku innych programów które znalazłem w sieci i posklejałem w całość.
    Założenia są takie ze odczytywana jest wartość temperatury z czujnika ds18b20 i zapisywana jest na karcie sd.
    karta posiada system plików fat16 , stworzyłem plik temper.txt na karcie ale nic w nim nie jest zapisywane :(
    Dziękuje
    poniżej kod programu
    
    $regfile = "m32def.dat"
    $crystal = 16000000
    $hwstack = 128
    $swstack = 128
    $framesize = 128
    $baud = 19200
    
    
    $include "Config_MMC.bas"
    $include "Config_AVR-DOS.BAS"
    
    Config 1wire = Portd.7
    
    
    Dim Dsid(8) As Byte
    Dim T1 As String * 6
    
    
    Config Portc.0 = Output : Reset Portc.0
    Config Portc.1 = Output : Reset Portc.1
    
    Led Alias Portc.0
    Led2 Alias Portc.1
    
    Declare Sub Ds_read
    Declare Sub Write_to_sd()
    
    Do
    
    Call Ds_read
    Waitms 500
    Call Write_to_sd()
    Wait 10
    Loop
    
    
    
    
    
    Sub Write_to_sd
    
       Local Errorcode As Byte
         Gbdriveerror = Driveinit()
        If Gbdriveerror = 0 Then
          Errorcode = Initfilesystem(1)
          If Errorcode <> 0 Then
          Set Led
          Else
             Open "temper.txt" For Append As #1
             Write #1 , T1
             Flush #1
             Close #1
    
             Set Led
          End If
        Else
          Reset Led
    
       End If
    
    End Sub
    
    
    
    
    
    Sub Ds_read
        Set Led2
       Local T_ds As Integer
       1wreset
       1wwrite &HCC
       1wwrite &H44
       Waitms 800
       1wreset
       1wwrite &H55
       1wverify Dsid(1)
       1wwrite &HBE
       T_ds = 1wread(2)
       T_ds = T_ds * 10
       T_ds = T_ds / 16
       T1 = Str(t_ds)
       T1 = Format(t1 , "0.0")
       Reset Led2
       End Sub
    
  • REKLAMA
  • #3 8511394
    sq3fyk
    Poziom 11  
    Dobra uporałem się z problemem.
    Zmieniłem kwarc na 8MHz i ruszyło.Wcześniej nie wykrywało karty sd.
REKLAMA