Например TDA7294

Форум РадиоКот • Просмотр темы - GGC числа с запятой.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс апр 28, 2024 19:39:46

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 10:50:28 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Всем доброго времени суток)

Хочу сделать генератор прямоугольников, возникли затыки при написании программы( atmel_studio_6.1)
Думал на дисплей выводить задаваемую частоту, количество тиков которое надо записать в OCR1A .

сначала считаю длительность 1 тика:
f_cpu = 4 000 000
делитель 8
8 / f_cpu = 2*10^-6 cек

затем считаю число которое надо записать в OCR1A, с учетом требуемой частоты(допустим 300).

(1/300)/2*10^-6 = 1667 тиков / 2 = 833 записываю в OCR1A

Вообщем ничего не выходит

пробавал разные способы, даже объявлял вещественные переменные для подсчета
, а потом уже записывал результат в INT. Не работает(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 11:26:10 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
А что у вас конкретно то не работает? Код фстудию.

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 12:11:50 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Не хочет нормально выводить цифры:
Спойлер
Код:
#define F_CPU 4000000L
#define baudrate 9600L
#define bauddivider (F_CPU/(16*baudrate)-1)
#define HI(x) ((x)>>8)
#define LO(x) ((x)& 0xFF)
#define time_f (((1./F_CPU)*8)*)
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>
#include <avr/eeprom.h>
#include <avr/interrupt.h>
volatile uint16_t frec=300, OCR_lh=833, frec_r=0;
float math=0;
volatile int i=0, ft=0;
void send (uint16_t A);
void clear (void);
void init (void)
{
   UBRRL = LO(bauddivider);
   UBRRH = HI(bauddivider);
   UCSRA = 0x00;
   UCSRB = 1<<RXEN|1<<TXEN|0<<RXCIE|0<<TXCIE;
   UCSRC = 1<<URSEL|1<<UCSZ0|1<<UCSZ1;
   //////////////////////////////////////////////
   TCCR1B |= 1<<CS11;
   OCR1AH = (OCR_lh>>8);
   OCR1AL = (OCR_lh&0x00ff);
   TIMSK |= 1<<OCIE1A;
   sei();
   ///////////////////////////////////////////////
   DDRC=1<<0;
}
void main (void)
{
   init();
   while(1)
   {
   _delay_ms(300);   
   clear();
   send(frec);
   send(OCR1A);
   frec_r=(1./(OCR_lh*2.*(8/4000000)));
   send(frec_r);
   if(PINC&(1<<4))
      frec++;
   if(PINC&1<<5)
      frec--;
   }
}
void send (uint16_t A)
{
   char buff[250]={0};
   itoa(A,buff,10);
   i=0;
   while(buff[i])
   {
      
      while(UCSRA & (1<<UDRE))
      {
         UDR=buff[i];
         i++;
      }
   }
   while(!(UCSRA & (1<<UDRE)));
   UDR=0x0d;

   
}
void clear (void)
{
   for(int k=0;k<16;)
   {
      while(UCSRA & (1<<UDRE))
      {
         UDR=0x08;
         k++;
      }
   }
}
ISR(TIMER1_COMPA_vect)
{
PORTC^=1;
TCNT1H=0x00;
TCNT1L=0x00;
}

frec_r=(1./(OCR_lh*2.*(8/4000000))); результат этого подсчета выводит как 0. хотя должно быть 298,686 после записи в INT это 298.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 12:16:00 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5599
Откуда: Minsk
Рейтинг сообщения: 0
Я не большой знаток в Си для МК, но на первый взгляд 8/4000000 делится целочисленно, и ноль обязан быть. А если 8./4000000. ?


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 13:55:29 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Jack_A писал(а):
А если 8./4000000. ?

появление хотя бы 1 точки в выражении достаточно.(вроде бы)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 15:52:54 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 143
Зарегистрирован: Пт дек 28, 2012 21:56:46
Сообщений: 1518
Откуда: St. Petersburg
Рейтинг сообщения: 0
Если совсем точно, то для бинарных операторов (+, -, *, /, % итд) осуществляется автоматическое приведение обоих операндов к double перед вычислением, если хотя бы один из них имеет вещественный тип (double или float). То есть, это не распространяется на все выражение целиком: 4.0 * (1/100500) не будет вычислено правильно, так как сначала производится вычисление над целочисленными операндами.

Ну так как, помогло добавление точек то?

_________________
Изображение only pure true norwegian blackx Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 19:33:40 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Вс сен 16, 2012 22:00:40
Сообщений: 140
Рейтинг сообщения: 0
Везде где мог натыкал точек ^^ робит) спасибо за помощь)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: GGC числа с запятой.
СообщениеДобавлено: Вс сен 15, 2013 20:28:30 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 840
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 5599
Откуда: Minsk
Рейтинг сообщения: 0
То то же! :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y