AVR-DOS для ClearDroid (XMega)

AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 14:54

Взял я готовый код первой версии от МиниБота
download/file.php?id=5244
Заменил камень и кварц
и теперь при компиляции вываливается миллион ошибок
Там походу нужно все конфиги и библы переписывать?

начал включать по одной строке
1. С чего бы ему ругаться на "Config Serialin = Buffered , Size = 20"?
отключил пока, и без нее вроде проживем пока.
2. Включаю $include "Config_MMC.bas"
вываливается

3.png


На вот такой код естественно не ругается
Код: Выделить всё
$regfile = "xm128a1def.dat"
$crystal = 2000000                                         '11059200

$lib "XMega.LIB" , "mcsbyte.lbx " , "MCS.lib"

Config Com5 = 2400 , Mode = 0 , Parity = None , Stopbits = 1 , Databits = 8
Open "Com5:" For Binary As #1

'Config Serialin = Buffered , Size = 20
Waitms 250
Print #1 , "Код скомпилирован  " ; Version()
$hwstack = 128
$swstack = 128
$framesize = 128

Enable Interrupts

'$include "Config_MMC.bas"
'$include "Config_AVR-DOS.BAS"
Dim Berrorcode As Byte
'Berrorcode = Initfilesystem(1)
If Berrorcode > 0 Then
Print #1 , "Ошибка FAT: " ; Berrorcode
Else
Print #1 , "FAT проинициализирован"
End If

Config Porta.5 = Output
Config Porta.4 = Input

Dim A As Byte

Dim S As String * 10 , W As Word , L As Long

'S = "write test"

'Open "write.txt" For Output As #2
'Print "записали"
'Write #2 , S , W , L ' так же поддерживается такой формат
'Close #2


'Open "write.txt" For Input As #2
'Input #2 , S , W , L                                        ' так же поддерживается такой формат
'Close #2
'Print #1 , S ; " " ; W ; " " ; L

Do
Print #1 , A
Incr A
Wait 1

If Pina.4 = 1 Then
   Porta.5 = 1 : Waitms 900
   Porta.5 = 0 : Waitms 100
Else
   Porta.5 = 0
End If
Loop


Добавлено спустя 15 минут 26 секунд:
оказывается, в файле Config_MMC.bas ему не нравится стока
Код: Выделить всё
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1

Заменил ее на строку из хелпника
Код: Выделить всё
Config Spie = Hard , Master = Yes , Mode = 2 , Clockdiv = Clk4 , Data_order = M 

тоже ругается, пишет инвалид параметр.

кто нибудь знает как конфигурировать SPI на XMega?
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 17:07

нада найти либы СПИ по Хмегу..

и поглядеть что там есть ..

мой код то помог?
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 20:01

еще не пробовал, т.к. надо очень вдумчиво читать ДШ что бы твой код пробовать
он же у тебя не готовый
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 20:15

готовый ) вапщета.. про то что там надо добавить поправить я написал.. такт ядра будет 2х кварц..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 20:37

я так понимаю что писать надо так:

Код: Выделить всё
$regfile = "xm128A1def.dat"
'$regfile = "xm16A4def.dat"

$crystal = 32000000                                         '32MHz
$hwstack = 64
$swstack = 40
$framesize = 40

'include the following lib and code, the routines will be replaced since they are a workaround
$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014

'first enable the osc of your choice
Config Osc = Enabled , Pllosc = Disabled , Extosc = Disabled , 32khzosc = Disabled , 32mhzosc = Enabled , 32khzpowermode = Low_power       '32MHz

'configure the systemclock
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1  '32MHz

'Config Interrupts
Config Priority = Static , Vector = Application , Lo = Enabled       'Enable Lo Level Interrupts


взято от сюда http://www.mcselec.com/index2.php?optio ... ight=xmega
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 20:49

у тебя кварц на 32 ? если да то мона видимо и так.. если нет тебе нужно ПЛЛ х2.. у меня сделано чуток через опу.. сначала задрано в 64, потом поделено. но на выходе 32 при кварце 16..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 20:51

у меня кварец 16МГц

Добавлено спустя 59 секунд:
и меня сечас больше волнует SPI из-за которого у меня AVR-DOS не запускается.
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 21:01

да все должно завестись, просто надо рскалупать либы и найти что не так.. я б может и помог, да в васике как-то не шарю )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 22:13

так может пора начать? :wink:

Добавлено спустя 52 минуты 21 секунду:
и так возвращаясь к главной проблеме, а именно проблеме с SPI...
вроде нашел http://www.mcselec.com/index2.php?optio ... ec54c41e64

Код: Выделить всё
Cs_mmc Alias Porte.4 : Config Cs_mmc = Output             'Connected to Pin No.1 Of MMC (Cs_mmc)
Mosi_mmc Alias Porte.5 : Config Mosi_mmc = Output           'Connected to Pin No.2 Of MMC (DataIn)
Clk_mmc Alias Porte.7 : Config Clk_mmc = Output            'Connected to Pin No.5 Of MMC (Clock)
Miso_mmc Alias Pine.6 : Config Miso_mmc = Input            'Connected to Pin No.7 Of MMC (DataOut)
Declare Sub Mmc_init
Declare Sub Mmc_status
Declare Sub Mmc_singleread
Declare Sub Mmc_singlewrite
Dim Sector_pointer As Word
Dim Free_counter As Word
Dim Sector_number As Long
Dim Addr As Long
Dim Mmc_dat As Byte
Dim Mmc_resp As Byte
Dim Mmc_resp2 As Word
Dim Yyyyy As Byte
Const Msbl = 0 : Const Msbh = 1
Const Spidelayyyyy = 0
Waitms 128
Mmc_init


Sub Mmc_init
Print "--Start Initializing MMC ..."
Set Cs_mmc
Mmc_dat = &HFF
For Free_counter = 1 To 10
   Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
Next Free_counter
Mmc_resp = 255
Print "--Command No.=0"
Reset Cs_mmc
Cmd0:
Mmc_dat = &H40 : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy       '8 bite avval
      Addr = 0 : Shiftout Mosi_mmc , Clk_mmc , Addr , Msbl , 32 , Spidelayyyyy       '32 bit argooman
Mmc_dat = &H95 : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
While Mmc_resp <> &H01
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend
Print "--Command Response :" ; Hex(mmc_resp)

Set Cs_mmc
Waitms 50

Print "--Command No.=1"
Reset Cs_mmc
Mmc_dat = &HFF
Cmd1:
While Mmc_resp <> &H00
   Set Cs_mmc
   Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy

   Reset Cs_mmc
   Mmc_dat = &H41 : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
         Addr = 0 : Shiftout Mosi_mmc , Clk_mmc , Addr , Msbl , 32 , Spidelayyyyy
   Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                    Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend
Mmc_dat = &HFF
Set Cs_mmc

Print "--Command Response :" ; Hex(mmc_resp)
Print ""
Mmc_status                                                  '***************************chek for status
Print "--Initialize Complete."


End Sub
'-------------------------- MMC Initializing END -------------------------------

'-------------------------------------------------------------------------------

'---------------------------- Read MMC Status ----------------------------------
Sub Mmc_status

Cmd13:
Set Cs_mmc
Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy

Reset Cs_mmc
Mmc_dat = &H4D : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
      Addr = 0 : Shiftout Mosi_mmc , Clk_mmc , Addr , Msbl , 32 , Spidelayyyyy
Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                 Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
Shiftin Miso_mmc , Clk_mmc , Mmc_resp2 , Msbl , 8 , Spidelayyyyy
'Print "" : Print "--Status :" ; Hex(mmc_resp2)
Set Cs_mmc

End Sub
'--------------------------- Read MMC Status END -------------------------------

'-------------------------------------------------------------------------------

'------------------------- MMC Read Single Sector ------------------------------
Sub Mmc_singleread

Addr = Sector_number * 512
'Print "----------------------------------"
'Print "--Start Sector Reading ..."
'Print "--Read Sector Address :" ; Addr
'Print "--Command No.=17,(Read Single Block)"

Set Cs_mmc
Mmc_dat = &HFF
Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy

'Cmd17:
Reset Cs_mmc
Mmc_dat = &H51 : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                 Shiftout Mosi_mmc , Clk_mmc , Addr , Msbl , 32 , Spidelayyyyy
Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy

Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
While Mmc_resp <> 0
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend
'Print "--Command Response :" ; Hex(mmc_resp) : Print ""

While Mmc_resp <> &HFE
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend

For Sector_pointer = 1 To 512
      Shiftin Miso_mmc , Clk_mmc , Mmc_data(sector_pointer) , Msbl , 8 , Spidelayyyyy
'      Mmc_data(sector_pointer) = Mmc_resp
Next Sector_pointer

Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy

Set Cs_mmc
Mmc_status                                                  '***************************chek for status
'Print "--Sector Reading Finished."
End Sub
'----------------------- MMC Read Single Sector END ----------------------------

'-------------------------------------------------------------------------------

'------------------------ MMC Write Single Sector ------------------------------
Sub Mmc_singlewrite

Addr = Sector_number * 512

Print "--Start Sector Writing ..."
Print "--Write Sector Address :" ; Addr
'Print "--Command No.=24(Write Single Block)"

Set Cs_mmc
Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                 Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy

Cmd24:
Reset Cs_mmc
Mmc_dat = &H58 : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                 Shiftout Mosi_mmc , Clk_mmc , Addr , Msbl , 32 , Spidelayyyyy
Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
                 Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy

Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
While Mmc_resp <> 0
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend
Print "--Command Response :" ; Hex(mmc_resp) : Print ""

Mmc_dat = &HFE : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy

   For Sector_pointer = 1 To 512
      Mmc_dat = Mmc_data(sector_pointer)
      Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
   Next Sector_pointer

Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy
Mmc_dat = &HFF : Shiftout Mosi_mmc , Clk_mmc , Mmc_dat , Msbl , 8 , Spidelayyyyy

Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Yyyyy = Mmc_resp And &H0F
If Yyyyy = &H05 Then
   Print "" : Print "--Data Accepted."
End If

Waitms 10

Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
If Mmc_resp = 0 Then Print "--MMC Is Busy!"
While Mmc_resp = 0
   Shiftin Miso_mmc , Clk_mmc , Mmc_resp , Msbl , 8 , Spidelayyyyy
Wend
Print "--MMC Is Ready!"

Set Cs_mmc
Mmc_status
Print "--Sector Writing Finished."
End Sub
'----------------------- MMC Write Single Sector END ---------------------------


Добавлено спустя 6 минут 18 секунд:
нифига, это софтовый SPI

Добавлено спустя 8 минут 35 секунд:
во!
вот так вроде не ругается

Код: Выделить всё
Dim Bspivar As Byte , Ar(4) As Byte , W As Word
Config Spie = Hard , Master = Yes , Mode = 2 , Clockdiv = Clk4 , Data_order = Msb

Open "SPIE" For Binary As #12

Print #12 , "to spi" ; W
Input #12 , Ar(1) , W
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 22:19

не Эд, я так нихачу. перебором тыкать пока ругаться перестанет )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 22:45

но мне-то деваться-то некуда... :pardon:
вот и мучаюсь

Добавлено спустя 21 минуту 31 секунду:
вроде разобрался с файлом Config_MMC.bas
во всяком случае теперь при компиляции не ругается
за одно переименовал в Config_MicroSD-XMega.bas и переписал на порт Е

Код: Выделить всё
'-------------------------------------------------------------------------------
'                         Config_MMC.BAS
'               Config File for MMC Flash Cards Driver
'        (c) 2003-2005 , MCS Electronics / Vögel Franz Josef
'-------------------------------------------------------------------------------
' Place MMC.LIB in the LIB-Path of BASCOM-AVR installation
'
'Connection as following
'Micro-SD    XMega128A1

'2      Micro-SD_CS PORTE.4
'3      MOSI PORTE.5
'4      +3.3V
'5      CLK PORTE.7
'6      GND
'7      MISO, PORTE.6

' you can vary MMC_CS on HW-SPI and all pins on SOFT-SPI, check settings
' ========== Start of user definable range =====================================

' you can use HW-SPI of the AVR (recommended) or a driver build in Soft-SPI, if
' the HW-SPI of the AVR is occupied by an other SPI-Device with different settings

' Declare here you SPI-Mode
' using HW-SPI:     cMMC_Soft = 0
' not using HW_SPI: cMMC_Soft = 1

Const Cmmc_soft = 1

#if Cmmc_soft = 0

' --------- Start of Section for HW-SPI ----------------------------------------

   ' define Chip-Select Pin
   Config Pine.4 = Output                                   ' define here Pin for CS of MMC/SD Card
   Mmc_cs Alias Porte.4
   Set Mmc_cs

   ' Define here SS Pin of HW-SPI of the CPU (f.e. Pinb.0 on M128)
   ' If an other Pin than SS is used for MMC_SS, SS must be set to OUTPUT and high for proper work of SPI
   ' otherwise AVR starts SPI-SLAVE if SS-Pin is INPUT and goes to LOW
   Config Pine.4 = Output                                   ' define here Pin of SPI SS
   Spi_ss Alias Porte.4
   Set Spi_ss                                               ' Set SPI-SS to Output and High por Proper work of
                                                            ' SPI as Master

   ' 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
Config Spie = Hard , Master = Yes , Mode = 2 , Clockdiv = Clk4 , Data_order = Msb
'   Spsr = 1                                       ' Double speed on ATMega128
   Spiinit                                                  ' Init SPI

' --------- End of Section for HW-SPI ------------------------------------------

#else                                                       ' Config here SPI pins, if not using HW SPI

' --------- Start of Section for Soft-SPI --------------------------------------

   ' Chip Select Pin  => Pin 1 of MMC/SD
   Config Pine.4 = Output
   Mmc_cs Alias Porte.4
   Set Mmc_cs

   ' MOSI - Pin  => Pin 2 of MMC/SD
   Config Pine.5 = Output
   Set Pine.5
   Mmc_portmosi Alias Portb
   Bmmc_mosi Alias 2

   ' MISO - Pin  => Pin 7 of MMC/SD
   Config Pine.6 = Input
   Mmc_portmiso Alias Pinb
   Bmmc_miso Alias 3

   ' SCK - Pin  => Pin 1 of MMC/SD
   Config Pine.7 = Output
   Set Pine.7
   Mmc_portsck Alias PortE
   Bmmc_sck Alias 1

' --------- End of Section for Soft-SPI ----------------------------------------

#endif

' ========== End of user definable range =======================================


' 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


Добавлено спустя 4 минуты 6 секунд:
раскомментил $include "Config_AVR-DOS.BAS"
и как ни странно не заругалось при компиляции

Код: Выделить всё
$regfile = "xm128a1def.dat"
$crystal = 2000000

$lib "XMega.LIB" , "mcsbyte.lbx " , "MCS.lib"

Config Com5 = 2400 , Mode = 0 , Parity = None , Stopbits = 1 , Databits = 8
Open "Com5:" For Binary As #1

'Config Serialin = Buffered , Size = 20
Waitms 250
Print #1 , "Код скомпилирован  " ; Version()
$hwstack = 128
$swstack = 128
$framesize = 128

Enable Interrupts

$include "Config_MicroSD-Xmega.bas"
$include "Config_AVR-DOS.BAS"
Dim Berrorcode As Byte
'Berrorcode = Initfilesystem(1)
If Berrorcode > 0 Then
Print #1 , "Ошибка FAT: " ; Berrorcode
Else
Print #1 , "FAT проинициализирован"
End If

Config Porta.5 = Output
Config Porta.4 = Input

Dim A As Byte

Dim S As String * 10 , W As Word , L As Long

'S = "write test"

'Open "write.txt" For Output As #2
'Print "записали"
'Write #2 , S , W , L ' так же поддерживается такой формат
'Close #2


'Open "write.txt" For Input As #2
'Input #2 , S , W , L                                        ' так же поддерживается такой формат
'Close #2
'Print #1 , S ; " " ; W ; " " ; L

Do
Print #1 , A
Incr A
Wait 1

If Pina.4 = 1 Then
   Porta.5 = 1 : Waitms 900
   Porta.5 = 0 : Waitms 100
Else
   Porta.5 = 0
End If
Loop
Вложения
test_AVR-DOS.zip
(807 байт) Скачиваний: 0
Config_MicroSD-XMega.zip
(1.57 КиБ) Скачиваний: 0
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 30 ноя 2010, 22:57

да сильно странного по сути ничего и нет.. если там либы нормально написали под Хмегу..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 30 ноя 2010, 22:59

завтра залью и узнаем...
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение EdGull » 01 дек 2010, 19:28

текущий код

Код: Выделить всё
$regfile = "xm128A1def.dat"

$crystal = 32000000                                         '32MHz
$hwstack = 64
$swstack = 40
$framesize = 40

$lib "XMega.LIB" , "MCS.lib" , "mcsbyte.lbx "
$external _xmegafix_clear : $external _xmegafix_rol_r1014
'first enable the osc of your choice
Config Osc = Enabled , Pllosc = Disabled , Extosc = Disabled , 32khzosc = Disabled , 32mhzosc = Enabled , 32khzpowermode = Low_power       '32MHz
'configure the systemclock
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1  '32MHz

Config Com5 = 115200 , Mode = 0 , Parity = None , Stopbits = 1 , Databits = 8
Open "Com5:" For Binary As #1

'Config Serialin = Buffered , Size = 20
Waitms 250
Print #1 , "Êîä ñêîìïèëèðîâàí  " ; Version()
$hwstack = 128
$swstack = 128
$framesize = 128

Enable Interrupts

$include "Config_MicroSD-Xmega.bas"
Print #1 , Gbdriveerror
$include "Config_AVR-DOS.BAS"
Dim Berrorcode As Byte
Berrorcode = Initfilesystem(1)
If Berrorcode > 0 Then
Print #1 , "Îøèáêà FAT: " ; Berrorcode
Else
Print #1 , "FAT ïðîèíèöèàëèçèðîâàí"
End If

Config Porta.5 = Output
Config Porta.4 = Input

Dim A As Byte

Dim S As String * 20 , W As Word , L As Long

S = "write test"

'Open "write.txt" For Output As #2
'Print #1 , "çàïèñàëè"
'Write #2 , S , W , L
'Flush #2                                                    ' flush to disk
'                                      ' òàê æå ïîääåðæèâàåòñÿ òàêîé ôîðìàò
'Close #2

'Lets have a look at the file we created

Print #1 , "Dir function demo"
S = Dir( "*.*")
'The first call to the DIR() function must contain a file mask
' The * means everything.
'
While Len(s) > 0                                            ' if there was a file found
Print #1 , S ; " " ; Filedate() ; " " ; Filetime() ; " " ; Filelen()
' print file , the date the fime was created/changed , the time and the size of the file
S = Dir()                                                  ' get next
Wend


'Open "write.txt" For Input As #2
'Input #2 , S , W , L                                        ' òàê æå ïîääåðæèâàåòñÿ òàêîé ôîðìàò
'Close #2
'Print #1 , S ; " " ; W ; " " ; L

Do
Print #1 , A
Incr A
Wait 1

If Pina.4 = 1 Then
   Porta.5 = 1 : Waitms 900
   Porta.5 = 0 : Waitms 100
Else
   Porta.5 = 0
End If
Loop


SPI в AVR-DOS не заводится
ругается на на регистр SPDR которого естественно в ХМеге нет.

Добавлено спустя 26 секунд:
за то, 32МГЦ завелись
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: AVR-DOS для ClearDroid (XMega)

Сообщение Duhas » 01 дек 2010, 19:37

ну тык поменяй имя регистра...

а 32 у тебя завелись ты почему решил ? )
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

След.

Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2