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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Chettuser писал(а):itoa - если памяти много, если нет - писать самому.

Честно говоря не совсем понял какой памяти идет речь, если о флеш, то она займет точно меньше, чем printf(); а если про оперативную, то не знаю.
Вообще эта функция описана даже в книге основателей языка Кернигана и Ричи.
Reaper666
Открыл глаза
Сообщения: 50
Зарегистрирован: Пн ноя 05, 2012 03:40:39

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

Сообщение Reaper666 »

Аlex писал(а):О милливольтах речи не было, речь была о "нормальном значении" :)) Ну а ссылка была по поводу "разборок на битовом уровне" :)
Люди совсем не умеют вопросы задавать :facepalm:



Людь задал именно тот вопрос, что ему и нужен был. Значение в АЦП я получил, я про два бита из ADRESH забыл. И мне пока надо научиться преобразовать полученное значение, которое поймет ЖКИ. Вашу ссылку как раз и читаю, но там ссылка на подпрограмму не туда кидает. а с милливольтами я потом начну разбираться.
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

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

Сообщение Chip115 »

Всем привет!
Вопрос по программируемому контроллеру приоритетных прерываний 8259.
Не доходит, как работает контроллер в режиме опроса (Polling mode).
Получается процессор посылает OCW3. Контроллер фиксирует самый приоритетный запрос. Последующее считывание OCW3 даст байт, который содержит в себе бит 7 (признак того, что был запрос на прерывание от устройства) и биты 2,,0, указывающие на запрос с максимальным приоритетом. Вот когда проц считал OCW3 и определил что был запрос скажем от IRQ2, то какие следующие действия? Процессор сам перейдет по вектору или мне самому надо как то прописать эту инструкцию?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Зукс
Вымогатель припоя
Сообщения: 564
Зарегистрирован: Чт июл 21, 2011 19:56:10

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

Сообщение Зукс »

В программаторе UniProf нету в списке Меги 1284, есть только 128,1280,1281 (в инете новых версий проги не нашел, другим прогам не доверяю так как пару раз убил камень изза бага в проге). Можно ли шить камень выбрав в списке мегу128 вместо 1284? Не будет ли при этом проблем?
Пробовал только читать так вылазит сразу сообщение что МК подключен но не определен и нужно вручную его выбрать из списка. Ставил 128 - читается но прошивать боюсь...
Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
Аватара пользователя
Anton.А.
Открыл глаза
Сообщения: 53
Зарегистрирован: Вс ноя 08, 2009 19:46:27
Откуда: Москва

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

Сообщение Anton.А. »

Господа, помогите с мелким вопросом.
Вся микроконтроллерная система работает от 3.3v. Имеется 3 устройства, управляющиеся по I2c. Сколько и какие подтягивающие резисторы нужно поместить на шину?
Аватара пользователя
Зукс
Вымогатель припоя
Сообщения: 564
Зарегистрирован: Чт июл 21, 2011 19:56:10

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

Сообщение Зукс »

3.3 - 4.7 кОм два штуки к плюсу питания

Помогите разобратся с проблемой: Имеется прога написанная под мегу8, компилирую ее под мегу 1284 (компилятор только под мегу1284р, может в этом дело?). А еще программатор не поддерживает мегу 1284, только 1281(так я и шил). В итоге в протеусе у меня устройсвтро на меге 1284 работает нормально а в реале после прошивки полная тишина на всех портах. Скажите в чем может быть проблема?
Шуруп забитый молотком держится намного лучше чем гвоздь закрученный отверткой!
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Anton.А. писал(а): Сколько и какие подтягивающие резисторы нужно поместить на шину?

I2C-bus specification and user manual.pdf
(362.74 КБ) 602 скачивания
"Я не даю готовых решений, я заставляю думать!"(С)
mich91
Встал на лапы
Сообщения: 95
Зарегистрирован: Ср ноя 02, 2011 15:11:49

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

Сообщение mich91 »

Делаю часы/вольт метр в авто.Почему когда МК Тини26 работает от 32768гц, то нельзя вызывать процедуру Read_ADC(), из прерывания таймера, который считает каждую секунду(таймер 1), при этом глючит динамическая индикация(дисплей обновляется по прерыванию таймера 0 с частотою 256гц), а если кинуть в основную процедуру и поставить делей в 1000мс, то норм пашет, какая разница, что там что там вызывается раз в секунду ?
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

у вас в основном цикле функция не мешает потому что прерывание происходит в нужное время, а если внутри таймера ставить, то прерывание таймера может задерживаться, так как сама функция устроена тупым циклом, пока нет флага готовности тупит в нем.Вот вам и моргания.
А если вы еще и функцию delay запихиваете в обработку таймера, то это вообще нубокод.
Вообще можно запускать преобразования по таймеру,а саму обработку проводить в основной программе.
Аватара пользователя
zvukovik
Встал на лапы
Сообщения: 140
Зарегистрирован: Вт авг 03, 2010 15:21:20
Откуда: Екатеринбург

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

Сообщение zvukovik »

вопрос по таймеру 6 в STM32F100, у меня используется прерывание по нему и понадобилось увеличить разрядность предделителя, не хватает 16 бит.
есть регистры TIM7->ARR и TIM7->PSC, которыми в этом случае можно делить частоту, это получается 32 бита, как правильно записать в них 32-битную переменную, чтобы один был как старшие 16 бит, другой - младшие, пытаюсь делать так, чёто не получается

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

TIM6->ARR=(uint16_t)(prescaller%0x10000+1);
TIM6->PSC=(uint16_t)(prescaller/0x10000);

подскажите, где я туплю..
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

определитесь уже.
zvukovik писал(а):...TIM7->ARR и TIM7->PSC...
TIM6->ARR=(uint16_t)(prescaller%0x10000+1);
TIM6->PSC=(uint16_t)(prescaller/0x10000);
...

TIM6->ARR = (prescaller & 0xFFFF);
TIM6->PSC = (prescaller & 0xFFFF0000)>>16;
Ставим плюсы: )
Chettuser

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

Сообщение Chettuser »

Если кому интересно - тут фотки потрохов AVR, STM32, и др. Сравните как сильно отличаются даже кристаллами различные МК.
Аватара пользователя
zvukovik
Встал на лапы
Сообщения: 140
Зарегистрирован: Вт авг 03, 2010 15:21:20
Откуда: Екатеринбург

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

Сообщение zvukovik »

да, перепутал, TIM6, почему-то всё равно глючит, частота прыгает, похоже, неправильный у меня этот алгоритм, может из двух предделителей один надо как-то по другому делать?
mastech
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

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

Сообщение mastech »

ковыряюсь с АЦП на Atmega16 и никак не вьеду как инициализировать несколько АЦП. беру пример(на Си) с одним ацп вроде понятно почти все, беру пример с двумя АЦП и почему то непонятно где второе Ацп и как его опрашивают?

Спойлер

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

 ADCSRA=(1«ADEN)|(1«ADPS1)|(1«ADPS0);
//Включаем АЦП, тактовая частота бреобразователя =/8 от тактовой микроконтроллера

ADMUX=(1«REFS1)|(1«REFS0)|(0«MUX0)|(0«MUX1)|(0«MUX2)|(0«MUX3);
//Внутренний источник опорного напряжения Vref=2,56, входом АЦП является PC0


и еще непонятно количество команд отличается между первым и вторым примером в томже ADSRA или их просто проигнорировали (ненужны и по умолчанию 0)?

второй пример в нем то я и не вижу как опрашивается второй АЦП
Спойлер

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

const char SEGMENTE[] = {119, 18, 107, 59, 30, 61, 125, 19, 127, 31};

volatile unsigned char segcounter = 0;
volatile int display1 = 0;
volatile int display2 = 0;

ISR (TIMER2_OVF_vect)
{
PORTD = 0;
PORTB = (1«segcounter);

switch (segcounter)
{
case 0:
PORTD = SEGMENTE[(display1 % 1000 / 100)];
break;
case 1:
PORTD = SEGMENTE[(display1 % 100 / 10)];
break;
case 2:
PORTD = SEGMENTE[(display1 % 10)];
break;
case 3:
PORTD = SEGMENTE[(display2 % 1000 / 100)];
break;
case 4:
PORTD = SEGMENTE[(display2 % 100 / 10)];
break;
case 5:
PORTD = SEGMENTE[(display2 % 10)];
break;
}
if ((segcounter++)>5) segcounter = 0;
}

volatile unsigned long display_value_1;
volatile unsigned long display_value_2;
volatile unsigned int adc_count;

ISR (ADC_vect)
{
ADCSRA = 0;
if ((ADMUX&0x0F) == 1)
{
ADMUX = 0;
display_value_1 += ADC*0.44;

}
else
{
ADMUX = (1«MUX0);
display_value_2 += ADC*0.9;
adc_count++;
}
ADCSRA=(1«ADEN)|(1«ADSC)|(1«ADFR)|(1«ADPS2)|(1«ADPS1)|(1«ADPS0)|(1«ADIE);
}

void adc_init (void)
{
ADMUX = (1 « MUX0);
ADCSRA=(1«ADEN)|(1«ADSC)|(1«ADFR)|(1«ADPS2)|(1«ADPS1)|(1«ADPS0)|(1«ADIE);
}

void init_multiplex (void)
{
TIMSK |= (1 « TOIE2);
TCCR2 |= (1«CS22);
return;
}

//----------
int main (void)
{

DDRD |= (1«PD0)|(1«PD1)|(1«PD2)|(1«PD3)|(1«PD4)|(1«PD5)|(1«PD6);
DDRB |= (1«PB0)|(1«PB1)|(1«PB2)|(1«PB3)|(1«PB4)|(1«PB5);

adc_init();

sei();

init_multiplex();

while(1)
{
if (adc_count > 400)
{
display1 = (display_value_1 / adc_count);
display2 = (display_value_2 / adc_count);
adc_count = 0;
display_value_1 = 0;
display_value_2 = 0;
}
}
}


поясните пожалуйста а то начинаю вподать в отчаяние)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

mastech писал(а):с одним ацп вроде понятно почти все, беру пример с двумя АЦП и почему то непонятно где второе Ацп и как его опрашивают?

Открою небольшой секрет: там только один АЦП. Просто мультиплексируются несколько входов. :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
mastech
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

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

Сообщение mastech »

это я уже подозревал) а вот как опросить два?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Сначала оцифровать один канал, сменить его на другой, подождать немного пока напряжение устаканится, снова оцифровать.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
bfgroup
Родился
Сообщения: 10
Зарегистрирован: Чт ноя 17, 2011 11:06:55
Откуда: Novosibirsk

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

Сообщение bfgroup »

Ребята, кто-нибудь работал с CPLD семейство MAX3000A? Я развёл и вытравил плату, напаял компаненты, давай конфигурировать и тут понимаю, что у трёхтысячных НЕТ ПРОГРАММНОЙ ПОДТЯЖК И ВХОДОВ!!! Проклятье! До этого имел дело со вторыми максами. Не задумываясь, начал ваять схему и был вот так наказан.. И как теперь быть? заново разводить плату с внешними pull-up резисторами?
Или вот говорят, мол, семитысячная серия морально устарела, с 2007 года сняли с производства меняйте на 3000А, но семитысячники-то как раз с программируемыми пулл-апами! И как, спрашивается, менять? Горе мне! :cry:
Но это всё эмоции. Вопрос в другом: может быть я туплю в чём-то, и всё-таки есть возможность подтяжки??
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

в серии MAX3000A в нормальном режиме нет внутренней подтяжки I/O. Подтягиваются только ножки JTAG во время внутрисхемного программирования.
А для чего Вам подтяжка? может можно без нее обойтись?
Ставим плюсы: )
mastech
Грызет канифоль
Сообщения: 269
Зарегистрирован: Чт мар 11, 2010 17:45:37
Откуда: г.фрязино

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

Сообщение mastech »

Gudd-Head писал(а):Сначала оцифровать один канал, сменить его на другой, подождать немного пока напряжение устаканится, снова оцифровать.


это тоже вроде понятно что сначала одно потом другое через задержку, но я в коде не вижу где обращение к ADC0 а потом ADC1 и т.д ткните носом, а то по другому не пойму)
Ответить

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