я като и необратил внимание. Осталось после эксперементов. Правильно конечно отрубить есле ненжен выход inv OCB1 и Pwm1aedm2007 писал(а):Да, теперь все понятно.А Вы специально включили инверсный вывод OC1B в GTCCR? И PWM1A тоже.
BASCOM AVR в вопросах и ответах
Только абсолютная пустота бездны принесёт мне покой.
- Реклама
Ну да, потому я и пишу всегда в двоичном виде, чтобы нагляднее было. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Сообщения: 130
- Зарегистрирован: Ср дек 29, 2010 17:30:34
http://pol-sem.narod.ru/muson/muson.htmvpashko писал(а):Как сюда дописать две кнопки чтоб при нажатии на одну играла музыка а второй выбирать музыку.
aleksey_gregul, спасибо что ответили, я видел этот звоночек, но там исходник не на Bascom AVR написан.
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
Подскажите, как привести к виду 00.000.000 показания частотомера
сейчас показывает "00.000000"
тренируюсь с граф 128х64
кусочек исходника:
сейчас показывает "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
'--------------------
- Реклама
Форматировал вывод так:
Число из бинарника в строчку ASCII функцией STR, тут все ясно. Далее цикл или функция FORMAT, в котором дополняются нули перед числом и десятичные точки. Можно и функцией MID вставить точки или другие знаки, в нужных местах, затем на индикацию. Сложнее, когда индикатор сегментный, там точки надо не в текстовой строке держать, а учитывать при управлении сегментами. Строковые функции сильно жрут память, я использовал только STR 1 раз, чтобы бинарный в ASCII сделать, а затем, получив адрес этой строки в ОЗУ функцией VARPTR, все остальное на ASM вставке, но много не сэкономил.
Число из бинарника в строчку ASCII функцией STR, тут все ясно. Далее цикл или функция FORMAT, в котором дополняются нули перед числом и десятичные точки. Можно и функцией MID вставить точки или другие знаки, в нужных местах, затем на индикацию. Сложнее, когда индикатор сегментный, там точки надо не в текстовой строке держать, а учитывать при управлении сегментами. Строковые функции сильно жрут память, я использовал только STR 1 раз, чтобы бинарный в ASCII сделать, а затем, получив адрес этой строки в ОЗУ функцией VARPTR, все остальное на ASM вставке, но много не сэкономил.
- Сообщения: 5
- Зарегистрирован: Пн фев 07, 2011 11:52:32
ATmega8 имеет два 8 разрядных таймера / счетчика и один 16-разрядный таймер счетчик с различными способностями.
Особенности 8-разрядный Timer/Counter0 являются:
Одноканальный счетчик;
Частота генератора;
Внешний счетчик событий;
10 - делитель частоты немного часов.

TCNT0 является 8-битный таймер регистра счетчика. Таймер счетчик может быть синхронизирована внешним часов через контактный T0 или от внутренних через предварительно scaller. Таймер счетчик увеличивая (MAX значение 0xFF), а затем возобновляется с внизу = 0x00. После переполнении таймера, флага TOV0 записывается в 1, и если TOIE0 бит в SREG установлен, то переполнения таймера прерывания выполняется. TOV0 действует как девятый бит из регистра счетчика, который только установлен, но не очищается. При этом бис сочетается с переполнения таймера прерывания - то она автоматически снимается. Если вам нужно, чтобы начать не образуют вниз, то вы можете написать любое значение TCNT0 зарегистрироваться в любое время.
Особенности 8-разрядный Timer/Counter0 являются:
Одноканальный счетчик;
Частота генератора;
Внешний счетчик событий;
10 - делитель частоты немного часов.
TCNT0 является 8-битный таймер регистра счетчика. Таймер счетчик может быть синхронизирована внешним часов через контактный T0 или от внутренних через предварительно scaller. Таймер счетчик увеличивая (MAX значение 0xFF), а затем возобновляется с внизу = 0x00. После переполнении таймера, флага TOV0 записывается в 1, и если TOIE0 бит в SREG установлен, то переполнения таймера прерывания выполняется. TOV0 действует как девятый бит из регистра счетчика, который только установлен, но не очищается. При этом бис сочетается с переполнения таймера прерывания - то она автоматически снимается. Если вам нужно, чтобы начать не образуют вниз, то вы можете написать любое значение TCNT0 зарегистрироваться в любое время.
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
можно написать кусочек, почему то такой вариант типа: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
Что делаю не правильно?
- Сообщения: 1278
- Зарегистрирован: Пн июн 18, 2007 21:51:20
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
с скобками ошибся когда вставлял сюда код, в исходнике всё правильно... A$=str((Frequency) ,aleksandr-zh писал(а):кол-во открытых скобок не совпадает с кол-вом закрытых
Уважаемые коты, а кто нибудь разбирался с датчиками давления MPX4115AP и влажности HIH-4000 группы 002 или 004. Я не совсем пойму как пересчитывать показания АЦП. И есть ли у кого пример на ВАСИКЕ?
us5caa
A$=str(Frequency),8) А что значат скобки запятая и цифра 8?
может подойдет A$=str(Frequency)+"8" но не понятно, зачем там 8, или восьмерка к длине строки отношение должна иметь? Переменная A$ и так объявлена как 8 байт длиной, никаких цифр в STR подставлять не надо.
A$=str(Frequency),8) А что значат скобки запятая и цифра 8?
может подойдет A$=str(Frequency)+"8" но не понятно, зачем там 8, или восьмерка к длине строки отношение должна иметь? Переменная A$ и так объявлена как 8 байт длиной, никаких цифр в STR подставлять не надо.
Может всё-таки надо так: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?
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
Ну это я гдето подсмотрел, в каких то исходникахМурик писал(а):Это недокументированная команда,Microtech писал(а):A$=str(Frequency),8) А что значат скобки запятая и цифра 8?о которой даже Марк Альбертс не знает!
получилось всё таки разбить цифры точками....
Код: Выделить всё
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
LoopFrequency = Frequency / 1000000 делить не на 1000000 а на 100000 то на дисплее опять бред... типа 86. 86.86.86. и так далее за пределы дисплея
us5caa
Это новая прошивка для Бриз-5 или синтезатора или что то новое готовится?
Это новая прошивка для Бриз-5 или синтезатора или что то новое готовится?
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
Moto_v3x писал(а):us5caa
Это новая прошивка для Бриз-5 или синтезатора или что то новое готовится?
Почему Frequency = Frequency / 1000000 выводиться нормально а Frequency = Frequency / 100000 не нормально?
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Как бы текущая версия 2.0.4.0.us5caa писал(а):1.11.9.0
Может и была какая-то ошибка компилятора (его люди пишут, а людям свойственно ошибаться) и возможно что ее исправили в текущих версиях.
us5caa
может это из за разной длинны строки после деления, хотя если на входе делитель на 10 то надо умножать на 10 или увеличивать время счета. Хоть бы показали конфигурацию дисплея, таймера, прерываний.
Похоже что этот исходник взяли за основу.
может это из за разной длинны строки после деления, хотя если на входе делитель на 10 то надо умножать на 10 или увеличивать время счета. Хоть бы показали конфигурацию дисплея, таймера, прерываний.
Похоже что этот исходник взяли за основу.
- Сообщения: 38
- Зарегистрирован: Пт апр 04, 2008 08:48:57
Да исходник за основу взял именно этот, но там время счёта 1сек, уменьшил константы в 5 раз, и умножаю показания на 5.Moto_v3x писал(а):us5caa
может это из за разной длинны строки после деления, хотя если на входе делитель на 10 то надо умножать на 10 или увеличивать время счета. Хоть бы показали конфигурацию дисплея, таймера, прерываний.
Похоже что этот исходник взяли за основу.
изменил только дисплей.


