Страница 188 из 304

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 19:37:05
uni
Смысл в отладочном средстве, которое может работать с расширенным терминалом. Я проект в Proteus показал как демонстрацию возможностей модуля Console. Внимание нужно обращать не на функционал конкретного проекта, а на возможности по псевдографической визуализации информации в терминале.

Модуль одинаково будет работать как при моделировании в Proteus, так и на реальном железе. Кушает флеша пока много. Те же часики можно показать вот так.

Изображение

П. С. Как варинат ещё можно в терминале управлять уровнями портов.

Изображение

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 20:26:39
harrd
pavel1979, видел несколько схем с AVR и дешифратором К155ид1, но нигде эти входы не были подтянуты к плюсу. Дешифратор считывает показания с аврки, но на выходе выдаёт полную ересь, например 33 часа 87 минут

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 20:35:26
pavel1979
harrd писал(а):pavel1979, видел несколько схем с AVR и дешифратором К155ид1, но нигде эти входы не были подтянуты к плюсу. Дешифратор считывает показания с аврки, но на выходе выдаёт полную ересь, например 33 часа 87 минут
то есть сами цифры светятся и сменяются каждую минуту?посмотрю ваш исходник,может что найду...
а к дешифратору сегменты правильно подключены?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 20:38:55
harrd
Цифры светятся и сменяются, секундная точка моргает, монтаж перепроверен многократно

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 20:54:55
pavel1979
не знаю...где вы взяли исходник?
считывать можно проще-
СпойлерI2cstart
I2cwbyte &HD0
I2cwbyte &H00
I2cstart
I2cwbyte &HD1
I2crbyte Seco , Ack
I2crbyte Mine , Ack
I2crbyte Hour , Ack
I2crbyte Day , Ack
I2crbyte Dat , Ack
I2crbyte Month , Ack
I2crbyte Year , Nack
I2cstop
Seco = Makedec(seco)
Mine = Makedec(mine)
Hour = Makedec(hour)
Day = Makedec(day)
Dat = Makedec(dat)
Month = Makedec(month)
Year = Makedec(year)
если б я делал,то сделал бы без DS1307,просто кварц дбавляется

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вс окт 27, 2013 21:41:11
harrd
Исходник взял на схемнете, прошивка написана 15-тилетним парнем, я просил его переделать код с семисегментных LED под дешифратор ГРИ, его код не заработал в протеусе, я переделал сам этот блок "Data &B00000000 , &B10000000 , &B01000000 , &B11000000 , &B00100000
Data &B10100000 , &B01100000 , &B11100000 , &B00010000 , &B10010000" и этот "Dig1 Alias Portb.0 : Dig2 Alias Portb.1 : Dig3 Alias Portb.2 : Dig4 Alias Portb.3" в меру своего разумения. Пожалуйста, исправьте прошивку и напишите к ней комментарии.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт окт 29, 2013 19:05:38
pavel1979
Решил использовать в одном своем проекте pcf8583 http://mcucpu.ru/index.php/pdevices/39- ... 73-pcf8583.время извлек без проблем,а вот дата... вместо 29/10(29 октября) показывает 70/69 вот скрин протеуса
СпойлерИзображение
и сама программа,может кто работал с pcf
Спойлер'-------------------------------------------------------------------------------

'---------------------------Тип_микроконтроллера--------------------------------
$regfile = "m16DEF.dAT"
$crystal = 8000000
'############################ Конфигурация_ЖКИ #################################
Config Lcdbus = 4
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.2 , Rs = Porta.0
Cursor Off
Cls

'--------------------------------------------------------------------------
Config Sda = Portc.1
Config Scl = Portc.0
Config Portd = Output
Config Clock = User
Config Date = Mdy , Separator = /
'Config 1wire = Pine.0
Config Watchdog = 2048 'бешаный пес на 2.2 секунды
Set Portc.3
Set Portc.2
Set Portc.4
Set Portc.5
Cn Alias Pinc.3 'Вниз
Cv Alias Pinc.2 'Вверх
Vv Alias Pinc.4 'Ввод
M Alias Pinc.5 'Меню
Light Alias Portd.2 'свет
Air Alias Portd.3 'воздух
Filter Alias Portd.4 'фильтр
Heater Alias Portd.5 'нагрев


'--------------------------------Константы--------------------------------------
Const Pcf8583w = &HA0
Const Pcf8583r = &HA1
'-----------------------------Дополнительные_символы----------------------------
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 'символ градуса
'---------------------------------------------------------------------
Dim J1 As Byte
Dim M1 As Byte
Dim D1 As Byte
Dim H1 As Byte
Dim Min1 As Byte
Dim _min_real As Byte
Dim _min_temp As Byte
Dim Aa As Byte
Dim Xp As Byte
Dim Bd(9) As Byte
Dim Tmp As Byte
Dim T As Integer
Dim Tz As Integer
Dim T1 As Integer
Dim Ee_temp As Eram Integer
Dim Ee_h_on As Eram Byte
Dim Ee_h_off As Eram Byte
Dim H_on As Byte
Dim H_off As Byte
Dim Ee_air_on As Eram Byte
Dim Ee_air_off As Eram Byte
Dim Air_on As Byte
Dim Air_off As Byte
Dim T_filter_off As Integer

'################################### Процедуры #################################
Declare Sub Enterdatetime
Declare Sub Getkey
Declare Sub Menu
Declare Sub Digit
Declare Sub Gettemp
Declare Sub Termostat
Declare Sub Light_set
Declare Sub Air_set
Declare Sub Filter_set
Declare Sub Filt

'############################ Начальные установки ##############################


T_filter_off = 0
Heater = 0
Light = 0
Air = 0
Filter = 1


Cls
Cursor Off
Locate 1 , 2
Lcd "Akva kont v1.0"
Locate 2 , 4
Lcd "by Vet@ll"
Waitms 500
Cls

'##################### Основной цикл программы #################################
'Start Watchdog
Do
'Reset Watchdog
' Call Gettemp
Locate 1 , 1
Lcd Time$ ; " "
Locate 2 , 1
Lcd Date$ ; " "
If M = 0 Then
Gosub Menu
End If



Loop
End

'##################### Чтение/запись времени в RTC #############################
Getdatetime:
I2cstart ' Generate start code
I2cwbyte Pcf8583w 'Отправка адреса
I2cwbyte 2 'Стартовый адрес
I2cstart ' Generate start code
I2cwbyte Pcf8583r 'Отправка адреса
I2crbyte _sec , Ack 'Секунды
I2crbyte _min , Ack 'Минуты
I2crbyte _hour , Ack 'Часы
I2crbyte _day , Ack 'Секунды
I2crbyte _month, Ack 'Минуты
I2crbyte _year, Nack 'Часы
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)



Return

Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart ' Generate start code
I2cwbyte Pcf8583w ' send address
I2cwbyte 2
I2cwbyte _sec ' Send Data to SECONDS
I2cwbyte _min ' MINUTES
I2cwbyte _hour ' Hours
I2cstop
Return
End

'########################## Процедура чтения температуры #######################
'########################### Меню ввода данных #################################
'________________Установка часов__________________
Sub Enterdatetime
Cls
Aa = 0
Xp = _hour
Do
If Xp > 23 Then Xp = 0
Locate 1 , 1
Lcd "** Setup time **"
Locate 2 , 1
Lcd "Set hours: " ; Xp ; " "
Getkey
H1 = Xp
Loop Until Aa = 1

'--------------------------------Установка минут--------------------------------
Cls
Aa = 0
Xp = _min
Do
If Xp > 59 Then Xp = 0
Locate 1 , 1
Lcd "** Setup time **"
Locate 2 , 1
Lcd "Set minutes: " ; Xp ; " "
Getkey
Min1 = Xp
Loop Until Aa = 1

_hour = H1
_min = Min1
_sec = 0
Gosub Settime
End Sub

'######################### Меню опроса кнопок ##################################
Sub Getkey
Waitms 500
If Cv = 0 Then Incr Xp
If Cn = 0 Then Decr Xp
If Vv = 0 Then
Aa = 1
Reset Watchdog
Else
Aa = 0
End If
Reset Watchdog
End Sub
'-------------------------------------------------------------------------------
Sub Menu
Aa = 0
Xp = 0
Getkey
Enterdatetime
Cls
Lcd " Please Wait!"
End Sub
End

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт окт 29, 2013 19:17:47
vem566
Игрался я с ним. У него в дате есть еще день недели. Не помню, какой байт. Даташит смотреть нужно.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт окт 29, 2013 19:45:43
pavel1979
в общем так
берем Регистр Дата (05h),он состоит из 8 бит
Y1 Y0 DD1 DD0 D3 D2 D1 D0,где
D0-D3 – единицы дней в BCD формате
DD0-DD1 – десятки дней
Y0-Y1 – год
извлекаем,получаем _day =69,то есть в бин десятки 0110 и единицы 1001,а мне надо 0010 и 1001 соответственно
так вот,это переменная _day,как можно откинуть 2 старших байта?вижу так-преобразовать в строку и извлечь оттуда младшие 6 бит,но как?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Вт окт 29, 2013 20:04:52
pavel1979
добавил строчки
Portsate = _day
Portsate = Portsate / 10
Label1: '
If Portsate > 4 Then
Portsate = Portsate - 4
_day = _day - 40
Goto Label1
End If


Portsate = _month
Portsate = Portsate / 10
Label2: '
If Portsate > 2 Then
Portsate = Portsate - 2
_month = _month - 20
Goto Label2
End If
вроде показывает нормально,как надо...

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 01:59:46
goldskif
Посоветоваться хочу.
Чтобы экран таймера палками забить, можно приведенный код применить или есть варианты более короткий? А то у меня уже бутлоадер ругается

Код: Выделить всё

Lcd "START "
Wait 5
Lcd "|"
Wait 5
Lcd "|"
Wait 5
Lcd "|"
Wait 5
Lcd "|"
Wait 5
Lcd "|"
Wait 5

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 04:48:03
pavel1979
можно просто
lcd "l l l l l l l l l l" (L маленькая)
можно самому нарисовать всен что угодно в каждом сегменте с разрешением 5/8 http://avr.ru/beginer/bascom/article18

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 09:51:15
uni
Ещё пример работы с PCF8583 есть на официальном форуме BASCOM в разделе примеров кода: RTC PCF8583 read Function and write Soubroutine.
Прикладываю файл оттуда.

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 14:26:51
pavel1979
uni писал(а):Ещё пример работы с PCF8583 есть на официальном форуме BASCOM в разделе примеров кода: RTC PCF8583 read Function and write Soubroutine.
Прикладываю файл оттуда.
что-то на баском не похоже...не компилируется,сплошные ошибки,но увидел строчки
Shift I , Left , 5 вроде как сдвиг,читаю HELP,мне как раз надо сдвинуть месяц и число,тогда получу день недели и год(год такто не нужен,просто интересно)

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 15:05:05
uni
Не похоже? Это в каком смысле?

Вот я пишу так, что действительно не похоже: MainUnit.bas. А там самый обычный bascom avr.

Изображение

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 16:44:55
edm2007
pavel1979 писал(а):можно просто...
Речь про прогресс бар шла. Постепенное заполнение, аки загрузка. :)

goldskif, ну Вы же видите что один и тот же код повторяется. Ясно же что в цикл можно завернуть:

Код: Выделить всё

Dim Temp As Byte 

For Temp = 1 To 16
   Locate 1 , Temp
   Lcd "*"
   Waitms 500
Next

Re: BASCOM AVR в вопросах и ответах

Добавлено: Ср окт 30, 2013 19:13:14
Scorpushka
edm2007 привет! (это мой первый учитель, который меня влюбил в МК), сайт новый не сделал?

кто нибудь подключал матрицу светодиодную через max7221/7219?
что то не понял как их подружить. спасибо

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт окт 31, 2013 13:51:10
edm2007
Привет. Неа, не сделал. Времени слишком мало, а интересных дел слишком много. :wink: . Семисегментник подключал по просьбе, ага. Только на Си писал. Работать с этим драйвером легко и приятно. Касаемо же баскома, то есть пара статей (не скажу что нравится, но все же):

ДРАЙВЕР ИНДИКАТОРОВ MAX7221. ЧАСТЬ 1

ДРАЙВЕР ИНДИКАТОРОВ MAX7221. ЧАСТЬ 2

Re: BASCOM AVR в вопросах и ответах

Добавлено: Чт окт 31, 2013 14:37:14
Scorpushka
все, разобрался с посегментным включением, сейчас сочленяю 7221 и матрицу из 64ледов 8х8. получается необходимо применить динамическую индикацию, перебирая 8строк и 8столбцов. (строки это DIG0-DIG7, столбцы DP,A,B...G)

т.е. для движения точки в первой строке делаем так-включили DIG1-7 (остается минус на DIG0), включили SEG DP (первая точка)
ждем
выключаем все
вторая точка в первой строке включили DIG1-7(остается минус на DIG0), включили SEG А (вторая точка)

правильно?

Re: BASCOM AVR в вопросах и ответах

Добавлено: Сб ноя 02, 2013 21:50:46
uni
Утилита objdump для формирования смешанного листинга (бейсик + ассемблер): objdump для AVR Object File (AOF).

Изображение