± 12 бит данных АЦП, сигнатура "±" в 13 бите
У кого есть возможность, пожалуйста, проверьте в железе.
'----------------------- Конфигурация контроллера ----------------------------
$map ' Получаем карту распределения памяти компилятором Bascom
$regfile = "m328pdef.dat" ' Используемый контроллер, документация производителя - http://www.atmel.com/Images/Atmel-2549- … asheet.pdf
$crystal = 1000000 ' 1 МГц, частота для расчета временных задержек компилятором, должна соответствовать запрограммированым фьюзам МК
$framesize = 64 ' Размер области используемой и необходимой для преобразований
$hwstack = 64 ' Размер аппаратного стека
$swstack = 64 ' Размер программного стека'----------------------- Конфигурация USART ----------------------------------
$baud = 4800 ' Скорость трансляции
Config Com1 = Baud , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Ucsr0a.1 = 1 ' Baud = Baud * 2'----------------------- Конфигурация MCP330x --------------------------------
Cs_mcp330x Alias Portb.2 : Config Cs_mcp330x = Output : Cs_mcp330x = 1
Din_mcp330x Alias Pinb.4 : Config Din_mcp330x = Input
Sck_mcp330x Alias Portb.5 : Config Sck_mcp330x = Output : Reset Sck_mcp330x'--------------- Используемые переменные, для работы с MCP330x ----------------
Dim A_mcp330x As Byte
Dim Сигнатура_mcp330x As Byte
Dim Данные_mcp330x_word As Word'===============================================================================
Главный_цикл:
'===============================================================================Gosub Ацп_mcp330x
Print Данные_mcp330x_word
Waitms 500'===============================================================================
Goto Главный_цикл
End
'==============================================================================='===============================================================================
Ацп_mcp330x:
'-------------------------------------------------------------------------------
Sck_mcp330x = 0
Cs_mcp330x = 0Sck_mcp330x = 1
Sck_mcp330x = 0
Sck_mcp330x = 1
Sck_mcp330x = 0Sck_mcp330x = 1
Sck_mcp330x = 0If Pinb.4 = 1 Then
Сигнатура_mcp330x = 1
Else
Сигнатура_mcp330x = 0
End IfFor A_mcp330x = 11 To 0 Step -1
Sck_mcp330x = 1
Sck_mcp330x = 0If Pinb.4 = 1 Then
Данные_mcp330x_word.a_mcp330x = 1
Else
Данные_mcp330x_word.a_mcp330x = 0
End IfNext A_mcp330x
Cs_mcp330x = 1
'-------------------------------------------------------------------------------
Return
'===============================================================================
'----------------------- Конфигурация контроллера ----------------------------
$map ' Получаем карту распределения памяти компилятором Bascom
$regfile = "m328pdef.dat" ' Используемый контроллер, документация производителя - http://www.atmel.com/Images/Atmel-2549- … asheet.pdf
$crystal = 1000000 ' 1 МГц, частота для расчета временных задержек компилятором, должна соответствовать запрограммированым фьюзам МК
$framesize = 64 ' Размер области используемой и необходимой для преобразований
$hwstack = 64 ' Размер аппаратного стека
$swstack = 64 ' Размер программного стека'----------------------- Конфигурация USART ----------------------------------
$baud = 4800 ' Скорость трансляции
Config Com1 = Baud , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Ucsr0a.1 = 1 ' Baud = Baud * 2'----------------------- Конфигурация MCP330x --------------------------------
Pin_din_mcp330x Alias 4
Port_din_mcp330x Alias Pinb
Din_mcp330x Alias Pinb.4 : Config Din_mcp330x = InputCs_mcp330x Alias Portb.2 : Config Cs_mcp330x = Output : Cs_mcp330x = 1
Sck_mcp330x Alias Portb.5 : Config Sck_mcp330x = Output : Reset Sck_mcp330x'--------------- Используемые переменные, для работы с MCP330x ----------------
Dim A_mcp330x As Byte
Dim Сигнатура_mcp330x As Byte
Dim Данные_mcp330x_word As Word'===============================================================================
Главный_цикл:
'===============================================================================Gosub Ацп_mcp330x
Print Данные_mcp330x_word
Waitms 500'===============================================================================
Goto Главный_цикл
End
'==============================================================================='===============================================================================
Ацп_mcp330x:
'-------------------------------------------------------------------------------
Sck_mcp330x = 0
Cs_mcp330x = 0Sck_mcp330x = 1
Sck_mcp330x = 0
Sck_mcp330x = 1
Sck_mcp330x = 0Чтение_сигнатуры_mcp330x:
!clr R16
Sck_mcp330x = 1
Sck_mcp330x = 0
!SBIC Port_din_mcp330x , Pin_din_mcp330x
!SET
!sBIs Port_din_mcp330x , Pin_din_mcp330x
!clt
!BLD R16 , 0
!sts {Сигнатура_mcp330x} , R16'Принимаем старший байт
!clr R16
!ldi R17 , 4
Чтение_mcp330x_high:
Sck_mcp330x = 1
Sck_mcp330x = 0
!SBIC Port_din_mcp330x , Pin_din_mcp330x
!SET
!sBIs Port_din_mcp330x , Pin_din_mcp330x
!clt
!BLD R16 , 0
!mov R27 , R16
!LSl R16
!dec R17
!brne Чтение_mcp330x_high'Принимаем младший байт
!clr R16
!ldi R17 , 8
Чтение_mcp330x_low:
Sck_mcp330x = 1
Sck_mcp330x = 0
!SBIC Port_din_mcp330x , Pin_din_mcp330x
!SET
!sBIs Port_din_mcp330x , Pin_din_mcp330x
!clt
!BLD R16 , 0
!mov R26 , R16
!LSl R16
!dec R17
!brne Чтение_mcp330x_low'Забираем, что намеряли
!sts {Данные_mcp330x_word} , R26
!sts {Данные_mcp330x_word + 1} , R27Cs_mcp330x = 1
'-------------------------------------------------------------------------------
Return
'===============================================================================