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

Обсуждаем контроллеры компании Atmel.
NucLeaR
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср дек 22, 2010 14:59:37

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

Сообщение NucLeaR »

Нашел я все таки пример кода, того что мне надо было, только без синусов и косинусов. Теперь все нормально считает. Всем спасибо за ответы. Это нужно было для расчетов разных данных по GPS координатам. И в одном действии получалось число типа 0,000000002314 например, поэтому и нужно было 12 заков после запятой. При использовании переменной типа single от этого числа 0 оставался.
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

NucLeaR писал(а):число 0,000000002314 .... При использовании переменной типа single от этого числа 0 оставался.
С Баскомом не работал, потому насчет single не в курсе ; но при использовании плавающей арифметики точность представления числа во всем диапазоне практически одинаковая, потому как мантисса представляется нормализованной 0,5 <= M < 1,0. Поэтому 0,000000002314 отобразится практически с той же точностью, как и 0,2314 и никто нигде не теряется. Другое дело если приходится суммировать числа, далекие друг от друга по порядку величины. Ну тут уж надо грамотно продумывать используемые численные методы.
Реклама
NucLeaR
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср дек 22, 2010 14:59:37

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

Сообщение NucLeaR »

нет, пробовал с single она хранит максимум 9 цыфр вместе с точкой остальное все теряется. Хотя single можно еще как то настроить
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Single - диапазон +/- 10^38, длина 32 бита, точность 7-8 значащих цифр.
Double - диапазон +/- 10^308, длина 64 бита, точность до 16 значащих цифр.
Если реально число будет содержать больше цифр, то точность ограничена указанная ранее. И никакая настройка не поможет. Физически негде хранить. Но, например, в виндузном калькуляторе, похоже используется "длинная" арифметика. Это типа представление числа в виде массива. То же путь увеличения реальной значности числа. Или вовсе символьная арифметика, как например в забытом коболе, где разрядность не ограничивалась вовсе.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

vem566 писал(а):Single - диапазон +/- 10^38, длина 32 бита, точность 7-8 значащих цифр.
Double - диапазон +/- 10^308, длина 64 бита, точность до 16 значащих цифр.
Single , я думаю, достаточно для большинства реальных приложений, Double - не могу представить себе извращений, для которых и этой точности будет недостаточно. Разве что для погони за рекордом в вычислении числа Пи, но сейчас этот рекорд уже так немыслимо далек, что ну его...
Реклама
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Однажды при мне программисты, занимающиеся расчетом траектории марсианской станции, обсуждали потребность в 24-х значащих цифр. Писали программу на фортране, а там только double. Услышал просто фрагмент беседы. Как решили, и зачем такое количество цифр, не в курсе.
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

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

Сообщение Jack_A »

Значит, мне повезло, что не занимался марсианскими делами. :) Для моей энергетической аппаратуры хватало 3-байтовой float : знак-порядок и 2 байта мантисса без скрытого разряда. Точность на порядок превышала требуемую железом.
Аватара пользователя
Bear2011
Друг Кота
Сообщения: 13253
Зарегистрирован: Ср апр 06, 2011 09:58:13
Откуда: Кузбасс

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

Сообщение Bear2011 »

Однажды при мне программисты, занимающиеся расчетом траектории марсианской станции, обсуждали потребность в 24-х значащих цифр. Писали программу на фортране, а там только double. Услышал просто фрагмент беседы.
Так вроде бы куча станций и промахнулась мимо Марса. Что у нас что у американцев. Вот оказывается почему :))
toxai007
Родился
Сообщения: 1
Зарегистрирован: Пн июн 30, 2014 10:10:57

Как сделать 3 кнопки на часах и будильник

Сообщение toxai007 »

Помогите пожалуйста!!!надо сделать 3 кнопки на часах вот программа,часы уже готовые,нужны кнопки чтобы настроить время и будильник!прошу помогите срочно надо!!!
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 64 ' default use 32 for the hardware stack
$swstack = 32 ' default use 10 for the SW stack
$framesize = 24 ' default use 40 for the frame space


'*** Config the timer ***

Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1

' Load the TimerLimit value into the Compare1A (OCR1A) register
Compare1a = 31250

' Set interrupt pointers

On Timer1 Int_1
' When Timer1 moves from 65535 to 0 - not just when it becomes 0
' as Timer1 moves between 0 and 10000, the Timer1 interrupt flag is never set.

On Compare1a Compare_1a_int
' Wwhen Timer1 = Compare1A register

' Enable the use of Timer1
Enable Compare1a
Enable Interrupts
'**************END config Timer**************

Config Lcd = 16 * 2

Cursor Off . Noblink

Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5



Dim H1 As Integer
Dim H2 As Integer
Dim M1 As Integer
Dim M2 As Integer
Dim S1 As Integer
Dim S2 As Integer

Gosub Clockzero

Do
Locate 1 , 5
Lcd S1
Locate 1 , 6
Lcd S2
Locate 1 , 3
Lcd M1
Locate 1 , 4
Lcd M2
Locate 1 , 1
Lcd H1
Locate 1 , 2
Lcd H2
Loop

Int_1:
'empty
Return

Compare_1a_int:
' Reset the Compare1A interrupt flag,
' as this flag is not reset automatically
Reset Tifr.5
S2 = S2 + 1
If S2 = 10 Then S1 = S1 + 1
If S2 = 10 Then S2 = 0
If S1 = 6 Then M2 = M2 + 1
If S1 = 6 Then S1 = 0
If M2 = 10 Then M1 = M1 + 1
If M2 = 10 Then M2 = 0
If M1 = 6 Then H2 = H2 + 1
If M1 = 6 Then M1 = 0
If H2 = 10 Then H1 = H1 + 1
If H2 = 10 Then H2 = 0
If H1 = 2 And H2 = 4 Then Gosub Clockzero
Return


Clockzero:


Let S1 = 0
Let S2 = 0
Let H1 = 0
Let H2 = 0
Let M1 = 0
Let M2 = 0
Let M1 = 0
Let M2 = 0
Return
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

toxai007, что то не понятна проблема. Ну взять готовый будильник на меге8 и прошить. Делов то. Все равно схему доделывать - кнопки прикручивать. Если идея нужна, проще простого. Если дописывать программу - на хрена(см. выше)? Навалом готовых.
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

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

Приветствую!

приобрёл два дисплея с T6963c, модель apex HG241281 и Bolynim BG240128A1fpcb$
не могу запустить, самое лучшее - при нажатии Сброс на экране горизонтальная полоска, которая потом гаснет (мгновенно)

поделитесь hex для проверки!

мега8/16/328 128 - что есть в наличии

пробовал примеры из КодеВижен и Баском - фиг вам...
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

Приветствую котов :)
Пришел к Вам за помощью.

Сделал себе ДХО на тиньке, установил в авто и все тип-топ работает. На бортовую эл. никаких наводок и помех. Частота ШИМ 136Гц.
Появилась у меня мысль прикошачить к схеме контрольный светодиод.
Своими вспышками он будет показывать выбранный уровень ШИМ. Ну, так сказать, красивости ради и мозг потренировать.
Кажись, код прост до ужаса, а вот мигает ни так и с задержкой.

Алгоритм такой
Если ШИМ = 30, то мигаем 3-мя короткими вспышками каждый 2сек. (т.е. помигали 3 раза, пауза 2сек. помигали 3 раза и т.д.)
Если ШИМ = 40, то 4 короткие вспышки -- пауза 2сек. -- опять 4 короткие вспышки - и т.д.
...
А вот если ШИМ = 0 (т.е. ДХО выключены) - одна короткая вспышка -- пауза 2сек. -- одна короткая вспышка - и т.д.
Пробовал так (код немного урезанный)

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

...
Config Portb.0 = Output                           'PWM OUT
Config Portb.2 = Output                           'STATUS LED
Status Alias Pinb.2                               'светодиод для STATUS

Do
...
Gosub Pwm30

Loop


Pwm30:
Do
Status = 1 : Waitms 300
Status = 0 : Wait 2
Loop Until Pwm0a <> 76
и так:

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

Do
For N_blink = 0 To 3
   Toggle Status : Waitms 500                      ' в таком случае мигание каждые 0,5сек., а куда добавить паузу в 2сек. ?
 Next
Временные задержки между включенным и выключенным получился одинаковый, а отработка кнопки настройки ШИМ работает через раз в обоих случаях.
Буду признателен, если направите на путь праведный. Помогите разобраться :)
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Do
For N_blink = 0 To 3 <- вместо цифры 3 поставить переменную, в зависимости от требуемого количества миганий
   Toggle Status : Waitms 500
Next
Wait 2 <- пауза 2 секунды
...
Как то так, исходя из приведенного фрагмента кода.
Serjio
Родился
Сообщения: 14
Зарегистрирован: Вс ноя 15, 2009 19:51:37
Откуда: Москва

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

Сообщение Serjio »

Доброго времени суток всем.
Не подскажут ли благородные доны алгоритм управления нагрузкой по времени, если время работы нагрузки переходит через 0 часов 0 минут.
Хотя бы на пальцах.
Время читаю с ds1307.
пока только есть мысль проверять условие для такого случая (Твыкл < Твкл) и моргать портом от Твкл до 00.00 и от 00.00 до Твыкл

C уважением....
aleksandr-zh
Сверлит текстолит когтями
Сообщения: 1278
Зарегистрирован: Пн июн 18, 2007 21:51:20

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

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

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

или при получении задания вычислять время срабатывания
например, задание: 25 часов и 10 минут
сейчас 11:30, прибавить и получить время
Аватара пользователя
pavel123
Грызет канифоль
Сообщения: 268
Зарегистрирован: Чт май 17, 2007 09:44:13
Откуда: Украина, г. Кривой Рог

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

Сообщение pavel123 »

в библиотеке для ds1307 есть системные переменные - _часы, _минуты, _секунды... Или как то так...
Я проверяю на совпадение значений часов, минут, секунд заданного "будильника" с этими системными перемененными, часы и минуты по строгому равно, а секунды больше или равно...
ЗЫ Там же есть и системные переменные для дат. :)

ЗЫЗЫ Я пользуюсь библиотекой из примеров пакета установки Баском.
Последний раз редактировалось pavel123 Пн июл 14, 2014 14:26:12, всего редактировалось 1 раз.
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

vem566 писал(а):Do
For N_blink = 0 To 3 <- вместо цифры 3 поставить переменную, в зависимости от требуемого количества миганий
   Toggle Status : Waitms 500
Next
Wait 2 <- пауза 2 секунды
...
Как то так, исходя из приведенного фрагмента кода.
Не пашет :kill: Мигает не по времени и тормозит отработку кнопки.
Какие еще есть варианты?
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

KOTик писал(а):Какие еще есть варианты?
Весь код предоставить. Чем заняты прерывания?
Аватара пользователя
KOTик
Встал на лапы
Сообщения: 148
Зарегистрирован: Пн июн 07, 2010 16:16:57
Контактная информация:

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

Сообщение KOTик »

vem566 писал(а):Весь код предоставить. Чем заняты прерывания?
Вот весь проект.
myDRL.rar
ДХО проект от KOTик'a
(41.17 КБ) 248 скачиваний
Помогите, пожалуйста. Уже который день бьюсь над индикацией. :kill:
Схема исправно работает в авто, а индикацию потом надумал замутить.
"мигание" тормозит весь проект, отработку нажатия на кнопку настройки и мигает неправильно.
Аватара пользователя
vem566
Друг Кота
Сообщения: 4732
Зарегистрирован: Вс янв 24, 2010 13:14:02
Откуда: Омск

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

Сообщение vem566 »

Ну было бы странно, если бы такая конструкция работала.
Можно попробовать проще. Мелкие косяки программы выясняются сравнением текстов myDRL и myDRL1.
В протеусе все нормально.
Вложения
myDRL.rar
(51.32 КБ) 241 скачивание
Ответить

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