Страница 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
чё я там накасячил ? вроде всё по учебнику . :oops: ..

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-байт , а посылку принимаете много байтную :o естественно теряете часть посылки.

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 буду пробывать