Страница 144 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт авг 23, 2012 19:09:14
aleksandr-zh
amv2000 писал(а):selco писал(а):Кто знает,как сделать на 3310 логарифмическую шкалу
Как вариант сделать серию изображений от пустой шкалы до заполнения (какая дискретность, столько и рисунков), измеряем уровень на АЦП и в зависимости от уровня через Select case выводим нужный рисунок.
я делал, но на предшественике Баскома - FastAVR
всё что есть, разбирайтесь сами - не обессудьте
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт авг 23, 2012 19:16:08
selco
[quote="aleksandr-zh"]
Спасибо.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт авг 23, 2012 19:44:32
Gordon Shumway
selco писал(а):Спасибо.
Я делал похожее, но на дисплее 1100 - делал вертикальную шкалу для термометра. Для этого я просто перерисовал ненужные символы из библиотеки (сделал вместо них разное количество горизонтальных черточек) и выводил по необходимости. Грубо говоря 0 - пробел. 1 - символ с одной чертой, 2 - с двумя и т.д... Насколько я помню библиотеку от 3310 - там это можно сделать в файле 3310end.bas.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт авг 23, 2012 19:46:49
aleksandr-zh
я делал графический горизонтальный
там должно быть несколько программ: просто отображение, иммитация прогресса, случайные значение...
вот, еще нашел
тут как раз двигающаяся
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт авг 23, 2012 21:08:22
dimon-790
ut1wpr писал(а):Читайте литературу.
Согласен , пожалуй мне надо более глубоко изучить мат часть. Хотел нахаляву разъдобыть , думал мож кто уже занимался подобмными весчами . Видать прийдётся стать первооткрывателем ...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт авг 24, 2012 08:18:13
selco
[quote="Gordon Shumway"]
Всё это я понимаю,но,программа выполняет ещо и другие функции. Когда изменяется шкала то естественно чистится экран,цифры и другие надписи в этот момент мигают. нельзя ли сделать очистку определённой строки? Пробовал в end файле добавить вторую очистку,но он чистит всегда с верху,менял значение от 0 до 503 и всё равно чистит с верху. Мне нужна только нижняя строчка. Помогите.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт авг 24, 2012 10:54:43
ut1wpr
dimon-790 писал(а):ut1wpr писал(а):Читайте литературу.
Видать прийдётся стать первооткрывателем ...
Не получится. Все уже открыто до вас. Ваша проблема не в том, что НЕТУ, просто нету именно ТОГО, что вам нужно. Есть основа, а ее придется изучить понять и переделать. Обыкновенное обучение на начальном уровне. Без выхода на этот уровень, а потом и на более высокие, открытий не сделаете.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Сб авг 25, 2012 12:21:02
vanyap1
Как пользоваться дифференциальным усилителем у меги16?
Точнее - как измерять ток через шунт с помощью АЦП без внешнего ОУ?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Сб авг 25, 2012 19:24:19
zero648
vanyap1 писал(а):Как пользоваться дифференциальным усилителем у меги16?
Точнее - как измерять ток через шунт с помощью АЦП без внешнего ОУ?
Пример из даташита меги16:
Example:
ADMUX = 0xED (ADC3 - ADC2, 10x gain, 2.56V reference, left adjusted result)
Voltage on ADC3 is 300 mV, voltage on ADC2 is 500 mV.
ADCR = 512 * 10 * (300 - 500) / 2560 = -400 = 0x270
ADCL will thus read 0x00, and ADCH will read 0x9C. Writing zero to ADLAR right
adjusts the result: ADCL = 0x70, ADCH = 0x02.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс авг 26, 2012 11:26:23
Igor_67
selco писал(а):Gordon Shumway писал(а):
Всё это я понимаю,но,программа выполняет ещо и другие функции. Когда изменяется шкала то естественно чистится экран,цифры и другие надписи в этот момент мигают. нельзя ли сделать очистку определённой строки? Пробовал в end файле добавить вторую очистку,но он чистит всегда с верху,менял значение от 0 до 503 и всё равно чистит с верху. Мне нужна только нижняя строчка. Помогите.
Я так понимаю, что очистка экрана идет в цикле? А если отслеживать по изменению уровня? Если уровень уменьшился, тогда очищаем экран и перерисовываем, а если увеличился, тогда очищать не надо, просто добавить к шкале n-ное количество пикселей. Наверное так будет меньше моргать. Другой вариант - увеличить частоту перерисовки экрана, только это, наверное, уже придется 32 разрядный МК использовать или ПЛИС.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн авг 27, 2012 08:42:25
dimon-790
Вот
Код: Выделить всё
$regfile = "m8535.dat"
$crystal = 8000000
$baud = 9600
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 255 ', Bytematch = All
Config Lcdpin = Pin , Db7 = Porta.3 , Db6 = Porta.2 , Db5 = Porta.5 , Db4 = Porta.4 , Rs = Porta.7 , E = Porta.6
Dim Na As Byte , Buf_count As Byte , A As Byte
'Ucsrb.5 = 0
Enable Interrupts
'Clear Serialin
'$timeout = 500000
Do
If Ischarwaiting() = 1 Then 'если байт в регистре
Inputbin Na 'Забираем Его В Na
Incr Buf_count 'увеличиваем счётчик кол-ва байт
End If
Waitms 2 'ждём немного
If Ischarwaiting() = 0 Then 'если буфер попрежнему пуст
If Buf_count > 1 Then 'а счётчик кол-ва байт больше единицы
Cls 'выдаём получиные на индикатор
Lcd Hex(na)
Lowerline
Lcd Buf_count
Buf_count = 0 '
End If
End If
Loop
поковырялся немного вчера , вроде получил что хотел . Но как всегда , терзают смутные сомнения , особенно задержка между условиями . Интересно , как ещё можно узнать, что приём последнего байта закончен ?.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн авг 27, 2012 19:38:30
dimon-790
Похоже мне "везёт" на чудеса . Попытался запустить тиньку , с софтовым юарт-ом не тут-то было ! не принимает воообще никак . Передача прекрасно а приём фиг-вам . Народ гляньте код ,
Код: Выделить всё
$regfile = "attiny45.dat"
$crystal = 8000000
Dim Na As String * 6
Open "comb.1:9600,8,n,1" For Output As #1
Open "comb.2:9600,8,n,1" For Input As #2
Do
Na =Waitkey (#2)
Print #1 , Na
Loop
чё я там накасячил ? вроде всё по учебнику .

..
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн сен 03, 2012 08:39:24
Kill17
Добрый день!
Товарищи форумчане, нужна Ваша помощь!
Пытаюсь освоить Баском, вроде что-то понимаю, но подводные камни все таки нахожу. Пишу программу для своего дивайса, но столкнулся с проблемой.
Мне нужно сделать ретранслятор уарта, те контроллер принимает посылку и передает. Посылки разные по длине байт. Подскажите, как это реализовать, а то он их режет по 4 байта, не могу победить.
-------------------
все никак победить не могу, теперь он при посылке теряет байты через один. Отправил 33 34 35 36, получил 33 35, как победить, наставьте на путь истинный
$regfile = "attiny2313.dat"
$crystal = 11059200
$hwstack = 40
$swstack = 16
$framesize = 32
Dim I As Byte
Config Serialin = Buffered , Size = 10
Config Serialout = Buffered , Size = 10
Open "comd.0:115200,8,n,1" For Input As #2
Open "comd.4:115200,8,n,1" For Output As #3
Do
Inputbin #2 , I
Printbin #3 , I
loop
Close #2
Close #3
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт сен 04, 2012 10:03:32
dimon-790
а почему не использовать хардовый юарт ? в 2313 он есть. По сути вопроса , вы пытаетесь впихнуть несколько байт в один . Переменная I в вашем случае , составляет 1-байт , а посылку принимаете много байтную

естественно теряете часть посылки.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт сен 04, 2012 21:09:10
Kill17
Трудность в том, что нужно будет в последствии сделать два - три уарта.
Так, а как это победить, просто в эдеале он должен принимать и передавать побайтно.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср сен 05, 2012 09:15:07
Секретный кот
Два аппаратных уарта есть в некоторых мегах. А третий уарт, который нужен только для передачи, легко сделать софтовым.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср сен 05, 2012 09:37:19
dimon-790
вот накидал , более или менее рабочий код , правда кривовато но работает ...
Код: Выделить всё
$regfile = "m8535.dat"
$crystal = 8000000
$baud = 9600
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 10
'Config Serialout = Buffered , Size = 10 ', Bytematch = All
Open "comc.1:9600,8,n,1" For Input As #1
Open "comc.0:9600,8,n,1" For Output As #0
Dim Na(10)as Byte , Buf_count As Byte , A As Byte
Enable Interrupts
Clear Serialin
Buf_count = 1
Do
If Ischarwaiting() = 1 Then 'если байт в регистре
Inputbin Na(buf_count) , 1 'Забираем Его В na
Incr Buf_count 'увеличиваем счётчик кол-ва байт
End If
Waitms 2 'ждём немного
If Ischarwaiting() < 1 Then 'если буфер попрежнему пуст
If Buf_count > 1 Then 'а счётчик кол-ва байт больше единицы
For Buf_count = Buf_count To 2 Step -1
Incr A
Printbin #0 , Na(a) ; 1 'выдаём полученые данные
Next
A = 0
Clear Serialin '
End If
End If
Loop
Close #1
Close #0
приём по хардовому юарту передача по софтовому.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Ср сен 05, 2012 11:45:16
Kill17
Спасибо огромное, буду пробывать!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Сб сен 08, 2012 09:29:43
Kill17
Большое спасибо, все работает, но принимать мне необходимо от 4 до 125 байт в посылке, а буфер соответственно с этим не справляется, возможно сделать это через запись в ЕЕПРОМ или все это бесполезно? Посоветуйте, какие еще есть выходы из данной ситуации?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн сен 10, 2012 09:20:00
yarik.ks
Здравствуйте уважаемые Господа Коты! Подскажите пожалуйста как организовать таймаут по приему UART? Раньше програмировал на пик барсике, там все просто: HSERIN, timeout,метка,переменная. А тут случилось что надо написать прогу под мегу8, ломаю голову как вывести из состояния приема, если ничего не получено. В баскоме новичек, не ругайте, заранее спасибо
PS Вроде докопался $TIMEOUT буду пробывать