Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Мне просто для индикации надо
Re: Мелкие вопросы по МК и ПЛИС.
Подскажете плиз !
над мегой 8 колдую.
в общем примерно так:
int main(void){
unsigned char SCR[3] = {1, 2, 3}; // Ýêðàííàÿ îáëàñòü
.......
}
ISR(TIMER0_OVF_vect){
PORTB = SCR[1];
......
}
Короче авр студио ругается что массив в прерывании недоступен, что делать ?
а массив надо обновлять в main, и в прерывании выводить на индикатор...
над мегой 8 колдую.
в общем примерно так:
int main(void){
unsigned char SCR[3] = {1, 2, 3}; // Ýêðàííàÿ îáëàñòü
.......
}
ISR(TIMER0_OVF_vect){
PORTB = SCR[1];
......
}
Короче авр студио ругается что массив в прерывании недоступен, что делать ?
а массив надо обновлять в main, и в прерывании выводить на индикатор...
Re: Мелкие вопросы по МК и ПЛИС.
Вынесите объявление массива за пределы main. Он у вас локальный в main, сделайте его глобальным.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Мелкие вопросы по МК и ПЛИС.
Оставьте Мегу в покое, она не виновата. Начинайте колдовать над Си.Furcat писал(а):Подскажете плиз !
над мегой 8 колдую.
Помогут:
Гугл: "Видимость переменных"
Гугл: "Области видимости переменных"
Но это называется "Изучать по кусочкам". Учебник по Си читать не пробовали?
С уважением,
Виктор.
Виктор.
Re: Мелкие вопросы по МК и ПЛИС.
Встречайте , новый MK от ATMEL - ATtiny828
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
У этого камня пока нет главного качества - доступность. Нигде в магазинах не найти, а заказывать 10000 с завода как то дороговасто. Даже давно выпускаемые AtMega88 у нас в магазине еще не продаются.
И на E-Bay еще тоже не продают вашу тину.
И на E-Bay еще тоже не продают вашу тину.
В поисках истины человек развивается.
Re: Мелкие вопросы по МК и ПЛИС.
Здраствуйте, уважаемые Коты!
Подскажите, пожалуйста, можно ли компилятору сишки в WinAvr запретить использовать определенный регистр общего назначения и, если можно, то как это сделать?
П.С. Упс, прошу прощения, промахнулся вкладкай браузера и написал не в подходящей теме
Но все равно буду рад услышать ответ
Подскажите, пожалуйста, можно ли компилятору сишки в WinAvr запретить использовать определенный регистр общего назначения и, если можно, то как это сделать?
П.С. Упс, прошу прощения, промахнулся вкладкай браузера и написал не в подходящей теме
Но все равно буду рад услышать ответ
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Нет, регистры общего назначения компилятор определяет сам, для этого при включении кусочков на ассемблере используется специальный синтаксис.
Вы можете использовать конкретный регистр только если подключаете целый модуль, написанный на чистом ассемблере.
PS А зачем запрещать компилятору использовать определенный регистр?
Вы можете использовать конкретный регистр только если подключаете целый модуль, написанный на чистом ассемблере.
PS А зачем запрещать компилятору использовать определенный регистр?
Последний раз редактировалось vitalik_1984 Ср авг 15, 2012 20:17:14, всего редактировалось 1 раз.
В поисках истины человек развивается.
Re: Мелкие вопросы по МК и ПЛИС.
А вот что говорит нам по этому поводу avr-lib-user-manual:
10.7 Locking Registers
The IAR compiler allows a user to lock general registers from r15 and down by using
compiler options and this keyword syntax:This line locks r14 for use only when explicitly referenced in your code thorugh the varКод: Выделить всё
__regvar __no_init volatile unsigned int filteredTimeSinceCommutation @14;
name "filteredTimeSinceCommutation". This means that the compiler cannot dispose
of it at its own will.
To do this in AVR GCC, do this:Typically, it should be possible to use r2 through r15 that way.Код: Выделить всё
register unsigned char counter asm("r3");
Note:
Do not reserve r0 or r1 as these are used internally by the compiler for a temporary
register and for a zero value.
Locking registers is not recommended in AVR GCC as it removes this register
from the control of the compiler, which may make code generation worse. Use at
your own risk.
Re: Мелкие вопросы по МК и ПЛИС.
Добрый день!!
Собрал тут на днях устройство. Одна из его функций - считывание количества оборотов двигателя с помощью датчика Холла (tle4905l). Так вот проблема в том, что он успевает считать только 1 об/сек, а нужно около 15. Не могу понять, почему так медленно считывает инфу с датчика, ведь прога написана на 30-ти строках примерно, а тактирование идёт от ВНУТРЕННЕГО резонатора на 8МГц. Подскажите пожалёста, в чём может быть дело...
Собрал тут на днях устройство. Одна из его функций - считывание количества оборотов двигателя с помощью датчика Холла (tle4905l). Так вот проблема в том, что он успевает считать только 1 об/сек, а нужно около 15. Не могу понять, почему так медленно считывает инфу с датчика, ведь прога написана на 30-ти строках примерно, а тактирование идёт от ВНУТРЕННЕГО резонатора на 8МГц. Подскажите пожалёста, в чём может быть дело...

- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Значит, в сторону схемы надо копать. Или алгоритма.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
vitalik_1984 писал(а):Нет, регистры нашего назначения компилятор определяет сам, для этого при включении кусочков на ассемблере используется специальный синтаксис.
Вы можете использовать конкретный регистр только если подключаете целый модуль, написанный на чистом ассемблере.
Спасибо за информативный ответ. Очень помогли
И челу Совесть тоже, просто мне приблуда вчера пришла в голову, что нужно сделать только так, и никак по-другому. Поэтому обойдусь более традиционными методами
Re: Мелкие вопросы по МК и ПЛИС.
Схема до безобразия проста - датчик, питание, дисплей и матрица кнопок 4х4. В тот момент, когда датчик производит считывание вращений, матрица отключается.
Пока настораживают два момента:
1) Работа внутреннего резонатора не может притупить опрос портов МК?
2) При каждом обороте двигателя, на дисплей выводится информация о количестве совершённых оборотов. Я знаю, что дисплей хорошо затупляет работу МК, может пока МК отправляет данные на дисплей, происходит "пролёт" показаний датчика?
Пока настораживают два момента:
1) Работа внутреннего резонатора не может притупить опрос портов МК?
2) При каждом обороте двигателя, на дисплей выводится информация о количестве совершённых оборотов. Я знаю, что дисплей хорошо затупляет работу МК, может пока МК отправляет данные на дисплей, происходит "пролёт" показаний датчика?
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
isx писал(а):2) При каждом обороте двигателя, на дисплей выводится информация о количестве совершённых оборотов.
это как, 15 раз в секунду что ли?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Теоретически должно было так быть, но на практике всё пролетает. Он не может с такой частотой обновлятся? Если нет, то какая предельная частота обновления (дисплей WH1602b)?
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Видимо, вы использовали чью-то библиотеку для работы с дисплеем? Тогда ХЗ как там сделано. А тайминги самого дисплея есть в ДШ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
isx писал(а):Теоретически должно было так быть, но на практике всё пролетает. Он не может с такой частотой обновлятся? Если нет, то какая предельная частота обновления (дисплей WH1602b)?
Если бы даже и мог, то это бессмысленно : такую частоту обновления человек не в состоянии воспринять глазом и осмыслить. Пять раз в секунду - и то много. Оптимально - 2 .
Re: Мелкие вопросы по МК и ПЛИС.
Осмысливать тут и не обязательно. Эта информация чисто для восприятия (показывает, что счёт таки идёт
). Чтобы уменьшать частоту, нужно будет делать ещё алгоритм. а я не хотел загромождать память, её мне много нужно будет в дальнейшем. Библиотека стандартная CVAVR-овская...
Re: Мелкие вопросы по МК и ПЛИС.
интересная штука.... Убрал строку инициализации дисплея, и стало всё норм... Теперь сотку в секунду свободно считает...
Re: Мелкие вопросы по МК и ПЛИС.
Дисплей инициализируется одной строкой?! Интересно. Или эта строка - вызов функции инициализации? Тогда второй вопрос - дисплей вообще не инициализируется?isx писал(а):интересная штука.... Убрал строку инициализации дисплея, и стало всё норм... Теперь сотку в секунду свободно считает...
Ну и на всякий случай - не надо синхронизировать два совершенно независимых асинхронных процесса - вращение чего-то там и обновление дисплея. Они по природе своей абсолютно асинхронны. Вот и поступайте с ними, как с двумя отдельными процессами.
С уважением,
Виктор.
Виктор.