Страница 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
что-то на баском не похоже...не компилируется,сплошные ошибки,но увидел строчки
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
Привет. Неа, не сделал. Времени слишком мало, а интересных дел слишком много.

. Семисегментник подключал по просьбе, ага. Только на Си писал. Работать с этим драйвером легко и приятно. Касаемо же баскома, то есть пара статей (не скажу что нравится, но все же):
ДРАЙВЕР ИНДИКАТОРОВ 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).
