Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Вт мар 01, 2011 13:51:57

Сообщение zip900 »

Мне просто для индикации надо
Реклама
Опытный кот
Аватара пользователя
Сообщения: 833
Зарегистрирован: Ср май 02, 2007 14:36:29
Откуда: Плюк

Сообщение Furcat »

Подскажете плиз !
над мегой 8 колдую.
в общем примерно так:

int main(void){
unsigned char SCR[3] = {1, 2, 3}; // Ýêðàííàÿ îáëàñòü
.......
}

ISR(TIMER0_OVF_vect){
PORTB = SCR[1];
......
}

Короче авр студио ругается что массив в прерывании недоступен, что делать ?
а массив надо обновлять в main, и в прерывании выводить на индикатор...
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Вынесите объявление массива за пределы main. Он у вас локальный в main, сделайте его глобальным.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Сообщение ut1wpr »

Furcat писал(а):Подскажете плиз !
над мегой 8 колдую.
Оставьте Мегу в покое, она не виновата. Начинайте колдовать над Си.
Помогут:
Гугл: "Видимость переменных"
Гугл: "Области видимости переменных"
Но это называется "Изучать по кусочкам". Учебник по Си читать не пробовали?
С уважением,
Виктор.
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Встречайте , новый MK от ATMEL - ATtiny828
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

У этого камня пока нет главного качества - доступность. Нигде в магазинах не найти, а заказывать 10000 с завода как то дороговасто. Даже давно выпускаемые AtMega88 у нас в магазине еще не продаются.
И на E-Bay еще тоже не продают вашу тину.
В поисках истины человек развивается.
Контактная информация:
Реклама
Встал на лапы
Сообщения: 119
Зарегистрирован: Чт май 10, 2012 21:56:27
Откуда: Львов

Сообщение DrHlus »

Здраствуйте, уважаемые Коты! :))
Подскажите, пожалуйста, можно ли компилятору сишки в WinAvr запретить использовать определенный регистр общего назначения и, если можно, то как это сделать?
П.С. Упс, прошу прощения, промахнулся вкладкай браузера и написал не в подходящей теме :))
Но все равно буду рад услышать ответ
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Нет, регистры общего назначения компилятор определяет сам, для этого при включении кусочков на ассемблере используется специальный синтаксис.
Вы можете использовать конкретный регистр только если подключаете целый модуль, написанный на чистом ассемблере.

PS А зачем запрещать компилятору использовать определенный регистр?
Последний раз редактировалось vitalik_1984 Ср авг 15, 2012 20:17:14, всего редактировалось 1 раз.
В поисках истины человек развивается.
Контактная информация:
Встал на лапы
Сообщения: 106
Зарегистрирован: Пн мар 26, 2012 05:25:06

Сообщение Совесть »

А вот что говорит нам по этому поводу 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:

Код: Выделить всё

__regvar __no_init volatile unsigned int filteredTimeSinceCommutation @14;
This line locks r14 for use only when explicitly referenced in your code thorugh the var
name "filteredTimeSinceCommutation". This means that the compiler cannot dispose
of it at its own will.

To do this in AVR GCC, do this:

Код: Выделить всё

register unsigned char counter asm("r3");
Typically, it should be possible to use r2 through r15 that way.

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.
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Добрый день!!
Собрал тут на днях устройство. Одна из его функций - считывание количества оборотов двигателя с помощью датчика Холла (tle4905l). Так вот проблема в том, что он успевает считать только 1 об/сек, а нужно около 15. Не могу понять, почему так медленно считывает инфу с датчика, ведь прога написана на 30-ти строках примерно, а тактирование идёт от ВНУТРЕННЕГО резонатора на 8МГц. Подскажите пожалёста, в чём может быть дело... :solder:
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Значит, в сторону схемы надо копать. Или алгоритма.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Встал на лапы
Сообщения: 119
Зарегистрирован: Чт май 10, 2012 21:56:27
Откуда: Львов

Сообщение DrHlus »

vitalik_1984 писал(а):Нет, регистры нашего назначения компилятор определяет сам, для этого при включении кусочков на ассемблере используется специальный синтаксис.
Вы можете использовать конкретный регистр только если подключаете целый модуль, написанный на чистом ассемблере.
Спасибо за информативный ответ. Очень помогли :))
И челу Совесть тоже, просто мне приблуда вчера пришла в голову, что нужно сделать только так, и никак по-другому. Поэтому обойдусь более традиционными методами
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Схема до безобразия проста - датчик, питание, дисплей и матрица кнопок 4х4. В тот момент, когда датчик производит считывание вращений, матрица отключается.
Пока настораживают два момента:
1) Работа внутреннего резонатора не может притупить опрос портов МК?
2) При каждом обороте двигателя, на дисплей выводится информация о количестве совершённых оборотов. Я знаю, что дисплей хорошо затупляет работу МК, может пока МК отправляет данные на дисплей, происходит "пролёт" показаний датчика?
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

isx писал(а):2) При каждом обороте двигателя, на дисплей выводится информация о количестве совершённых оборотов.
это как, 15 раз в секунду что ли?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Теоретически должно было так быть, но на практике всё пролетает. Он не может с такой частотой обновлятся? Если нет, то какая предельная частота обновления (дисплей WH1602b)?
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Видимо, вы использовали чью-то библиотеку для работы с дисплеем? Тогда ХЗ как там сделано. А тайминги самого дисплея есть в ДШ.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 6323
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

isx писал(а):Теоретически должно было так быть, но на практике всё пролетает. Он не может с такой частотой обновлятся? Если нет, то какая предельная частота обновления (дисплей WH1602b)?
Если бы даже и мог, то это бессмысленно : такую частоту обновления человек не в состоянии воспринять глазом и осмыслить. Пять раз в секунду - и то много. Оптимально - 2 .
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Осмысливать тут и не обязательно. Эта информация чисто для восприятия (показывает, что счёт таки идёт :) ). Чтобы уменьшать частоту, нужно будет делать ещё алгоритм. а я не хотел загромождать память, её мне много нужно будет в дальнейшем. Библиотека стандартная CVAVR-овская...
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

интересная штука.... Убрал строку инициализации дисплея, и стало всё норм... Теперь сотку в секунду свободно считает...
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Сообщение ut1wpr »

isx писал(а):интересная штука.... Убрал строку инициализации дисплея, и стало всё норм... Теперь сотку в секунду свободно считает...
Дисплей инициализируется одной строкой?! Интересно. Или эта строка - вызов функции инициализации? Тогда второй вопрос - дисплей вообще не инициализируется?
Ну и на всякий случай - не надо синхронизировать два совершенно независимых асинхронных процесса - вращение чего-то там и обновление дисплея. Они по природе своей абсолютно асинхронны. Вот и поступайте с ними, как с двумя отдельными процессами.
С уважением,
Виктор.
Ответить

Вернуться в «Разные вопросы по МК»