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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25155
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Pink-Pank писал(а):
Если сопротивление нагрузки мало, то она ближе к вертикали

Наверное, наоборот? )

А если подумать? :)
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

Starmarik писал(а):Мой алгоритм действий - подавать импульсы на ногу SH_cp, и во время подачи импульсов передать на ногу DS регистра комбинацию 01100000. А потом подать лог.1 на защелку регистра ST_cp, чтоб зажечь индикатор. Собсно проблема в том, что я не знаю, как это организовать в CodeVision AVR.


Спойлер

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

unsigned char x = 0b01100000, i;

void main (void)
{
DDRB = 0xFF; // настраиваем все ноги на выход

for (i=1; i<=8; i++)
{
PORTB.0 = (x | 0x80) >>7; // старший разряд (самый левый)
delay_ms(1); // Задержка на всякий случай. Не знаю, с какой скоростью там может ваш регистр работать
PORTB.1 = 1; // эта нога - синхросигнал
delay_ms(2);
PORTB.1 = 0;
delay_ms(1);
x = x<<1; // сдвигаем для передачи следующего 0 или 1
}
PORTB.2 = 1; // единица на защелку
delay_ms(1);
PORTB.2 = 0;
}


KleRiK писал(а):Симуляция работает, а вот не погорит ли в реальности...

не погорит. Главное - не вешайте слишком много диодов. Максимальный ток через МК - 200 мА.
Порты - можно. RESET - через 10 кОм на питание. Вообще вывод может настраиваться или как Reset (тогда его надо подтягивать к питанию) или как порт - тогда работаете как с портом (если не ошибаюсь, единственное ограничение - выход этого порта - открытый коллектор)

КРАМ писал(а):А если подумать? :)

ооо.. Тут еще и думать надо... :)))
СпойлерИзображение

Т.е. чем больше нагрузка (меньше сопротивление Rc) - тем больше напряжения падает на участке Сток-Исток (ток-то стабилен).
А когда нагрузка уменьшается (увеличивается сопротивление Rc) - то кривая уходит в вертикальную область.
Ведь так?
Вложения
12345.png
(32.52 КБ) 694 скачивания
Fucking static initialization order fiasco
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25155
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Pink-Pank писал(а):ооо.. Тут еще и думать надо... :)))

Думать нужно всегда...
Я тут прочел, что Вы окончили РРТИ...
Какой факультет, если не секрет?
:)
Вы вообще в курсе, что такое нагрузочная ПРЯМАЯ?
Что такое семейство выходных ВАХ?
Как расположена эта прямая на этом семействе?
:roll:
Starmarik
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

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

Сообщение Starmarik »

PINK-PANK, спасибо за код. Но у меня с ним проблемка - попробовал в протеусе - светят все сегменты индикатора, независимо от значения переменной х. Я думаю, проблема в строчке PORTB.0 = (x|0x80)>>7; когда пишу так - PORTB.0 = x>>7, то все индикатор выдает цифру, как положено, но через секунду гаснет. В чем может быть проблема? Вот код на всякий случай, может я что упустил.

Спойлер

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

#include <tiny13a.h>
#include <delay.h>
unsigned char x = 0b00000110, i;

void vivod(){
for (i=1; i<=8; i++)
{
PORTB.0 = (x|0x80)>>7; // старший разряд (самый левый)
delay_ms(1); // Задержка на всякий случай. Не знаю, с какой скоростью там может ваш регистр работать
PORTB.1 = 1; // эта нога - синхросигнал
delay_ms(2);
PORTB.1 = 0;
delay_ms(1);
x = x<<1; // сдвигаем для передачи следующего 0 или 1
}
PORTB.2 = 1; // единица на защелку
delay_ms(1);
PORTB.2 = 0;
}
void main (void)
{
DDRB = 0xFF; // настраиваем все ноги на выход



while(1){
vivod();
}
}
Последний раз редактировалось Starmarik Чт июл 24, 2014 21:21:19, всего редактировалось 1 раз.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

КРАМ писал(а):Какой факультет, если не секрет?

Радиотехнический. Специальность - радиоэлектронные системы.
Но вообще, я больше по программированию (типа отмазался :)) )

КРАМ писал(а):Вы вообще в курсе, что такое нагрузочная ПРЯМАЯ?
Что такое семейство выходных ВАХ?
Как расположена эта прямая на этом семействе?


Прямая - это прямая. ) Понятие такое. Используется для выбора рабочей точки.
Семейство - это несколько кривых, изображающих зависимости тока от напряжения при разных условиях (напряжение затвора в данном случае)
Расположена под наклоном. :)))

Starmarik писал(а):PINK-PANK, спасибо за код. Но у меня с ним проблемка...


PORTB.0 = x>>7;
Мой косяк - запарился.

Попробуйте последнюю строчку закомментировать. (//)
Точно не знаю, какой там алгоритм работы Вашего регистра. На защелке нужно удерживать напряжение?
Последний раз редактировалось Pink-Pank Чт июл 24, 2014 22:40:30, всего редактировалось 1 раз.
Fucking static initialization order fiasco
Starmarik
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

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

Сообщение Starmarik »

PINK-PANK, огромнейшее спасибо :)) Все заработало, дальше буду разбиратся сам. Оказалось гораздо проще, чем я себе представлял :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25155
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Pink-Pank писал(а):Радиотехнический.
......
Прямая - это прямая. ) Понятие такое. Используется для выбора рабочей точки.
Семейство - это несколько кривых, изображающих зависимости тока от напряжения при разных условиях (напряжение затвора в данном случае)
Расположена под наклоном. :)))

Коллега, стало быть...
Я тоже окончил РТФ. Специальность радиотехника.
:)
.................
Вот эта самая нагрузочная прямая при уменьшении сопротивления нагрузки становится ВЕРТИКАЛЬНЕЙ. А это означает, что при том же напряжении затвор-исток транзистор выходит в активный режим (пологую часть ВАХ).
Фактически, процесс перезаряда затворной емкости ключа выглядит как движение нагрузочной прямой ДРАЙВЕРА этого ключа от вертикального к горизонтальному положению.
Последний раз редактировалось КРАМ Пт июл 25, 2014 08:13:34, всего редактировалось 1 раз.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

НАШИ - они повсюду! )
Попов воскресе! :)))

КРАМ писал(а):процесс перезаряда затворной емкости ключа выглядит как движение нагрузочной прямой от вертикального к горизонтальному положению.

Уфф! Ну, вроде, наконец, разобрался! )) Пойду применять на практике! Че бы такого сотворить? :roll: Спасибо за терпение! ))
Fucking static initialization order fiasco
Бар-Барсик
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

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

Сообщение Бар-Барсик »

Не хочет собираться проект, всё подключил, пути настроил. Вот такая ошибка. Подскажите как её исправить.
Вложения
Снимок.PNG
(131.03 КБ) 302 скачивания
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

Возможно, вот это поможет.

http://www.nongnu.org/avr-libc/user-man ... rupts.html
Fucking static initialization order fiasco
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

добрый день. такая проблемка. МК мега32. при нажатии кнопки нужно по USART передать строку. одновременно с этим на timer/counter2 навешен часовой кварц (на TOSC) с предделителем 128. прерывание через 7,8 мс для отсчета времени. при симуляции в протеусе после нажатия кнопки происходит передача строки (мега8 принимает ее и выводит на LCD дисплей), а дальше мега32 перестает реагировать на нажатия других кнопок, на которые должна в общем-то реагировать. при проверке пошагово в avrstudio у меня нормально передаются 2 символа из 20-ти нужной строки, потом отрабатывает первый раз прерывание счетчика и после этого передатчик зависает на проверке условия

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

while ( ! ( UCSRA & (1<<UDRE)))
        ;

выставление флага завершения передачи вручную ничего не меняет. курсор стоит в этом месте, но счетчик продолжает периодически щелкать, отсчитывая время. что это может быть?
куски кода привожу ниже
Спойлер//передача строки из 20 символов
for (m=0;m<21;m++)
{
unsigned char symbol = d[m];
USART_transmitter(symbol);
}
delay_ms(20);

Спойлер//обработчик передачи
void USART_transmitter(unsigned char data)
{
while ( ! ( UCSRA & (1<<UDRE)))
;
UCSRB &= ~(1<<TXB8);
if ( data & 0x100)
UCSRB |= (1<<TXB8);
UDR = data;
}

Спойлер//обработчик прерывания, сгенерированный CVAVR
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
time1+=7.8125;
}
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

За исключением того, что вы передаете 21 символ вместо 20 - вроде все норм. возможно, проблема с симуляцией студией. Кусок кода с кнопками можете выложить? Или лучше весь код.
Fucking static initialization order fiasco
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

Сообщение *Trigger* »

sphincs писал(а):

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

//передача строки из 20 символов
for (m=0;m<21;m++)
{
unsigned char symbol = d[m];     
USART_transmitter(symbol);
}
delay_ms(20);

С таким кодом и будет 21. Переменная m будет последовательно принимать значение от 0 до 20, а это 21 число.
Нужно так:

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

//передача строки из 20 символов
for (m=0;m<20;m++)
{
unsigned char symbol = d[m];     
USART_transmitter(symbol);
}
delay_ms(20);

От 0 до 19 - как раз 20 чисел.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

Pink-Pank писал(а):За исключением того, что вы передаете 21 символ вместо 20 - вроде все норм

именно при таком варианте у меня выводится то, что нужно, без всякого мусора.
нажатие кнопки старт
Спойлерif ((PINC.3==1)&&(fs=true)) //нажатие кнопки СТАРТ

{
#asm("cli");
TCCR2=0x01;
#asm("sei");
PORTA.0=0;
PORTA.1=0;
PORTA.2=0;
PORTA.3=0;
PORTA.4=0;
PORTA.5=0;
PORTC.5=0;
PORTC.1=0;
PORTD.7=0;
PORTD.5=0;
PORTD.3=0;
PORTA.7=1;
PORTA.6=1;
mode=1;
i=0;
l=0;
time1=0;
for (m=0;m<21;m++)
{
unsigned char symbol = d[m];
USART_transmitter(symbol);
}
delay_ms(20);
}

после нее при нажатии, например, кнопки 1
Спойлерif (mode==1)
if (PIND.2==1) Button1_press_ok();


//обработчик кнопки 1
void Button1_press_ok()
{
#asm("cli");
PORTD.3=1;
PORTA.0=1;
PORTA.6=0;
PORTA.5=1;
mode=2;
i=0;
l=1;
a=time1+(TCCR2*0.0305);
edit(a);
}

D.3 и A.0 уже не включаются. сконфигурированы порты правильно, проверял

исправил на 20 для приемника и передатчика, отображается все так же хорошо, но других улучшений нет
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

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

Сообщение Pink-Pank »

а весь проект можете выложить архивом? или там что-то секретное?
Fucking static initialization order fiasco
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

да нет, просто осваиваю AVR на примере игрушки для себя. подозреваю, что протеус может просто плохо дружить с прерываниями от таймеров, не имел с ними дел еще. в принципе, у меня вроде есть все, чтобы проверить поведение кода в железе, может на выходных дойдут руки.
https://www.dropbox.com/s/bfifikyvy94k7 ... 03.0.1.zip два проекта и схема в протеусе (там конечно нагромождение, но примерно разобраться можно)
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

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

Сообщение amd9800 »

Хочу прошить чип atmega 8 и выставить ее работу от внутреннего генератора частоты на 8МГц

Читаю фьюзы в программаторе AVR910 и у меня два вопроса
Нумерация битов с права на лево - как в программирование или наоборот?
учитывая старший байт могу подозревать что невыделенный бит это Бит Spien и тогда получается нумерация битов с лево на право.

Изображение

для выбора фьюзов использую калькулятор
Изображение

а вот как читает фьюзы Codevision Avr
Изображение
Вложения
FUSE-48Code.JPG
(46.37 КБ) 515 скачиваний
FUSE-48-calc.JPG
(30.26 КБ) 522 скачивания
FUSE-48.JPG
(24.26 КБ) 1221 скачивание
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

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

Сообщение amd9800 »

решение нашел - оказывается в калькуляторе биты пронумерованы с низу в верх и я не обратил внимание
Бит spien оказывается 5-м
Аватара пользователя
nikolaenkowiktor
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс июл 20, 2014 10:01:17

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

Сообщение nikolaenkowiktor »

добрый вечер, подскажите, при программировании мк attiny2313 как подключать программатор к мк?
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

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

Сообщение amd9800 »

nikolaenkowiktor писал(а):добрый вечер, подскажите, при программировании мк attiny2313 как подключать программатор к мк?


разводишь на плате выводы для MISO MOSI RESET SCK GROUND VCC

к этим выводам подключаешь программатор.
Ответить

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