А если подумать?Pink-Pank писал(а):Наверное, наоборот? )Если сопротивление нагрузки мало, то она ближе к вертикали
Мелкие вопросы по МК и ПЛИС.
- КРАМ
- Друг Кота
- Сообщения: 25292
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
- Реклама
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
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;
}
не погорит. Главное - не вешайте слишком много диодов. Максимальный ток через МК - 200 мА.KleRiK писал(а):Симуляция работает, а вот не погорит ли в реальности...
Порты - можно. RESET - через 10 кОм на питание. Вообще вывод может настраиваться или как Reset (тогда его надо подтягивать к питанию) или как порт - тогда работаете как с портом (если не ошибаюсь, единственное ограничение - выход этого порта - открытый коллектор)
ооо.. Тут еще и думать надо...КРАМ писал(а):А если подумать?
Спойлер
А когда нагрузка уменьшается (увеличивается сопротивление Rc) - то кривая уходит в вертикальную область.
Ведь так?
- Вложения
-
- 12345.png
- (32.52 КБ) 695 скачиваний
Fucking static initialization order fiasco
- КРАМ
- Друг Кота
- Сообщения: 25292
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Думать нужно всегда...Pink-Pank писал(а): ооо.. Тут еще и думать надо...![]()
Я тут прочел, что Вы окончили РРТИ...
Какой факультет, если не секрет?
Вы вообще в курсе, что такое нагрузочная ПРЯМАЯ?
Что такое семейство выходных ВАХ?
Как расположена эта прямая на этом семействе?
Re: Мелкие вопросы по МК и ПЛИС.
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: Мелкие вопросы по МК и ПЛИС.
Радиотехнический. Специальность - радиоэлектронные системы.КРАМ писал(а):Какой факультет, если не секрет?
Но вообще, я больше по программированию (типа отмазался
Прямая - это прямая. ) Понятие такое. Используется для выбора рабочей точки.КРАМ писал(а):Вы вообще в курсе, что такое нагрузочная ПРЯМАЯ?
Что такое семейство выходных ВАХ?
Как расположена эта прямая на этом семействе?
Семейство - это несколько кривых, изображающих зависимости тока от напряжения при разных условиях (напряжение затвора в данном случае)
Расположена под наклоном.
PORTB.0 = x>>7;Starmarik писал(а):PINK-PANK, спасибо за код. Но у меня с ним проблемка...
Мой косяк - запарился.
Попробуйте последнюю строчку закомментировать. (//)
Точно не знаю, какой там алгоритм работы Вашего регистра. На защелке нужно удерживать напряжение?
Последний раз редактировалось Pink-Pank Чт июл 24, 2014 22:40:30, всего редактировалось 1 раз.
Fucking static initialization order fiasco
- Реклама
Re: Мелкие вопросы по МК и ПЛИС.
PINK-PANK, огромнейшее спасибо
Все заработало, дальше буду разбиратся сам. Оказалось гораздо проще, чем я себе представлял 
- КРАМ
- Друг Кота
- Сообщения: 25292
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Коллега, стало быть...Pink-Pank писал(а): Радиотехнический.
......
Прямая - это прямая. ) Понятие такое. Используется для выбора рабочей точки.
Семейство - это несколько кривых, изображающих зависимости тока от напряжения при разных условиях (напряжение затвора в данном случае)
Расположена под наклоном.![]()
Я тоже окончил РТФ. Специальность радиотехника.
.................
Вот эта самая нагрузочная прямая при уменьшении сопротивления нагрузки становится ВЕРТИКАЛЬНЕЙ. А это означает, что при том же напряжении затвор-исток транзистор выходит в активный режим (пологую часть ВАХ).
Фактически, процесс перезаряда затворной емкости ключа выглядит как движение нагрузочной прямой ДРАЙВЕРА этого ключа от вертикального к горизонтальному положению.
Последний раз редактировалось КРАМ Пт июл 25, 2014 08:13:34, всего редактировалось 1 раз.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
НАШИ - они повсюду! )
Попов воскресе!
Спасибо за терпение! ))
Попов воскресе!
Уфф! Ну, вроде, наконец, разобрался! )) Пойду применять на практике! Че бы такого сотворить?КРАМ писал(а):процесс перезаряда затворной емкости ключа выглядит как движение нагрузочной прямой от вертикального к горизонтальному положению.
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: Мелкие вопросы по МК и ПЛИС.
Fucking static initialization order fiasco
- sphincs
- Нашел транзистор. Понюхал.
- Сообщения: 174
- Зарегистрирован: Вт сен 11, 2012 09:13:52
- Откуда: Брест, Беларусь
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
добрый день. такая проблемка. МК мега32. при нажатии кнопки нужно по USART передать строку. одновременно с этим на timer/counter2 навешен часовой кварц (на TOSC) с предделителем 128. прерывание через 7,8 мс для отсчета времени. при симуляции в протеусе после нажатия кнопки происходит передача строки (мега8 принимает ее и выводит на LCD дисплей), а дальше мега32 перестает реагировать на нажатия других кнопок, на которые должна в общем-то реагировать. при проверке пошагово в avrstudio у меня нормально передаются 2 символа из 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;
}
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
time1+=7.8125;
}
Код: Выделить всё
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: Мелкие вопросы по МК и ПЛИС.
За исключением того, что вы передаете 21 символ вместо 20 - вроде все норм. возможно, проблема с симуляцией студией. Кусок кода с кнопками можете выложить? Или лучше весь код.
Fucking static initialization order fiasco
Re: Мелкие вопросы по МК и ПЛИС.
С таким кодом и будет 21. Переменная m будет последовательно принимать значение от 0 до 20, а это 21 число.sphincs писал(а):Код: Выделить всё
//передача строки из 20 символов for (m=0;m<21;m++) { unsigned char symbol = d[m]; USART_transmitter(symbol); } delay_ms(20);
Нужно так:
Код: Выделить всё
//передача строки из 20 символов
for (m=0;m<20;m++)
{
unsigned char symbol = d[m];
USART_transmitter(symbol);
}
delay_ms(20);Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- sphincs
- Нашел транзистор. Понюхал.
- Сообщения: 174
- Зарегистрирован: Вт сен 11, 2012 09:13:52
- Откуда: Брест, Беларусь
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
именно при таком варианте у меня выводится то, что нужно, без всякого мусора.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);
}
Спойлер
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);
}
исправил на 20 для приемника и передатчика, отображается все так же хорошо, но других улучшений нет
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
а весь проект можете выложить архивом? или там что-то секретное?
Fucking static initialization order fiasco
- sphincs
- Нашел транзистор. Понюхал.
- Сообщения: 174
- Зарегистрирован: Вт сен 11, 2012 09:13:52
- Откуда: Брест, Беларусь
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
да нет, просто осваиваю AVR на примере игрушки для себя. подозреваю, что протеус может просто плохо дружить с прерываниями от таймеров, не имел с ними дел еще. в принципе, у меня вроде есть все, чтобы проверить поведение кода в железе, может на выходных дойдут руки.
https://www.dropbox.com/s/bfifikyvy94k7 ... 03.0.1.zip два проекта и схема в протеусе (там конечно нагромождение, но примерно разобраться можно)
https://www.dropbox.com/s/bfifikyvy94k7 ... 03.0.1.zip два проекта и схема в протеусе (там конечно нагромождение, но примерно разобраться можно)
Re: Мелкие вопросы по МК и ПЛИС.
Хочу прошить чип atmega 8 и выставить ее работу от внутреннего генератора частоты на 8МГц
Читаю фьюзы в программаторе AVR910 и у меня два вопроса
Нумерация битов с права на лево - как в программирование или наоборот?
учитывая старший байт могу подозревать что невыделенный бит это Бит Spien и тогда получается нумерация битов с лево на право.

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

а вот как читает фьюзы Codevision Avr

Читаю фьюзы в программаторе AVR910 и у меня два вопроса
Нумерация битов с права на лево - как в программирование или наоборот?
учитывая старший байт могу подозревать что невыделенный бит это Бит Spien и тогда получается нумерация битов с лево на право.
для выбора фьюзов использую калькулятор
а вот как читает фьюзы Codevision Avr
- Вложения
-
- FUSE-48Code.JPG
- (46.37 КБ) 519 скачиваний
-
- FUSE-48-calc.JPG
- (30.26 КБ) 523 скачивания
-
- FUSE-48.JPG
- (24.26 КБ) 1225 скачиваний
Re: Мелкие вопросы по МК и ПЛИС.
решение нашел - оказывается в калькуляторе биты пронумерованы с низу в верх и я не обратил внимание
Бит spien оказывается 5-м
Бит spien оказывается 5-м
- nikolaenkowiktor
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Вс июл 20, 2014 10:01:17
Re: Мелкие вопросы по МК и ПЛИС.
добрый вечер, подскажите, при программировании мк attiny2313 как подключать программатор к мк?
Re: Мелкие вопросы по МК и ПЛИС.
разводишь на плате выводы для MISO MOSI RESET SCK GROUND VCCnikolaenkowiktor писал(а):добрый вечер, подскажите, при программировании мк attiny2313 как подключать программатор к мк?
к этим выводам подключаешь программатор.


