f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - Lekcja 10

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Lekcja 10
Autor Wiadomość
sucyn

Dołączył: 25 Kwi 2013
Posty: 2
Wysłany: Czw Kwi 25, 2013 8:44 pm   Lekcja 10

Witam!
Bardzo proszę o pomoc w konfiguracji kodów z lekcji 10 abym mógł połączyć atmegę 128 z kartą SD. Sam próbowałem w ten sposób ale nie czyta karty:
Kod:
' Chip Select Pin  => DAT3
   Config Pinb.0 = Output
   'konfiguracja pinu jako wyjście
   Mmc_cs Alias Portb.0
   'przypisanie rejestrowi wyjściowemu nazwy
   Set Mmc_cs
   'początkowe ustawienie pinu
 
   ' MOSI - Pin  => DI
   Config Pinb.1 = Output
   'konfiguracja pinu
   Set Pinb.1
   'zapis do rejestru PIN
   Mmc_portmosi Alias Portb
   'nazwa dla rejestru PORTn zawierającego dany pin
   Bmmc_mosi Alias 1
   'numer pinu w porcie
 
   ' MISO - Pin  => DAT0
   Config Pinb.2 = Input
   'konfiguracja pinu
   Mmc_portmiso Alias Pinb
   'nazwa dla rejestru PINn zawierającego dany pin
   Bmmc_miso Alias 2
   'numer pinu w porcie
 
   ' SCK - Pin  => CLK
   Config Pinb.3 = Output
   'konfiguracja pinu
   Set Pinb.3
   'zapis do rejestru PIN
   Mmc_portsck Alias Portb
   'nazwa dla rejestru PORTn zawierającego dany pin
   Bmmc_sck Alias 3
   'numer pinu w porcie


wavplayer.png
Plik ściągnięto 5907 raz(y) 16,03 KB

 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Pią Kwi 26, 2013 12:08 am   

Spróbuj zmienić
Kod:

Set Pinb.3

na
Kod:

Set Portb.3

Dalej, czy w atmedze jest wyłączony bit kompatybilności z m103 i czy możesz na 100% wyeliminować kwestię połączeń?
Najlepiej pokaż cały schemat, wraz z wartościami elementów + zdjęcia układu.
_________________
http://www.piotr94.net21.pl/
 
     
sucyn

Dołączył: 25 Kwi 2013
Posty: 2
Wysłany: Pią Kwi 26, 2013 4:51 pm   

W założeniach miał to być "mówiący" sterownik domowy.Poprzednia jego wersja działała na atmedze 32.Oto fragment kodu i pliki zewnętrzne:
1.Program do odtwarzania dźwięku
Kod:

'---PROCESOR--------------------------------------------------------------------
$regfile = "m32def.dat"


$crystal = 16000000
$hwstack = 128
$swstack = 64
$framesize = 64
$baud = 38400                                               ' use baud rate
'-------------------------------------------------------------------------------


'---DEKLARACJE ZMIENNYCH--------------------------------------------------------
Dim Timer1_licznik As Byte
Dim Buffer(256) As Byte At 1024
Dim Write_position As Byte
Dim Read_position As Byte
Dim Write_position_word As Word
Dim A As Byte
Dim B As Byte
Dim Volume As Byte

'---MOJE ZMIENNE TESTOWE--------------------------------------------------------
Dim Play As Integer                                         'START/STOP ODTWARZANIA
Dim Plik As String * 100                                    'NAZWA PLIKU DO OTWARCIA

'---TIMER 1---------------------------------------------------------------------
On Timer1 Timer1_handler Nosave
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Pwm1a = 129

'---PORTY-----------------------------------------------------------------------



Config Pinb.5 = Output                                      'pwm
Reset Pinb.5

Config Porta.0 = Output                                     'dioda
Set Porta.0


'---PLIKI ZEWNĘTRZNE I BIBLIOTEKI-----------------------------------------------
$include "Card_init_v2.bas"

'---ZEGAR-----------------------------------------------------------------------
Config Clock = Soft
Enable Interrupts
Wait 2
'---WŁĄCZENIE PRZERWAŃ-------------------------------------------------

Gbdriveerror = Driveinit()
B = Initfilesystem(1)
If B <> 0 Then
Do
Toggle Porta.0
Wait 1
Loop

End If

'jeśli jest jakiś błąd karty to dioda miga cały czas
Volume = 240
Play = 1
Plik = "Suck.wav"                                           'uruchamiamy układ watchdog
'ustawiesz jaki plik ma być pierwszy
Goto Odtwarzacz



'---PĘTLA GŁÓWNA PROGRAMU-------------------------------------------------------
                                                         'KONIEC PROGRAMU PRZY OPUSZCZENIU PĘTLI GŁÓWNEJ

'---ODTWARZACZ------------------------------------------------------------------
Odtwarzacz:
Select Case Play
Case 1 : Plik = "Suck.wav"
Case 2 :
Play = 1
Plik = "Suck.wav"
End Select
'lista nazw plików do odtworzenia z karty i ich zmienna
Toggle Porta.0

  Open Plik For Binary As #2
     'otwieramy plik
    Pwm1a = 129

    For Write_position_word = 1 To 256
      Get #2 , Buffer(write_position_word)
    Next Write_position_word

    For Write_position_word = 1 To 256
      Get #2 , Buffer(write_position_word)
    Next Write_position_word


    Write_position = 0

Enable Timer1
    Do
        If Write_position <> Read_position Then
            Get #2 , A

            lds R16, {A}
            subi R16, 128
            lds R17, {Volume}                               'Od 0 do 255
            mulsu R16, R17
            mov R16, R1
            subi R16, 128

            ldi R27, 4                                      '<------------------- Starsza połówka adresu bufora. Np. 4 = High(1024)
            lds R26, {Write_position}
            st X+, R16
            sts {Write_position}, R26
        End If


Loop Until Eof(#2) <> 0

Incr Play

Close #2
Disable Timer1
Toggle Porta.0
Gosub Odtwarzacz
Return
'jeśli skończy odtwarzać bierzący plik to sam zmienia nazwe utworu na kolejny

'---PRZERWANIE OD TIMERA 1------------------------------------------------------
Timer1_handler:
  push R16
  In R16, SREG
  push R26
  push R27

  lds R26, {Timer1_licznik}
  inc R26
  sts {Timer1_licznik}, R26
  cpi R26, 2
  brlo R26_mniejsze_2
      ldi R26, 0
      sts {Timer1_licznik}, R26

      ldi R27, 4                                            '<------------------- Starsza połówka adresu bufora. Np. 4 = High(1024)
      lds R26, {Read_position}
      ld R27, X+
      !Out OCR1AH, R27
      !Out OCR1AL, R27

      sts {Read_position}, R26
  R26_mniejsze_2:

  pop R27
  pop R26
  !Out SREG, R16
  pop R16
Return

2."Config_MMC.bas"
Kod:
'-------------------------------------------------------------------------------
'                         Config_MMC.BAS
'               Config File for MMC Flash Cards Driver
'        (c) 2003-2005 , MCS Electronics / Vögel Franz Josef
'-------------------------------------------------------------------------------
$nocompile
'Domyślne ustawienia połączeń z kartą SD:
'DAT3 - PA0
'DI   - PA1
'CLK  - PA2
'DAT0 - PA3
' --------- Ustawienia pinów karty SD ------------------------------------------
 
   ' Chip Select Pin  => DAT3
   Config Pinb.4 = Output
   'konfiguracja pinu jako wyjście
   Mmc_cs Alias Portb.4
   'przypisanie rejestrowi wyjściowemu nazwy
   Set Mmc_cs
   'początkowe ustawienie pinu
 
   ' MOSI - Pin  => DI
   Config Pinb.5 = Output
   'konfiguracja pinu
   Set Pinb.5
   'zapis do rejestru PIN
   Mmc_portmosi Alias Portb
   'nazwa dla rejestru PORTn zawierającego dany pin
   Bmmc_mosi Alias 5
   'numer pinu w porcie
 
   ' MISO - Pin  => DAT0
   Config Pinb.6 = Input
   'konfiguracja pinu
   Mmc_portmiso Alias Pinb
   'nazwa dla rejestru PINn zawierającego dany pin
   Bmmc_miso Alias 6
   'numer pinu w porcie
 
   ' SCK - Pin  => CLK
   Config Pinb.7 = Output
   'konfiguracja pinu
   Set Pinb.7
   'zapis do rejestru PIN
   Mmc_portsck Alias Portb
   'nazwa dla rejestru PORTn zawierającego dany pin
   Bmmc_sck Alias 7
   'numer pinu w porcie
 
' --------- Koniec ustawień pinów karty SD -------------------------------------
 
' ==========  Nie zmieniaj nic poniżej  ========================================
' ==============  Zmienne systemowe  ===========================================
 
Const Cmmc_soft = 1
' Error
Const Cperrdrivereset = 225                                 ' Error response Byte at Reset command
Const Cperrdriveinit = 226                                  ' Error response Byte at Init Command
Const Cperrdrivereadcommand = 227                           ' Error response Byte at Read Command
Const Cperrdrivewritecommand = 228                          ' Error response Byte at Write Command
Const Cperrdrivereadresponse = 229                          ' No Data response Byte from MMC at Read
Const Cperrdrivewriteresponse = 230                         ' No Data response Byte from MMC at Write
Const Cperrdrive = 231
Const Cperrdrivenotsupported = 232                          ' return code for DriveGetIdentity, not supported yet
 
Waitms 1                                                    ' Wait some time before initialising MMC/SD
Dim Gbdriveerror As Byte                                    ' General Driver Error register
Dim Gbdriveerrorreg As Byte                                 ' Driver load Error-Register of HD in case of error
Dim Gbdrivestatusreg As Byte                                ' Driver load Status-Register of HD on case of error
Dim Gbdrivedebug As Byte
$lib "MMC.LIB"                                              ' link driver library
$external _mmc
Gbdriveerror = Driveinit()                                  ' Init MMC/SD Card

3."CONFIG_AVR-DOS.bas"
Kod:
$nocompile
' Config File-System for Version 5.5:
 
' === User Settings ============================================================
 
' Count of file-handles, each file-handle needs 524 Bytes of SRAM
Const Cfilehandles = 1                                      ' [default = 2]
 
' Handling of FAT-Buffer in SRAM:
' 0 = FAT- and DIR-Buffer is handled in one SRAM buffer with 561 bytes
' 1 = FAT- and DIR-Buffer is handled in separate SRAM buffers with 1078 bytes
' Parameter 1 increased speed of file-handling
Const Csepfathandle = 0                                     ' [default = 1]
 
' Handling of pending FAT and Directory information of open files
' 0 = FAT and Directory Information is updated every time a data sector of the file is updated
' 1 = FAT and Directory Information is only updated at FLUSH and SAVE command
' Parameter 1 increases writing speed of data significantly
Const Cfatdirsaveatend = 1                                  ' [default = 1]
 
 
' Surrounding String with Quotation Marks at the Command WRITE
' 0 = No Surrounding of strings with quotation.marks
' 1 = Surrounding of strings with quotation.marks (f.E. "Text")
Const Ctextquotationmarks = 0                               ' [default = 1]
 
 
' Write second FAT. Windows accepts a not updated second FAT
' PC-Command: chkdsk /f corrects the second FAT, it overwrites the
' second FAT with the first FAT
' set this parameter to 0 for high speed continuing saving data
' 0 = Second FAT is not updated
' 1 = Second FAT is updated if exist
Const Cfatsecondupdate = 0                                  ' [default = 1]
 
 
' Character to separate ASCII Values in WRITE - statement (and INPUT)
' Normally a comma (,) is used. but it can be changed to other values, f.E.
' to TAB (ASCII-Code 9) if EXCEL Files with Tab separated values should be
' written or read. This parameter works for WRITE and INPUT
' Parameter value is the ASSCII-Code of the separator
' 44 = comma [default]
' 9 = TAB                                                  ' [default = 44]
Const Cvariableseparator = 44
 
 
 
 
 
' === Koniec ustawień ==========================================================
 
 
 
' === Variables for AVR-DOS ====================================================
 
' FileSystem Basis Informationen
Dim Gldrivesectors As Long
Dim Gbdoserror As Byte
 
' Master Boot Record
Dim Gbfilesystem As Byte
' Partition Boot Record
Dim Gbfilesystemstatus As Byte
Dim Glfatfirstsector As Long
Dim Gbnumberoffats As Byte
Dim Glsectorsperfat As Long
Dim Glrootfirstsector As Long
Dim Gwrootentries As Word
Dim Gldatafirstsector As Long
Dim Gbsectorspercluster As Byte
Dim Glmaxclusternumber As Long
Dim Gllastsearchedcluster As Long
 
' Additional info
Dim Glfs_temp1 As Long
 
' Block für Directory Handling
 
Dim Gldirfirstsectornumber As Long
 
Dim Gwfreedirentry As Word
Dim Glfreedirsectornumber As Long
 
Dim Gsdir0tempfilename As String * 11
Dim Gwdir0entry As Word                                     ' Keep together with next, otherwise change _DIR
Dim Gldir0sectornumber As Long
 
Dim Gstempfilename As String * 11
Dim Gwdirentry As Word
Dim Gldirsectornumber As Long
Dim Gbdirbufferstatus As Byte
Dim Gbdirbuffer(512) As Byte
Const C_filesystemsramsize1 = 594
#if Csepfathandle = 1
Dim Glfatsectornumber As Long
Dim Gbfatbufferstatus As Byte
Dim Gbfatbuffer(512) As Byte
Const C_filesystemsramsize2 = 517
#else
Const C_filesystemsramsize2 = 0
#endif
 
' File Handle Block
Const Co_filenumber = 0
Const Co_filemode = 1
Const Co_filedirentry = 2 : Const Co_filedirentry_2 = 3
Const Co_filedirsectornumber = 4
Const Co_filefirstcluster = 8
Const Co_filesize = 12
Const Co_fileposition = 16
Const Co_filesectornumber = 20
Const Co_filebufferstatus = 24
Const Co_filebuffer = 25
Const C_filehandlesize = Co_filebuffer + 513                ' incl. one Additional Byte for 00 as string terminator
                                                             ' for direct text reading from File-buffer
Const C_filehandlesize_m = 65536 - C_filehandlesize         ' for use with add immediate word with subi, sbci
                                                             ' = minus c_FileHandleSize in Word-Format
 
Const C_filehandlessize = C_filehandlesize * Cfilehandles
 
 
Dim Abfilehandles(c_filehandlessize) As Byte
Const C_filesystemsramsize = C_filesystemsramsize1 + C_filesystemsramsize2 + C_filehandlessize
 
 
' End of variables for AVR-DOS ================================================
 
' Definitions of Constants ====================================================
 
' Bit definiton for FileSystemStatus
 
Dfilesystemstatusfat Alias 0 : Const Dfilesystemstatusfat = 0       ' 0 = FAT16, 1 = FAT32
Dfilesystemsubdir Alias 1 : Const Dfilesystemsubdir = 1     ' 0 = Root-Directory, 1 = Sub-Directory
Const Dmfilesystemsubdir =(2 ^ Dfilesystemsubdir)           ' not used yet
Const Dmfilesystemdirincluster =(2 ^ Dfilesystemstatusfat + 2 ^ Dfilesystemsubdir)       ' not used yet
Dfatsecondupdate Alias 7 : Const Dfatsecondupdate = 7       ' Bit-position for parameter of
                                                             ' Update second FAT in gbFileSystemStatus
 
 
' Bit Definitions for BufferStatus (FAT, DIR, File)
 
Deof Alias 1 : Const Deof = 1 : Const Dmeof =(2 ^ Deof)
Deofinsector Alias 2 : Const Deofinsector = 2 : Const Dmeofinsector =(2 ^ Deofinsector)
Dwritepending Alias 3 : Const Dwritepending = 3 : Const Dmwritepending =(2 ^ Dwritepending)
Dfatsector Alias 4 : Const Dfatsector = 4 : Const Dmfatsector =(2 ^ Dfatsector)       ' For Writing Sector back (FATNumber times)
Dfileempty Alias 5 : Const Dfileempty = 5 : Const Dmfileempty =(2 ^ Dfileempty)
 
' New feature for reduce saving
Dfatdirwritepending Alias 6 : Const Dfatdirwritepending = 6 : Const Dmfatdirwritepending =(2 ^ Dfatdirwritepending)
Dfatdirsaveatend Alias 7 : Const Dfatdirsaveatend = 7 : Const Dmfatdirsaveatend =(2 ^ Dfatdirsaveatend)
Dfatdirsaveanyway Alias 0 : Const Dfatdirsaveanyway = 0 : Const Dmfatdirsaveanyway =(2 ^ Dfatdirsaveanyway)
 
 
 
 
Const Dmeofall =(2 ^ Deof + 2 ^ Deofinsector)
Const Dmeof_empty =(2 ^ Deof + 2 ^ Deofinsector + 2 ^ Dfileempty)
 
 
Const Cp_fatbufferinitstatus =(2 ^ Dfatsector)
Const Cp_dirbufferinitstatus = 0
 
 
#if Cfatdirsaveatend = 1
Const Cp_filebufferinitstatus =(2 ^ Dfatdirsaveatend)
#else
Const Cp_filebufferinitstatus = 0
#endif
 
 
 
#if Cfatsecondupdate = 0
   Const Cp_fatsecondupdate =(2 ^ Dfatsecondupdate)
#else
   Const Cp_fatsecondupdate = 0
#endif
 
 
' Bit definitions for FileMode (Similar to DOS File Attribut)
Dreadonly Alias 0 : Const Dreadonly = 0
'Const cpFileReadOnly = &H21             ' Archiv and read-only Bit set
Const Cpfilewrite = &H20                                    ' Archiv Bit set
 
 
' Error Codes
 
' Group Number is upper nibble of Error-Code
' Group 0 (0-15): No Error or File End Information
Const Cpnoerror = 0
Const Cpendoffile = 1
 
' Group 1 (17-31): File System Init
Const Cpnombr = 17
Const Cpnopbr = 18
Const Cpfilesystemnotsupported = 19
Const Cpsectorsizenotsupported = 20
Const Cpsectorsperclusternotsupported = 21
Const Cpcountofclustersnotsupported = 22
 
' Group 2 (32-47): FAT - Error
Const Cpnonextcluster = 33
Const Cpnofreecluster = 34
Const Cpclustererror = 35
' Group 3 (49-63): Directory Error
Const Cpnofreedirentry = 49
Const Cpfileexists = 50
Const Cpfiledeletenotallowed = 51
Const Cpsubdirectorynotempty = 52
Const Cpsubdirectoryerror = 53
Const Cpnotasubdirectory = 54
' Group 4 (65-79): File Handle
Const Cpnofreefilenumber = 65
Const Cpfilenotfound = 66
Const Cpfilenumbernotfound = 67
Const Cpfileopennohandle = 68
Const Cpfileopenhandleinuse = 69
Const Cpfileopenshareconflict = 70
Const Cpfileinuse = 71
Const Cpfilereadonly = 72
Const Cpfilenowildcardallowed = 73
Const Cpfilenumberinvalid = 74                              ' Zero is not allowed
 
' Group 7 (97-127): other errors
Const Cpfilepositionerror = 97
Const Cpfileaccesserror = 98
Const Cpinvalidfileposition = 99
Const Cpfilesizetogreat = 100
 
Const Cpdrivererrorstart = &HC0
 
 
' Range 224 to 255 is reserved for Driver
 
' Other Constants
' File Open Mode /  stored in File-handle return-value of Fileattr(FN#, [1])
Const Cpfileopeninput = 1                                   ' Read
Const Cpfileopenoutput = 2                                  ' Write sequential
'Const cpFileOpenRandom = 4              ' not in use yet
Const Cpfileopenappend = 8                                  ' Write sequential; first set Pointer to end
Const Cpfileopenbinary = 32                                 ' Read and Write; Pointer can be changed by user
 
 
' permission Masks for file access routine regarding to the file open mode
Const Cfilewrite_mode = &B00101010                          ' Binary, Append, Output
Const Cfileread_mode = &B00100001                           ' Binary, Input
Const Cfileseekset_mode = &B00100000                        ' Binary
Const Cfileinputline = &B00100001                           ' Binary, Input
Const Cfileput_mode = &B00100000                            ' Binary
Const Cfileget_mode = &B00100000                            ' Binary
 
' Directory attributs in FAT16/32
Const Cpfileopenallowed = &B00100001                        ' Read Only and Archiv may be set
Const Cpfiledeleteallowed = &B00100000
Const Cpfilesearchallowed = &B00111101                      ' Do no search hidden Files
' Bit 0 = Read Only
' Bit 1 = Hidden
' Bit 2 = System
' Bit 3 = Volume ID
' Bit 4 = Directory
' Bit 5 = Archiv
' Long File name has Bit 0+1+2+3 set
Dim Lastdosmem As Byte
 
 
$lib "AVR-DOS.Lbx"

4."Card_init_v2.bas"
Kod:
$external Waitms
 
Dim Card_init_error As Byte
'zmienna przechowująca ewentualne błędy
 
Dim Ff As Byte
'zmienna która posłuży nam jako uchwyt do pliku inicjalizacyjnego
'będziemy mogli ją potem wykorzystać w naszym programie jako uchwyt do innych plików
 
$include "Config_MMC.bas"
$include "CONFIG_AVR-DOS.bas"
 
Card_init_error = 0
Const Drive_error = 1
If Drivecheck() = 0 Then
_temp1 = Driveinit()
Card_init_error = Initfilesystem(1)
If Card_init_error = 0 Then
 
Ff = Freefile()
 
Open "init.init" For Output As #ff
Print #ff , "init"
Close #ff
Kill "init.init"
'komenda Kill kasuje plik
 
End If
Else
Card_init_error = Drive_error
End If

Teraz chciałem przenieś ten sam program na atmege128 lecz właśnie mam problem z kartą sd.
Oto program na at128
Kod:

'---PROCESOR--------------------------------------------------------------------
$regfile = "m128def.dat"

Wait 2
$crystal = 16000000
$hwstack = 128
$swstack = 64
$framesize = 64
$baud = 38400                                               ' use baud rate
'-------------------------------------------------------------------------------


'---DEKLARACJE ZMIENNYCH--------------------------------------------------------
Dim Timer1_licznik As Byte
Dim Buffer(256) As Byte At 1024
Dim Write_position As Byte
Dim Read_position As Byte
Dim Write_position_word As Word
Dim A As Byte
Dim B As Byte
Dim Volume As Byte

'---MOJE ZMIENNE TESTOWE--------------------------------------------------------
Dim Play As Integer                                         'START/STOP ODTWARZANIA
Dim Plik As String * 100                                    'NAZWA PLIKU DO OTWARCIA

'---TIMER 1---------------------------------------------------------------------
On Timer1 Timer1_handler Nosave
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Pwm1a = 129

'---PORTY-----------------------------------------------------------------------



Config Pinb.5 = Output                                      'pwm
Reset Pinb.5

Config Porta.0 = Output                                     'dioda
Set Porta.0


'---PLIKI ZEWNĘTRZNE I BIBLIOTEKI-----------------------------------------------
$include "Card_init_v2.bas"

'---ZEGAR-----------------------------------------------------------------------
Config Clock = Soft

'---WŁĄCZENIE PRZERWAŃ-------------------------------------------------
Enable Interrupts

Gbdriveerror = Driveinit()
B = Initfilesystem(1)
If B <> 0 Then

Do
Toggle Porta.0
Wait 1
Loop
End If
'jeśli jest jakiś błąd karty to dioda będzie migać
Volume = 240
Play = 1
Plik = "Suck.wav"                                           'uruchamiamy układ watchdog
'ustawiesz jaki plik ma być pierwszy



'---PĘTLA GŁÓWNA PROGRAMU-------------------------------------------------------
Do

Gosub Odtwarzacz                                            'ZEZWOLENIE I SKOK DO ODTWARZANIA


                                            'resetujemy watchdoga
Loop
End                                                         'KONIEC PROGRAMU PRZY OPUSZCZENIU PĘTLI GŁÓWNEJ

'---ODTWARZACZ------------------------------------------------------------------
Odtwarzacz:
Select Case Play
Case 1 : Plik = "Suck.wav"
Case 2 :
Play = 1
Plik = "Suck.wav"
End Select
'lista nazw plików do odtworzenia z karty i ich zmienna
Toggle Porta.0
'na lcd pojawia się tytuł piosenki
  Open Plik For Binary As #5
     'otwieramy plik
    Pwm1a = 129

    For Write_position_word = 1 To 256
      Get #5 , Buffer(write_position_word)
    Next Write_position_word

    For Write_position_word = 1 To 256
      Get #5 , Buffer(write_position_word)
    Next Write_position_word


    Write_position = 0

Enable Timer1
    Do
        If Write_position <> Read_position Then
            Get #5 , A

            lds R16, {A}
            subi R16, 128
            lds R17, {Volume}                               'Od 0 do 255
            mulsu R16, R17
            mov R16, R1
            subi R16, 128

            ldi R27, 4                                      '<------------------- Starsza połówka adresu bufora. Np. 4 = High(1024)
            lds R26, {Write_position}
            st X+, R16
            sts {Write_position}, R26
        End If


Loop Until Eof(#5) <> 0

Incr Play

Close #5
Disable Timer1
Toggle Porta.0
Gosub Odtwarzacz
Return
'jeśli skończy odtwarzać bierzący plik to sam zmienia nazwe utworu na kolejny

'---PRZERWANIE OD TIMERA 1------------------------------------------------------
Timer1_handler:
  push R16
  In R16, SREG
  push R26
  push R27

  lds R26, {Timer1_licznik}
  inc R26
  sts {Timer1_licznik}, R26
  cpi R26, 2
  brlo R26_mniejsze_2
      ldi R26, 0
      sts {Timer1_licznik}, R26

      ldi R27, 4                                            '<------------------- Starsza połówka adresu bufora. Np. 4 = High(1024)
      lds R26, {Read_position}
      ld R27, X+
      !Out OCR1AH, R27
      !Out OCR1AL, R27

      sts {Read_position}, R26
  R26_mniejsze_2:

  pop R27
  pop R26
  !Out SREG, R16
  pop R16
Return

Poniżej ustawienie fuse bitów.
Co do układu na jakim testuję jest to po prostu pusta płytka z tamegą 128 i goldpinami (taki "moduł"). Do tego przylutowane kabelki do kwarcu, zasilania(z usb) i slotu kart sd w sposób przedstawiony w moim poprzednim poście.Karta sd zasilana z tego samego źródła przez stabilizator, dzielniki napięcia na rezystorach 3,3k i 1,8k(w ten sam sposób działało na at32).
Więc proszę o pomoc jak przerobić kod działający na at32 żeby działał na at128.

PS.Z mieniłem w kodzie "set pinb.3" jak pisałeś ale niestety dalej nic.

fuse128.JPG
Plik ściągnięto 105 raz(y) 147,04 KB

 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Sob Maj 04, 2013 12:49 pm   

Hmm, kod dosyć spory i powiem szczerze, że osobiście nie mam teraz czasu na analizę...
Pokaż jeszcze zdjęcia układu.
A próbowałeś jakieś prostsze przykłady uruchamiać, jak np. zapis jakiegoś tekstu na kartę?
I w którym momencie program nie działa? Czy wchodzi w tą pętlę migającą diodą?
_________________
http://www.piotr94.net21.pl/
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group