Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CodeVision ругается на масив бит
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Vny4ek
Подскажите плиз инициализирую переменные
Код
int temp;
unsigned int i;
unsigned int f;
bit s[64]; // масив из 64 бит
при компиляции пишет
missing ';'

подскажите плиз почему, хотя если напишу
int s[64]; все работает, но мне не нужно столько места в памяти если оперирую только 0 и 1
Andron_
тип данных bit - занятное ноу-хау...
Serj78
Из-за особенностей адресации массивов в CV битовый массив нельзя сделать "в лоб". или используйте большое количество битовых переменных, или накладывайте маски smile.gif
Vny4ek
ткните плиз в пример где можно посмотреть как это сделано, и второй важный вопрос, внутренний RC-генератор, обязательно калибровать, мне точно не особо нужна +- 10% вполне устроит например.
mempfis_
Цитата(Vny4ek @ Dec 8 2009, 19:17) *
но мне не нужно столько места в памяти если оперирую только 0 и 1


Попробуйте перейти к битовым полям в структуре (правда не знаю поддерживает их cvavr)

Код
struct stMyBits{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
.............................
unsigned char bitN:1;
} MyBits;


Ну и доступ

Код
MyBits.bit0=1;
MyBits.bit3=0;


RC-цепочку калибровать надо. Я в меге8 наблюдал почти 50процентное отклонение от 1МГц в сторону уменьшения.
Да и сложностей там никаких
Код
OSCALL = калибровочная константа для выбранной частоты
Vny4ek
А подскажите плиз, калбировка это для каждого камня отдельная или один раз откалибровал в прошивке на заданной температуре и напряжении питания и ок? И способ калибровки без частотомера не подскажите?
Serj78
Цитата(Vny4ek @ Dec 9 2009, 09:46) *
А подскажите плиз, калбировка это для каждого камня отдельная или один раз откалибровал в прошивке на заданной температуре и напряжении питания и ок? И способ калибровки без частотомера не подскажите?


калибровка с точностью до 10% только внутри одной партии. от температуры уплывает в одну сторону, но все равно не одинаково.

берете наручные часы - выводите мигалку на светодиод, считайте вспышки и меряйте секундомером..
Vny4ek
Угу спасибо! еще такой вопрос, а фунции delay.h тоже завязаны на этом генераторе, тоесть он опирается на RCвнутренний когда их использует?
mrKirill
Цитата(Vny4ek @ Dec 9 2009, 13:24) *
Угу спасибо! еще такой вопрос, а фунции delay.h тоже завязаны на этом генераторе, тоесть он опирается на RCвнутренний когда их использует?

При компиляции проекта в свойствах (Project - Configure) указываете тактовую частоту контроллера. Эта частота вашего тактующего источника, будет это RC, кварц или внешний источник - не играет роли. Библиотека delay.h основывается на той частоте, что указана в свойствах.
demiurg_spb
Цитата(Vny4ek @ Dec 8 2009, 19:17) *
Код
bit s[64]; // масив из 64 бит
...
int s[64]; все работает, но мне не нужно столько места в памяти если оперирую только 0 и 1
А зачем int? Используйте unsigned char (uint8_t).
Вы собираетесь использовать в прерываниях эти ваши флаги?
Если да. То битовые переменные, как и всё что больше или меньше байта - не лучший вариант.
Придётся всё это хозяйство оборачивать в critical sections для обеспечения атомарности.
Хорошее правило: для 8-ми битного MCU используй 8-ми битные переменные, конечно, если это возможно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.