Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс ноя 02, 2025 10:09:02

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7702 ]     ... , , , 6, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 14, 2010 22:46:53 
Вымогатель припоя
Аватар пользователя

Карма: 3
Рейтинг сообщений: 4
Зарегистрирован: Сб сен 20, 2008 12:12:30
Сообщений: 525
Откуда: Minsk
Рейтинг сообщения: 0
O-LED: у Вас на аватаре сегменты для цифры "0" - ровненькие, а для остальных цифр какие-то кривые. С чем это связано?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 14, 2010 22:57:02 
Мудрый кот
Аватар пользователя

Карма: 25
Рейтинг сообщений: 79
Зарегистрирован: Вт окт 05, 2010 01:08:57
Сообщений: 1800
Рейтинг сообщения: 0
korr_den см личку

_________________
KIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 14, 2010 23:41:37 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
O-LED писал(а):
ага. переменные int прекрасно работали беззнаковыми переменными без всяких signed
Вероятно, всё-таки знаковыми, а не беззнаковыми.

"просто" int — это предусмотренная стандартом сокращённая запись для signed int
short — штатное сокращение для signed short int
long — для signed long int

Всё честно.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 10:59:41 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
int x = 0;
char s[17];

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
lcd_gotoxy(0,0);
lcd_puts(s);
x=0;
TCNT1H = 0xE1;
TCNT1L = 0x7A;
}

void main(void)

{

lcd_init(16);
lcd_clear();
DDRB=0b10000000;
TCCR1B=0x05;
TIMSK=0x04;
ACSR=0x80;
TCNT1H = 0xE1;
TCNT1L = 0x7A;
#asm ("sei");

while(1) { if (PINB.0) { sprintf(s, "%d ", x); x=x+1; } }

}

расчет:
1/8Мгц = 125нс на такт
125*1024=128мс на таймере /1024
1c/125мс=7812 тактов на 1с
65535-7812=57722=E17A

на PINB.0 генератор 1000Гц, программа выдает 2020..2022 на дисплее.. почему? :)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 11:14:13 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1065
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19898
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
V2oD2o писал(а):
почему?

Потому что вы не пробовали писать программу с комментариями???

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 11:54:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2128
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18420
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
V2oD2o писал(а):
Код:
while(1) { if (PINB.0) { sprintf(s, "%d ", x); x=x+1; } }

на PINB.0 генератор 1000Гц, программа выдает 2020..2022 на дисплее.. почему? :)

то есть вы считаете, что за 0,5 миллисекунды, пока у вас 1 на пине, x увеличится только на 1? у вас же все это дело в цикле, т.е. получается, пока 1 на пине, у вас может бог знает сколько раз цикл провернуться!

кстати, в прерываниях не рекомендуется заниматься выводом на дисплей. вообще не рекомендуется использовать функции, особенно когда неизвестно, сколько времени они занимают.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 12:58:50 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
Спасибо за ответ!
пытаюсь разобраться далее:

Код:
int x, y = 0;
char s[17];

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
    x=0; //обнуляем отсчет за 1с
    y=1; //обновить дисплей?
    TCNT1H = 0xE1; //ставим таймер на точку 57722
    TCNT1L = 0x7A;
}
 
void  main(void)

{
   
    lcd_init(16); //LCD ini
    lcd_clear();
    DDRB=0b10000000; // первый бит PORTB - вход
    TCCR1B=0x05; // делим таймер на 1024
    TIMSK=0x04;
    ACSR=0x80;
    TCNT1H = 0xE1; // ставим стартовую точку 57722
    TCNT1L = 0x7A;
    #asm ("sei");
   
while(1) {
    if (y==1) { lcd_gotoxy(0,0); lcd_puts(s); y=0; } // 1 - обновляем, 0 - пропускаем
    if (PINB.0) { sprintf(s, "%d ", x); x++; while(PINB.0) {} }  // PINC.0=1 - прибавляем 1 к частоте, циклим такт
    }

}



все четко считает.. но только до 2800 Гц.. далее занижает - чем дальше тем больше, видимо где то у меня слишком много времени занимает просчет :?

есть идеи ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 13:11:30 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1065
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19898
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
V2oD2o писал(а):
видимо где то у меня слишком много времени занимает просчет :? есть идеи ?

Сколько времени, по-вашему, занимает функция sprintf?

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср дек 15, 2010 14:04:02 
Опытный кот

Карма: 5
Рейтинг сообщений: 0
Зарегистрирован: Вс янв 17, 2010 15:32:19
Сообщений: 703
Откуда: Курган
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
вот примерный вариант без комментов :(


Вложения:
Комментарий к файлу: частотомер на avr. нету комментов в коде.
avrfreq.c [1.44 KiB]
Скачиваний: 428
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 18:08:19 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 23
Зарегистрирован: Чт апр 08, 2010 18:50:01
Сообщений: 2095
Откуда: Краснодар
Рейтинг сообщения: 0
всем привет. как в си коде для авр напрямую обратиться к ячейке памяти озу ?
на ассемблере пример видел. а на си - нет.

_________________
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 18:19:18 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2128
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18420
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Кислый писал(а):
всем привет. как в си коде для авр напрямую обратиться к ячейке памяти озу ?
на ассемблере пример видел. а на си - нет.

Код:
unsigned char *ptr;
ptr = (void*)123; // будем обращаться к ячейке с адресом 123
*ptr = 0; // обнулили эту ячейку
*ptr = 20; // записали туда 20
ptr++; // теперь будем работать со 124-й ячейкой
*ptr *= 2; // удвоим содержимое ячейки с адресом 124

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 18:21:18 
Опытный кот

Карма: 5
Рейтинг сообщений: 0
Зарегистрирован: Вс янв 17, 2010 15:32:19
Сообщений: 703
Откуда: Курган
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Кислый писал(а):
всем привет. как в си коде для авр напрямую обратиться к ячейке памяти озу ?
на ассемблере пример видел. а на си - нет.


в си это не надо. тебе зачем?

Код:
// тут был код, но ARV опередил...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 19:41:49 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 23
Зарегистрирован: Чт апр 08, 2010 18:50:01
Сообщений: 2095
Откуда: Краснодар
Рейтинг сообщения: 0
ARV,
т.е. мы в любом случае должны выделить место для указателя ? но при этом не контролируем куда он запишется.. замечательно ))

Lix,
Цитата:
тебе зачем?

бесит меня неконтроллируемое распределение памяти при написании кода на си. была мысль обращаться так ( по адресам ) к РОН, РВВ и ОЗУ.
время требует си, а душа ассемблера ))

_________________
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 19:47:17 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 23
Зарегистрирован: Чт апр 08, 2010 18:50:01
Сообщений: 2095
Откуда: Краснодар
Рейтинг сообщения: 0
или ну его нафиг и да здраствует Алгоритм Билдер ?

_________________
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 19:50:24 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2128
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18420
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Кислый писал(а):
ARV,
т.е. мы в любом случае должны выделить место для указателя ? но при этом не контролируем куда он запишется.. замечательно ))
вы, когда по телефону звоните, тоже не контролируете по каким парам в кабеле сигнал идет, какими релюхами коммутируется... но это ведь не мешает вам говорить?
распределение памяти четко регламентировано типом переменной. а много ли вам будет счастья от того, что вы будете знать адрес переменной?! он вам нужен? если да - вот вам указатель, а если нет - ну и нафига?!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 19:58:19 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 23
Зарегистрирован: Чт апр 08, 2010 18:50:01
Сообщений: 2095
Откуда: Краснодар
Рейтинг сообщения: 0
аналогия интересная. но! в ассемблере мы заранее знаем куда и что записываем. В си мы сначала записывам, потом только узнаем куда.. соответственно по аналогии с телефонным разговором : на телефонном аппарате кнопка "позвонить КОТУ". нажимаем, звоним, разговариваем (разговариваем с котом о_0) . он при этом только у самого кота узнаем что он в африке.. и мы попали на денюшку (( нафиг

_________________
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 20:11:50 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 2
Рейтинг сообщений: 23
Зарегистрирован: Чт апр 08, 2010 18:50:01
Сообщений: 2095
Откуда: Краснодар
Рейтинг сообщения: 0
Цитата:
распределение памяти четко регламентировано типом переменной

кстати не уверен. читал, просто порядком обьявления переменных разных типов можно выиграть некоторое количество памяти.. ибо стандарт с не требует от компилятора беспросветного размещения переменных в памяти. если сохранил - напишу.

_________________
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 20:26:16 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2128
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18420
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Кислый писал(а):
Цитата:
распределение памяти четко регламентировано типом переменной

кстати не уверен. читал, просто порядком обьявления переменных разных типов можно выиграть некоторое количество памяти.. ибо стандарт с не требует от компилятора беспросветного размещения переменных в памяти. если сохранил - напишу.
не читайте перед ужином большевистских газет :)

во-первых, ваша аналогия со звонком - не верна. правильная аналогия, не знать не КОМУ звоним, а КАК звоним. Си гарантирует, что в переменной будет сохранено то, что вы туда положили до тех пор, пока эта переменная существует. назначение переменной - ХРАНИТЬ данные. ГДЕ и КАК - это уже второстепенно и не сильно вас должно заботить. если генерал будет думать о действиях каждого рядового - он битвы не выиграет. поэтому, когда ассемблер давет вам возможность контролировать каждый бат памяти, надо подумать - а помогает ли это победе в битве или только отнимает мозговые силы?

во-вторых, если стандарт чего-то не требует, это не означает, что компилятор должен поступать по-идиотски. особенно компилятор для малоресурсных моделей МК.

наконец, в-третьих (уже повторяюсь), оставит в памяти компилятор дыры или нет - вам оно надо? главное, что все будет работать :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 21:46:35 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Кислый писал(а):
Цитата:
распределение памяти четко регламентировано типом переменной
кстати не уверен. читал, просто порядком обьявления переменных разных типов можно выиграть некоторое количество памяти..
Это называется «выравнивание» и оно «четко регламентировано типом переменной». Но 8-битников это не касается вообще. У них единица выравнивания — байт и дыр быть не может.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб дек 18, 2010 21:51:11 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Кислый писал(а):
бесит меня неконтроллируемое распределение памяти при написании кода на си. была мысль обращаться так ( по адресам ) к РОН, РВВ и ОЗУ.
время требует си, а душа ассемблера ))
Не советую. Получите объединение недостатков.

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


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

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


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

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


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

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


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