Страница 115 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 29, 2012 22:49:20
edm2007
Там на самом деле не 1 градус ошибки при таких расчетах а 0,1. А минус ноль конечно будет появляться, ведь температура не меняется скачкообразно от 0 до -1. Есть ведь и -0,1C и все в том же духе. Это мы не выводим в данном случае десятые, но они ведь существуют.

А чтобы этого нелепого минуса небыло, как раз и достаточно прибавить 1 к отрицательным значениям. Правда в этом случае мы немножко наврем (потому как при реальной температуре -0,1C мы сразу же будем показывать -1С), но я думаю что ничего страшного.

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 29, 2012 22:56:37
vanyap1
Фактически, для кода где нет десятых градуса оно актуально. А почему бы и не отображать для 0,1 градуса - минус?...
Но для погрешности в 0,1 градус я считаю ничего предпринимать не надо, ибо ds18b20 не обладает столь высокой точностью.
Мой пульт меня достал сцуко! Уже стырил код для обработки НЕК протокола, итак ничего не работает!
Но импульсы к МК идут 100500%, проверил. Настроил прерывания на подъем уровня и заработало, но мне не надо реагировать на все что в пределах 36 КГц.... Я в ужасе от этих пультов.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 29, 2012 23:03:19
edm2007
Ну разумеется когда десятые выводятся то минус нужен. И действительно погрешность 0,1C в минусах это ерунда. Но у автора-то лишь целые. И тут минус ноль смотрится как-то нелепо. Впрочем, в этом случае можно не заморачиваться совсем, а просто написать: если температура равна 0, то на месте знака - пусто. А +0,3C там на самом деле, или -0,7С нам уже не важно. Все равно десятых нет. Так даже лучше и точнее будет, и ничего прибавлять не надо.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс янв 29, 2012 23:18:12
mr4ester
вообщем то я только сегодня переписал программу под десятые градуса

и случайно наткнулся на то что при отрицательной температуре прибавляют 1, меня это с смутило и решил спросить, выходит с вышесказанными разъяснениями, придется убрать это действие, спасибо за разъяснение

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 30, 2012 17:03:14
vanyap1
Собрал все таки передатчик rc-5 на тини 2313 (теперь он точно rc-5, и не надо подбирать пульты).
Код устроен так: при подаче питания команда и адрес равно - 0, и при каждой последующей передачи команда инкрементируется.
Но приемник все равно не работает как надо, иногда принимает каждую 10-ю команду. Ито после танцов с бубном, убрал задержку после опроса rc-5 и добавил условие - если команда и адрес не равно 255 то записать в другие переменные, которые потом выводятся на ЖКИ.
Грещу еще на кварц, но с внутренним генератором те же пироги.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 30, 2012 17:08:55
edm2007
Я как-то спрашивал, а приемник какой? Точно 36 kHz?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн янв 30, 2012 18:48:55
vanyap1
и tsop4836 тоже. Черт его знает что там еще. Придется собрать тоже приемник еще один на тиньке2313.
Re: ЦМУ: фурье-шим
Добавлено: Вт янв 31, 2012 10:52:23
Magicanin
Здравия желаю всем Котам.
Нужна помощь сведущих. Конструируируя собственную цму, встала проблема в анализе звукового потока, не могу добиться четкого разделения частотных каналов, в основном светодиоды мигают хаотически. Анализ взят из "Виктория" и добавлен шим на 4 канала от "Светодиодный диммер". При отсутствии звука светики не горят, как и должно быть, а при подаче звука хаос.
Пробовал даже варианты анализа отсюда
http://bascomavr.3bb.ru/viewtopic.php?id=28&p=2
Стало хуже, мигает только второй канал, остальные в полную мощность.
Тактирование пробовал и внешнее на 16 и внутреннее.
Может несогласованность с шим, не знаю что думать?
Код: Выделить всё
$regfile = "m32def.dat"
$crystal = 8000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
Enable Adc
Start Adc
Config Timer0 = Timer , Prescale = 1
Enable Timer0
On Timer0 Pwms
Start Timer0
Enable Interrupts
Config Portd = Output
Dim Tik As Byte
Dim Y(4) As Byte
Dim A1 As Word , A2 As Word , A3 As Word , A4 As Word , A5 As Word
Dim X1 As Single , X2 As Single , X3 As Single , X4 As Single , X5 As Single
Dim Ym1 As Byte , Ym2 As Byte , Ym3 As Byte , Ym4 As Byte
Dim Temp5 As Single , Temp6 As Single , Temp7 As Single
Dim Temp8 As Byte
Do
Disable Timer0
A1 = Getadc(7)
'Waitus 25
A2 = Getadc(7)
'Waitus 25
A3 = Getadc(7)
'Waitus 25
A4 = Getadc(7)
'waitus 25
A5 = Getadc(7)
Enable Timer0
X1 = A1 / 103
X2 = A2 / 103
X3 = A3 / 103
X4 = A4 / 103
X5 = A5 / 103
Temp5 = X1 - X5
Temp6 = X2 - X4
Temp8 = Temp5 + Temp6
Ym1 = Temp8 / 3
'Ñ×1
Temp5 = X1 + X5
Temp6 = X3 * 2
Temp8 = Temp5 - Temp6
Ym2 = Temp8 / 4
'Ñ×2
Temp5 = X1 - X5
Temp7 = X2 - X4
Temp6 = Temp7 * 2
Temp8 = Temp5 - Temp6
Ym3 = Temp8 / 6
'Â×
Temp5 = X1 + X5
Temp7 = X2 + X4
Temp6 = Temp7 * 4
Temp8 = Temp5 - Temp6
Ym4 = Temp8 / 18
Y(1) = Ym1
Y(2) = Ym2
Y(3) = Ym3
Y(4) = Ym4
Loop
End
'*******************************************************************************
Pwms:
Incr Tik
If Tik = 255 Then
Tik = 0
Portd = 0
End If
If Tik > Y(1) Then Portd.0 = 1
If Tik > Y(2) Then Portd.1 = 1
If Tik > Y(3) Then Portd.2 = 1
If Tik > Y(4) Then Portd.3 = 1
Return
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 12:00:53
vanyap1
Как стабилизировать данные АЦП меги8?
АЦП отключен, включаю только при измерении и до начала вычисления отключаю, немного сузился диапазон прыжков. Прыгает как от внутреннего ИОН так и от питающего опорного.
Но ведь они не должны прыгать если опорное напряжение еще и питающее!
Вот кусок кода:
Код: Выделить всё
Do
Start Adc
Wadc = Getadc(0)
Stop Adc
U = Wadc / 204.6
Locate 1 , 1
Lcd "ADC= " ; Wadc ; " "
Locate 2 , 1
Lcd "Voltage= " ; Fusing(u , "#.#") ; " "
Waitms 100
Loop
Конденсаторы в схеме есть, установлены по схеме из даташита. Питается все это пока что от ЮСБ программатора.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 12:53:33
Magicanin
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 13:21:41
vanyap1
Мне кажется что это не есть хорошо для блока питания, если надо измерять и контролировать напряжение одновременно.
ШИМ может дать большие помехи для АЦП.
Думал сгладить шим и дать опорное напряжение с него на ИБП. Может и RC цепочку на вход АЦП подключить...?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 13:31:58
Magicanin
RC хорошо бы, можно еще входное сопротивление уменьшить подтяжкой на массу штоб не болтался на ветру.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 14:24:29
vanyap1
Magicanin писал(а):Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!

Достаточно неплохо работает сие чудо техники...
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 14:56:25
Magicanin
vanyap1 писал(а):Magicanin писал(а):Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!

Достаточно неплохо работает сие чудо техники...
Только этим чудом и пользуюсь, уже второй год.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 15:24:17
vanyap1
Я тоже пользуюсь, но все время после прошивки ошибка вылетает, компенсирует скорость прошивки.
Еще иногда становится недоступным программатор, надо передернуть с ЮСБ.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 15:37:41
Magicanin
Я пользуюсь им только в Bascom-AVR 1.11.9.8 По-моему самая удачная сборка из всех версий.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 17:09:55
amv2000
Magicanin писал(а):Я пользуюсь им только в Bascom-AVR 1.11.9.8 По-моему самая удачная сборка из всех версий.
Согласен на все 100%, а касаемо программатора наверное дело привычки, как говорится, что русскому хорошо то немцу смерть.
Да простят мне флуд, не удержался.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 17:20:56
vanyap1
Как оставить после комы только один знак, а все остальное убрать? Это надо сделать до вывода на экран.
Команду "Fusing" вроде понял, но никак она не хочет работать
Или ввести еще одну переменную и сделать так -
?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 17:33:58
Magicanin
Попробуй это из хелпа:
Код: Выделить всё
S = "12345"
S = Format(s , "000.0")
Print S
Но она раотает только со стрингами, иначе добавь Str(S)
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт янв 31, 2012 17:43:08
amv2000
Пример тоже из хелпа
Спойлер
Dim S As Single , Z As String * 10
'присвоить значение переменной single
S = 123.45678
'используя str() преобразуем числовое значение в строковое
Z = Str(s)
Print Z 'выводим 123.456779477
Z = Fusing(s , "#.##")
'после форматирования используем 2 цифры после запятой с округлением
Print Fusing(s , "#.##") 'выводим 123.46
'после форматирования используем 2 цифры после запятой без округления
Print Fusing(s , "#.&&") 'выводим 123.45
Fusing Форматирует переменную типа Single согласно формату строки, при необходимости выполняет округление.