BASCOM AVR в вопросах и ответах
Там на самом деле не 1 градус ошибки при таких расчетах а 0,1. А минус ноль конечно будет появляться, ведь температура не меняется скачкообразно от 0 до -1. Есть ведь и -0,1C и все в том же духе. Это мы не выводим в данном случае десятые, но они ведь существуют.
А чтобы этого нелепого минуса небыло, как раз и достаточно прибавить 1 к отрицательным значениям. Правда в этом случае мы немножко наврем (потому как при реальной температуре -0,1C мы сразу же будем показывать -1С), но я думаю что ничего страшного. 
Последний раз редактировалось edm2007 Вс янв 29, 2012 22:56:55, всего редактировалось 1 раз.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Реклама
Фактически, для кода где нет десятых градуса оно актуально. А почему бы и не отображать для 0,1 градуса - минус?...
Но для погрешности в 0,1 градус я считаю ничего предпринимать не надо, ибо ds18b20 не обладает столь высокой точностью.
Мой пульт меня достал сцуко! Уже стырил код для обработки НЕК протокола, итак ничего не работает!
Но импульсы к МК идут 100500%, проверил. Настроил прерывания на подъем уровня и заработало, но мне не надо реагировать на все что в пределах 36 КГц.... Я в ужасе от этих пультов.
Но для погрешности в 0,1 градус я считаю ничего предпринимать не надо, ибо ds18b20 не обладает столь высокой точностью.
Мой пульт меня достал сцуко! Уже стырил код для обработки НЕК протокола, итак ничего не работает!
Но импульсы к МК идут 100500%, проверил. Настроил прерывания на подъем уровня и заработало, но мне не надо реагировать на все что в пределах 36 КГц.... Я в ужасе от этих пультов.
Ну разумеется когда десятые выводятся то минус нужен. И действительно погрешность 0,1C в минусах это ерунда. Но у автора-то лишь целые. И тут минус ноль смотрится как-то нелепо. Впрочем, в этом случае можно не заморачиваться совсем, а просто написать: если температура равна 0, то на месте знака - пусто. А +0,3C там на самом деле, или -0,7С нам уже не важно. Все равно десятых нет. Так даже лучше и точнее будет, и ничего прибавлять не надо.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
вообщем то я только сегодня переписал программу под десятые градуса
и случайно наткнулся на то что при отрицательной температуре прибавляют 1, меня это с смутило и решил спросить, выходит с вышесказанными разъяснениями, придется убрать это действие, спасибо за разъяснение 
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
Собрал все таки передатчик rc-5 на тини 2313 (теперь он точно rc-5, и не надо подбирать пульты).
Код устроен так: при подаче питания команда и адрес равно - 0, и при каждой последующей передачи команда инкрементируется.
Но приемник все равно не работает как надо, иногда принимает каждую 10-ю команду. Ито после танцов с бубном, убрал задержку после опроса rc-5 и добавил условие - если команда и адрес не равно 255 то записать в другие переменные, которые потом выводятся на ЖКИ.
Грещу еще на кварц, но с внутренним генератором те же пироги.
Код устроен так: при подаче питания команда и адрес равно - 0, и при каждой последующей передачи команда инкрементируется.
Но приемник все равно не работает как надо, иногда принимает каждую 10-ю команду. Ито после танцов с бубном, убрал задержку после опроса rc-5 и добавил условие - если команда и адрес не равно 255 то записать в другие переменные, которые потом выводятся на ЖКИ.
Грещу еще на кварц, но с внутренним генератором те же пироги.
- Реклама
Я как-то спрашивал, а приемник какой? Точно 36 kHz?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
и tsop4836 тоже. Черт его знает что там еще. Придется собрать тоже приемник еще один на тиньке2313.
Здравия желаю всем Котам.
Нужна помощь сведущих. Конструируируя собственную цму, встала проблема в анализе звукового потока, не могу добиться четкого разделения частотных каналов, в основном светодиоды мигают хаотически. Анализ взят из "Виктория" и добавлен шим на 4 канала от "Светодиодный диммер". При отсутствии звука светики не горят, как и должно быть, а при подаче звука хаос.
Пробовал даже варианты анализа отсюда http://bascomavr.3bb.ru/viewtopic.php?id=28&p=2
Стало хуже, мигает только второй канал, остальные в полную мощность.
Тактирование пробовал и внешнее на 16 и внутреннее.
Может несогласованность с шим, не знаю что думать?
Нужна помощь сведущих. Конструируируя собственную цму, встала проблема в анализе звукового потока, не могу добиться четкого разделения частотных каналов, в основном светодиоды мигают хаотически. Анализ взят из "Виктория" и добавлен шим на 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[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Как стабилизировать данные АЦП меги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
Loophttp://www.lcdinfo.ru/html.cgi/txt/doc/ ... 3_58_8.htm
Прыгает не опорное, а входное напряжение.
Прыгает не опорное, а входное напряжение.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Мне кажется что это не есть хорошо для блока питания, если надо измерять и контролировать напряжение одновременно.
ШИМ может дать большие помехи для АЦП.
Думал сгладить шим и дать опорное напряжение с него на ИБП. Может и RC цепочку на вход АЦП подключить...?
ШИМ может дать большие помехи для АЦП.
Думал сгладить шим и дать опорное напряжение с него на ИБП. Может и RC цепочку на вход АЦП подключить...?
RC хорошо бы, можно еще входное сопротивление уменьшить подтяжкой на массу штоб не болтался на ветру.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Magicanin писал(а):Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!
Только этим чудом и пользуюсь, уже второй год.vanyap1 писал(а):Magicanin писал(а):Извращение это: программатор - AVR910 by Prottoss, прошивка - Doper, драйвер - Osamu Tamura, называется - STK500!
Достаточно неплохо работает сие чудо техники...
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Я тоже пользуюсь, но все время после прошивки ошибка вылетает, компенсирует скорость прошивки.
Еще иногда становится недоступным программатор, надо передернуть с ЮСБ.
Еще иногда становится недоступным программатор, надо передернуть с ЮСБ.
Я пользуюсь им только в Bascom-AVR 1.11.9.8 По-моему самая удачная сборка из всех версий.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Согласен на все 100%, а касаемо программатора наверное дело привычки, как говорится, что русскому хорошо то немцу смерть.Magicanin писал(а):Я пользуюсь им только в Bascom-AVR 1.11.9.8 По-моему самая удачная сборка из всех версий.
Да простят мне флуд, не удержался.
Как оставить после комы только один знак, а все остальное убрать? Это надо сделать до вывода на экран.
Команду "Fusing" вроде понял, но никак она не хочет работать
Или ввести еще одну переменную и сделать так -
?
Код: Выделить всё
Lcd "Voltage= " ; Fusing(u , "#.#") ; " " Код: Выделить всё
U = Fusing(U , "#.#")Код: Выделить всё
U2 = Fusing(U , "#.#")
U = U2Попробуй это из хелпа:
Но она раотает только со стрингами, иначе добавь Str(S)
Код: Выделить всё
S = "12345"
S = Format(s , "000.0")
Print S
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Пример тоже из хелпа
'присвоить значение переменной 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 согласно формату строки, при необходимости выполняет округление.
Спойлер
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
Последний раз редактировалось amv2000 Вт янв 31, 2012 18:00:24, всего редактировалось 3 раза.


