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»