Wiem że podobne tematy krążą po forum, to też od paru tygodni czytam je uważnie i próbuję rozwiązać mój problem ,lecz z marnym skutkiem…:/
Jestem początkujący w programowaniu w BascomAVR, w związku z czym napotykam na duże trudności w realizacji przedstawionego poniżej problemu(jest to kwestia zalki z jednego przedmiotu
).
Problem jest następujący:
- zapis danych z termometru i zegara czasu rzeczywistego na kartę MMC w określonych przedziałach czasu.(wiąże się to z utworzeniem systemu plików FAT 16 na karcie MMC).
Poniżej zamieszczam kod do konwersji czasu i temperatury (tyle dałem rady zrobić
),
---pozostała najistotniejsza część: stworzenie FAT-u i zapis.
Jeśli ktoś z Was ma na swoim koncie taki programik- to proszę o wszelką pomoc!!.
Ps: załączam układ w Proteusie i pliki.
![[BascomAVR][Atmega 128][Zapis do karty MMC + Fat 16] [BascomAVR][Atmega 128][Zapis do karty MMC + Fat 16]](https://obrazki.elektroda.pl/18_1226263834_thumb.jpg)
Jestem początkujący w programowaniu w BascomAVR, w związku z czym napotykam na duże trudności w realizacji przedstawionego poniżej problemu(jest to kwestia zalki z jednego przedmiotu
Problem jest następujący:
- zapis danych z termometru i zegara czasu rzeczywistego na kartę MMC w określonych przedziałach czasu.(wiąże się to z utworzeniem systemu plików FAT 16 na karcie MMC).
Poniżej zamieszczam kod do konwersji czasu i temperatury (tyle dałem rady zrobić
$regfile = "m128def.dat"
$lib = "MMC.LIB"
$crystal = 11059200
Config Lcdpin = Pin , Db4 = Portd.4 , Db6 = Portd.6 , Db5 = Portd.5 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 4
Config Scl = Portb.7
Config Sda = Portb.6
'********************** SPI mode ********************************************
Config Pinb.0 = Output ' define here Pin for CS of MMC/SD Card
Mmc_cs Alias Portb.0
Set Mmc_cs
' HW-SPI is configured to highest Speed
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
Spsr = 1 ' Double speed on ATMega128
Spiinit
'****************************************************************************
Const Ds1307w = &B11010000
Const Ds1307r = &B11010001
Const Ds1621w = &B10010000
Const Ds1621r = &B10010001
Deflcdchar 0 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32
Deflcdchar 1 , 4 , 10 , 10 , 14 , 31 , 31 , 14 , 32
Dim Sekundy As Byte , Minuty As Byte , Godziny As Byte , Dzien As Byte , Dzienty As String * 3
Dim Dzient As Byte , Miesiac As Byte , Rok As Byte
Dim Tempd As Byte , Tempd1 As Byte , A As Word , Ujemna As Word
Do
I2cstart
I2cwbyte Ds1621w
I2cwbyte 238
I2cstop
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstop
I2cstart
I2cwbyte Ds1307r
I2crbyte Sekundy , 8
I2crbyte Minuty , 8
I2crbyte Godziny , 8
I2crbyte Dzien , 8
I2crbyte Dzient , 8
I2crbyte Miesiac , 8
I2crbyte Rok , 9
I2cstop
Sekundy = Makedec(sekundy)
Minuty = Makedec(minuty)
Godziny = Makedec(godziny)
Dzien = Makedec(dzien)
Dzient = Makedec(dzient)
Miesiac = Makedec(miesiac)
Rok = Makedec(rok)
Select Case Dzien
Case 1 : Dzienty = "NIE"
Case 2 : Dzienty = "PON"
Case 3 : Dzienty = "WT "
Case 4 : Dzienty = "SR "
Case 5 : Dzienty = "CZW"
Case 6 : Dzienty = "PIA"
Case 7 : Dzienty = "SOB"
End Select
Waitms 250
Cls
Cursor Off
Locate 1 , 1
If Minuty < 10 Then
Lcd ; Dzienty ; " | " ; Godziny ; ":0" ; Minuty ; ":" ; Sekundy
Else
Lcd ; Dzienty ; " | " ; Godziny ; ":" ; Minuty ; ":" ; Sekundy
End If
Locate 2 , 3
If Rok < 10 Then
Lcd ; Dzient ; "/" ; Miesiac ; "/0" ; Rok
Else
Lcd ; Dzient ; "/" ; Miesiac ; "/" ; Rok
End If
I2cstart
I2cwbyte Ds1621w
I2cwbyte 170
I2cstart
I2cwbyte Ds1621r
I2crbyte Tempd , 8
I2crbyte Tempd1 , 9
A = Tempd1 / 25
I2cstop
If Tempd < 200 Then
Locate 3 , 1
Lcd ; Chr(1) ; " +" ; Tempd ; "." ; A ; Chr(0) ; "C" ;
Else
If A = 5 Then
Ujemna = 255 - Tempd
Else
Ujemna = 256 - Tempd
End If
Locate 3 , 1
Lcd ; Chr(1) ; " -" ; Ujemna ; "." ; A ; Chr(0) ; "C" ;
End If
Loop
End
---pozostała najistotniejsza część: stworzenie FAT-u i zapis.
Jeśli ktoś z Was ma na swoim koncie taki programik- to proszę o wszelką pomoc!!.
Ps: załączam układ w Proteusie i pliki.