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

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

Сообщение TRIOD »

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

Сообщение edm2007 »

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

Сообщение aleksey_gregul »

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

Сообщение vpashko »

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

Сообщение 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
'--------------------
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2052
Зарегистрирован: Вт ноя 03, 2009 21:02:38
Откуда: Москва

Сообщение Microtech »

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

Сообщение Alvasin »

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

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

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


Изображение

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

Сообщение 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).... :(
Что делаю не правильно?
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

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

Сообщение us5caa »

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

Сообщение Alex_Megavolt_79 »

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

Сообщение Microtech »

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

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

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

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

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

Сообщение 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-это какоето случайное число из подаваемой на вход частоты :) )
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

Сообщение Moto_v3x »

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

Сообщение us5caa »

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

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

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

Сообщение Moto_v3x »

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

Сообщение us5caa »

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

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