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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
TRIOD
Вымогатель припоя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

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

Сообщение TRIOD »

edm2007 писал(а):Да, теперь все понятно. :) А Вы специально включили инверсный вывод OC1B в GTCCR? И PWM1A тоже.

я като и необратил внимание. Осталось после эксперементов. Правильно конечно отрубить есле ненжен выход inv OCB1 и Pwm1a
Только абсолютная пустота бездны принесёт мне покой.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

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

Сообщение edm2007 »

Ну да, потому я и пишу всегда в двоичном виде, чтобы нагляднее было. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
aleksey_gregul
Встал на лапы
Сообщения: 130
Зарегистрирован: Ср дек 29, 2010 17:30:34

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

Сообщение aleksey_gregul »

vpashko писал(а):Как сюда дописать две кнопки чтоб при нажатии на одну играла музыка а второй выбирать музыку.

http://pol-sem.narod.ru/muson/muson.htm
Аватара пользователя
vpashko
Нашел транзистор. Понюхал.
Сообщения: 153
Зарегистрирован: Пт июн 20, 2008 18:27:08
Откуда: Украина,Запорожье

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

Сообщение vpashko »

aleksey_gregul, спасибо что ответили, я видел этот звоночек, но там исходник не на Bascom AVR написан.
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

Подскажите, как привести к виду 00.000.000 показания частотомера
сейчас показывает "00.000000"
тренируюсь с граф 128х64
кусочек исходника:

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

Dim Frequency As Single
Dim Flag As Bit
Dim Overflow As Byte
Dim Cnt As Long
Dim Disp As String * 8

'----------
Main:
Do
    If Flag = 1 Then
            Frequency = Overflow * 65536                    '65536
            Frequency = Frequency + Counter1
Setfont Font8x8
            Lcdat 1 , 10 , "Frequency metr" , 0
            Frequency = Frequency / 100000
Disp = Str(frequency)
            Setfont My12_16
            Disp = Fusing(frequency , "0.00000")
            Lcdat 4 , 1 , Disp , 0
'----------
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

Форматировал вывод так:
Число из бинарника в строчку ASCII функцией STR, тут все ясно. Далее цикл или функция FORMAT, в котором дополняются нули перед числом и десятичные точки. Можно и функцией MID вставить точки или другие знаки, в нужных местах, затем на индикацию. Сложнее, когда индикатор сегментный, там точки надо не в текстовой строке держать, а учитывать при управлении сегментами. Строковые функции сильно жрут память, я использовал только STR 1 раз, чтобы бинарный в ASCII сделать, а затем, получив адрес этой строки в ОЗУ функцией VARPTR, все остальное на ASM вставке, но много не сэкономил.
Alvasin
Родился
Сообщения: 5
Зарегистрирован: Пн фев 07, 2011 11:52:32

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

Сообщение Alvasin »

ATmega8 имеет два 8 разрядных таймера / счетчика и один 16-разрядный таймер счетчик с различными способностями.

Особенности 8-разрядный Timer/Counter0 являются:

Одноканальный счетчик;
Частота генератора;
Внешний счетчик событий;
10 - делитель частоты немного часов.


Изображение

TCNT0 является 8-битный таймер регистра счетчика. Таймер счетчик может быть синхронизирована внешним часов через контактный T0 или от внутренних через предварительно scaller. Таймер счетчик увеличивая (MAX значение 0xFF), а затем возобновляется с внизу = 0x00. После переполнении таймера, флага TOV0 записывается в 1, и если TOIE0 бит в SREG установлен, то переполнения таймера прерывания выполняется. TOV0 действует как девятый бит из регистра счетчика, который только установлен, но не очищается. При этом бис сочетается с переполнения таймера прерывания - то она автоматически снимается. Если вам нужно, чтобы начать не образуют вниз, то вы можете написать любое значение TCNT0 зарегистрироваться в любое время.
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

Microtech писал(а):Форматировал вывод так:
.... Можно и функцией MID вставить точки или другие знаки, в нужных местах, затем на индикацию. ....


можно написать кусочек, почему то такой вариант типа:

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

Dim A$ as string * 8
Dim B$ as string * 13
.
.
A$=str(Frequency) , 8)
B$=left (a$ , 2) +"."
B$=B$+Mid (a$ , 3 , 3) +"."
B$=B$ + right(a , 3) + "Hz"
Setfont My12_16
Lcdat 4, 10, B$ ,0 

не проходит, компилятор ругаветься на A$=str(Frequency),8).... :(
Что делаю не правильно?
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

Сообщение aleksandr-zh »

кол-во открытых скобок не совпадает с кол-вом закрытых ;)
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

aleksandr-zh писал(а):кол-во открытых скобок не совпадает с кол-вом закрытых ;)

с скобками ошибся когда вставлял сюда код, в исходнике всё правильно... A$=str((Frequency) , 8)
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

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

Сообщение Alex_Megavolt_79 »

Уважаемые коты, а кто нибудь разбирался с датчиками давления MPX4115AP и влажности HIH-4000 группы 002 или 004. Я не совсем пойму как пересчитывать показания АЦП. И есть ли у кого пример на ВАСИКЕ?
Аватара пользователя
Microtech
Поставщик валерьянки для Кота
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва
Контактная информация:

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

Сообщение Microtech »

us5caa
A$=str(Frequency),8) А что значат скобки запятая и цифра 8?
может подойдет A$=str(Frequency)+"8" но не понятно, зачем там 8, или восьмерка к длине строки отношение должна иметь? Переменная A$ и так объявлена как 8 байт длиной, никаких цифр в STR подставлять не надо.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

us5caa писал(а):с скобками ошибся когда вставлял сюда код, в исходнике всё правильно... A$=str((Frequency) , 8 )

Может всё-таки надо так:
A$ = str(Frequency)
A$ = Mid(A$, 1, 8 )
?
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Microtech писал(а):A$=str(Frequency),8) А что значат скобки запятая и цифра 8?
Это недокументированная команда, :shock: о которой даже Марк Альбертс не знает! :)))
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

Мурик писал(а):
Microtech писал(а):A$=str(Frequency),8) А что значат скобки запятая и цифра 8?
Это недокументированная команда, :shock: о которой даже Марк Альбертс не знает! :)))

Ну это я гдето подсмотрел, в каких то исходниках :)
получилось всё таки разбить цифры точками....

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


Dim Frequency As Single
Dim Flag As Bit
Dim Overflow As Byte
Dim Cnt As Long
Dim Disp As String * 8
Dim Text$ As String * 10
Dim Prom_ch As Single
................................
...............................
Main:
Do
    If Flag = 1 Then
            Frequency = Overflow * 65536                    '65536
            Frequency = Frequency + Counter1


            Frequency = Frequency / 1000000
            Frequency = Frequency * 5
            'Frequency = Frequency + Prom_ch

            Disp = Str(frequency)

            Setfont Font8x8
            'Setfont My12_16
            Disp = Fusing(frequency , "#.######")
            Text$ = Left(disp , 2) + Mid(disp , 3 , 3) + "."
            Text$ = Text$ + Right(disp , 3)
            'Print Text$
            Lcdat 4 , 1 , Text$ , 0
            Setfont Font8x8

            Lcdat 8 , 1 , "Presc=10" , 0
             Line(0 , 12) -(127 , 12) , 255
            Line(0 , 50) -(127 , 50) , 255
            Line(64 , 50) -(64 , 63) , 255
            Line(0 , 13) -(127 , 13) , 255
            Line(0 , 51) -(127 , 51) , 255
            Reset Flag
            Counter1 = 0
            Overflow = 0
            Cnt = 6950                                      ' 34750 çíà÷åíèå ïîäîáðàíî äëÿ çàõâàòà çà 1 ñåêóíäó


            Tcnt1 = 0
            Tcnt0 = 90

            Start Timer0
            Start Counter1
     End If
Loop


но... так микруха считает до 8МГц, а если использовать делитель на 10, соответственно в исходнике
Frequency = Frequency / 1000000 делить не на 1000000 а на 100000 то на дисплее опять бред... типа 86. 86.86.86. и так далее за пределы дисплея :( (86-это какоето случайное число из подаваемой на вход частоты :) )
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

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

Сообщение Moto_v3x »

us5caa
Это новая прошивка для Бриз-5 или синтезатора или что то новое готовится?
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

Moto_v3x писал(а):us5caa
Это новая прошивка для Бриз-5 или синтезатора или что то новое готовится?

:) Это готовится новый приборчик :) вот только не могу понять что происходит с Bascom , 1.11.9.0 выдавал ошибку в пустой строчке.... переустановил 1.11.9.5 , появилась такая проблема, не могу расставить цыфры :(
Почему Frequency = Frequency / 1000000 выводиться нормально а Frequency = Frequency / 100000 не нормально?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

us5caa писал(а):1.11.9.0
Как бы текущая версия 2.0.4.0.
Может и была какая-то ошибка компилятора (его люди пишут, а людям свойственно ошибаться) и возможно что ее исправили в текущих версиях.
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

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

Сообщение Moto_v3x »

us5caa
может это из за разной длинны строки после деления, хотя если на входе делитель на 10 то надо умножать на 10 или увеличивать время счета. Хоть бы показали конфигурацию дисплея, таймера, прерываний.
Похоже что этот исходник взяли за основу.
test_02.rar
us5caa
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пт апр 04, 2008 08:48:57
Контактная информация:

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

Сообщение us5caa »

Moto_v3x писал(а):us5caa
может это из за разной длинны строки после деления, хотя если на входе делитель на 10 то надо умножать на 10 или увеличивать время счета. Хоть бы показали конфигурацию дисплея, таймера, прерываний.
Похоже что этот исходник взяли за основу.
test_02.rar

Да исходник за основу взял именно этот, но там время счёта 1сек, уменьшил константы в 5 раз, и умножаю показания на 5.
изменил только дисплей.
Ответить

Вернуться в «AVR»