Страница 382 из 628

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

Добавлено: Вс ноя 18, 2012 21:01:39
vitalik_1984
Chettuser писал(а):itoa - если памяти много, если нет - писать самому.
Честно говоря не совсем понял какой памяти идет речь, если о флеш, то она займет точно меньше, чем printf(); а если про оперативную, то не знаю.
Вообще эта функция описана даже в книге основателей языка Кернигана и Ричи.

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

Добавлено: Вс ноя 18, 2012 21:04:32
Reaper666
Аlex писал(а):О милливольтах речи не было, речь была о "нормальном значении" :)) Ну а ссылка была по поводу "разборок на битовом уровне" :)
Люди совсем не умеют вопросы задавать :facepalm:


Людь задал именно тот вопрос, что ему и нужен был. Значение в АЦП я получил, я про два бита из ADRESH забыл. И мне пока надо научиться преобразовать полученное значение, которое поймет ЖКИ. Вашу ссылку как раз и читаю, но там ссылка на подпрограмму не туда кидает. а с милливольтами я потом начну разбираться.

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

Добавлено: Чт ноя 22, 2012 15:58:09
Chip115
Всем привет!
Вопрос по программируемому контроллеру приоритетных прерываний 8259.
Не доходит, как работает контроллер в режиме опроса (Polling mode).
Получается процессор посылает OCW3. Контроллер фиксирует самый приоритетный запрос. Последующее считывание OCW3 даст байт, который содержит в себе бит 7 (признак того, что был запрос на прерывание от устройства) и биты 2,,0, указывающие на запрос с максимальным приоритетом. Вот когда проц считал OCW3 и определил что был запрос скажем от IRQ2, то какие следующие действия? Процессор сам перейдет по вектору или мне самому надо как то прописать эту инструкцию?

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

Добавлено: Сб ноя 24, 2012 00:35:27
Зукс
В программаторе UniProf нету в списке Меги 1284, есть только 128,1280,1281 (в инете новых версий проги не нашел, другим прогам не доверяю так как пару раз убил камень изза бага в проге). Можно ли шить камень выбрав в списке мегу128 вместо 1284? Не будет ли при этом проблем?
Пробовал только читать так вылазит сразу сообщение что МК подключен но не определен и нужно вручную его выбрать из списка. Ставил 128 - читается но прошивать боюсь...

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

Добавлено: Сб ноя 24, 2012 18:14:39
Anton.А.
Господа, помогите с мелким вопросом.
Вся микроконтроллерная система работает от 3.3v. Имеется 3 устройства, управляющиеся по I2c. Сколько и какие подтягивающие резисторы нужно поместить на шину?

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

Добавлено: Сб ноя 24, 2012 19:16:04
Зукс
3.3 - 4.7 кОм два штуки к плюсу питания

Помогите разобратся с проблемой: Имеется прога написанная под мегу8, компилирую ее под мегу 1284 (компилятор только под мегу1284р, может в этом дело?). А еще программатор не поддерживает мегу 1284, только 1281(так я и шил). В итоге в протеусе у меня устройсвтро на меге 1284 работает нормально а в реале после прошивки полная тишина на всех портах. Скажите в чем может быть проблема?

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

Добавлено: Сб ноя 24, 2012 19:30:55
HHIMERA
Anton.А. писал(а): Сколько и какие подтягивающие резисторы нужно поместить на шину?
I2C-bus specification and user manual.pdf
(362.74 КБ) 605 скачиваний

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

Добавлено: Ср ноя 28, 2012 00:22:23
mich91
Делаю часы/вольт метр в авто.Почему когда МК Тини26 работает от 32768гц, то нельзя вызывать процедуру Read_ADC(), из прерывания таймера, который считает каждую секунду(таймер 1), при этом глючит динамическая индикация(дисплей обновляется по прерыванию таймера 0 с частотою 256гц), а если кинуть в основную процедуру и поставить делей в 1000мс, то норм пашет, какая разница, что там что там вызывается раз в секунду ?

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

Добавлено: Чт ноя 29, 2012 05:22:05
vitalik_1984
у вас в основном цикле функция не мешает потому что прерывание происходит в нужное время, а если внутри таймера ставить, то прерывание таймера может задерживаться, так как сама функция устроена тупым циклом, пока нет флага готовности тупит в нем.Вот вам и моргания.
А если вы еще и функцию delay запихиваете в обработку таймера, то это вообще нубокод.
Вообще можно запускать преобразования по таймеру,а саму обработку проводить в основной программе.

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

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

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

TIM6->ARR=(uint16_t)(prescaller%0x10000+1);
TIM6->PSC=(uint16_t)(prescaller/0x10000);
подскажите, где я туплю..

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

Добавлено: Сб дек 01, 2012 14:34:57
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;

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

Добавлено: Сб дек 01, 2012 14:43:48
Chettuser
Если кому интересно - тут фотки потрохов AVR, STM32, и др. Сравните как сильно отличаются даже кристаллами различные МК.

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

Добавлено: Вс дек 02, 2012 12:43:41
zvukovik
да, перепутал, TIM6, почему-то всё равно глючит, частота прыгает, похоже, неправильный у меня этот алгоритм, может из двух предделителей один надо как-то по другому делать?

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

Добавлено: Вт дек 04, 2012 09:23:44
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;
}
}
} 
поясните пожалуйста а то начинаю вподать в отчаяние)

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

Добавлено: Вт дек 04, 2012 09:29:08
Gudd-Head
mastech писал(а):с одним ацп вроде понятно почти все, беру пример с двумя АЦП и почему то непонятно где второе Ацп и как его опрашивают?
Открою небольшой секрет: там только один АЦП. Просто мультиплексируются несколько входов. :)

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

Добавлено: Вт дек 04, 2012 09:59:42
mastech
это я уже подозревал) а вот как опросить два?

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

Добавлено: Вт дек 04, 2012 10:01:54
Gudd-Head
Сначала оцифровать один канал, сменить его на другой, подождать немного пока напряжение устаканится, снова оцифровать.

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

Добавлено: Вт дек 04, 2012 10:07:54
bfgroup
Ребята, кто-нибудь работал с CPLD семейство MAX3000A? Я развёл и вытравил плату, напаял компаненты, давай конфигурировать и тут понимаю, что у трёхтысячных НЕТ ПРОГРАММНОЙ ПОДТЯЖК И ВХОДОВ!!! Проклятье! До этого имел дело со вторыми максами. Не задумываясь, начал ваять схему и был вот так наказан.. И как теперь быть? заново разводить плату с внешними pull-up резисторами?
Или вот говорят, мол, семитысячная серия морально устарела, с 2007 года сняли с производства меняйте на 3000А, но семитысячники-то как раз с программируемыми пулл-апами! И как, спрашивается, менять? Горе мне! :cry:
Но это всё эмоции. Вопрос в другом: может быть я туплю в чём-то, и всё-таки есть возможность подтяжки??

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

Добавлено: Вт дек 04, 2012 10:41:10
ibiza11
в серии MAX3000A в нормальном режиме нет внутренней подтяжки I/O. Подтягиваются только ножки JTAG во время внутрисхемного программирования.
А для чего Вам подтяжка? может можно без нее обойтись?

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

Добавлено: Вт дек 04, 2012 11:25:47
mastech
Gudd-Head писал(а):Сначала оцифровать один канал, сменить его на другой, подождать немного пока напряжение устаканится, снова оцифровать.
это тоже вроде понятно что сначала одно потом другое через задержку, но я в коде не вижу где обращение к ADC0 а потом ADC1 и т.д ткните носом, а то по другому не пойму)