27.03.2020, 19:34
|
#3221
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 716
Сказал спасибо: 363
Сказали Спасибо 797 раз(а) в 371 сообщении(ях)
|
Re: Proteus общие вопросы
E_C_C, похоже нужно алгоритм менять/усовершенствовать.
Вот поведение в железе ( ATMEGA8 А, но в данном случае это ничего не меняет)
|
|
|
Сказали "Спасибо" j-Roger
|
|
|
27.03.2020, 19:36
|
#3222
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,832
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Proteus общие вопросы
Осталось понять почему так получается, задумка то вроде нормальная....
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
27.03.2020, 23:58
|
#3223
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 716
Сказал спасибо: 363
Сказали Спасибо 797 раз(а) в 371 сообщении(ях)
|
Re: Proteus общие вопросы
Вот что получилось.
Важные моменты выделены комментариями с угловыми скобками.
PHP код:
|
#include ‹mega8.h›
// ››››››››››››››››››››
// программный счетчик - volatile
volatile unsigned int time_count;
// флаги - volatile
volatile unsigned char flag1,flag2,flag3,flag4,flag5,flag6,flag7;
// ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
unsigned int delay_A,delay_B,delay_C,length_A,length_B,length_C ;
unsigned int delay_time=20;
unsigned int length_pulse=50;
// External Interrupt 1 service routine // прерывание по синхре
interrupt [EXT_INT1] void ext_int1_isr(void)
{
#asm("wdr")
flag1=1;
flag2=1;
flag3=1;
flag4=1;
flag5=1;
flag6=1;
flag7=1;
time_count=0; // сброс программного счетчика
}
// Timer2 10mks
interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
#asm("wdr")
if((flag7) && (time_count ‹ 1000))
{
time_count++;
};
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x0A;
TCNT2=0x00;
OCR2=0x0A;
GICR|=0x80;
MCUCR=0x0C;
GIFR=0x80;
TIMSK=0x80;
SPCR=0x00;
TWCR=0x00;
WDTCR=0x1E;
WDTCR=0x0E;
#asm("sei")
delay_A = delay_time;
length_A = length_pulse+delay_time;
delay_B = delay_time+333;
length_B = length_pulse+delay_time+333;
delay_C = delay_time+666;
length_C = length_pulse+delay_time+666;
while (1)
{
unsigned int time_count_tmp; // врЕменная переменная для программного счетчика
#asm("wdr")
// ››››››››››››››››››››
if (!flag7) continue; // работаем только после синхроимпульса
// "безопасное" чтение 2-байтового счетчика
#asm("cli")
time_count_tmp = time_count; // далее пользуемся копией программного счетчика
#asm("sei")
// ‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹
if((flag1) && ( time_count_tmp ›= delay_A)) // выдыдим импульс 1
{
PORTB.3=1;
flag1=0;
};
if((flag2) && ( time_count_tmp ›= length_A))
{
PORTB.3=0;
flag2=0;
};
if((flag3) && ( time_count_tmp ›= delay_B)) // выдыдим импульс 2
{
PORTB.1=1;
flag3=0;
};
if((flag4) && (time_count_tmp ›= length_B))
{
PORTB.1=0;
flag4=0;
};
if((flag5) && (time_count_tmp ›= delay_C)) // выдыдим импульс 3
{
PORTB.4=1;
flag5=0;
};
if((flag6) && (time_count_tmp ›= length_C))
{
PORTB.4=0;
flag6=0;
flag7=0;
};
};
}
|
P. S.
Да, и самое главное - успехов!
Последний раз редактировалось j-Roger; 28.03.2020 в 14:43.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо j-Roger за это сообщение:
|
|
|
28.03.2020, 00:12
|
#3224
|
Почётный гражданин KAZUS.RU
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от j-Roger
|
2) Использовалась Atmel Studio
|
Вы это серьезно?
|
|
|
|
29.03.2020, 16:00
|
#3225
|
Прохожий
Регистрация: 16.03.2020
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Доброго времени суток, создаю в протеусе проект по USB HID, вопрос такой решил сделать чтобы по нажатию на USBCONN запускалось usb, а при отключении вырубалось (понимаю что нужно сделать прерывание, но не знаю как)
Пример кода:
https://pastebin.com/tzGZHtyF
Сделал пока что костылем, просто в начале программы проверяю включен он или нет, но хочу чтобы можно было в любой момент отключить и подключить
|
|
|
|
29.03.2020, 16:03
|
#3226
|
Прохожий
Регистрация: 16.03.2020
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Не знаю почему но картинка не вставилась
url https://ibb.co/09xKDFg
|
|
|
|
29.03.2020, 16:07
|
#3227
|
Почётный гражданин KAZUS.RU
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от pavelpicaaso
|
решил сделать чтобы по нажатию на USBCONN запускалось usb, а при отключении вырубалось
|
это как понимать?
|
|
|
|
29.03.2020, 16:15
|
#3228
|
Прохожий
Регистрация: 16.03.2020
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Proteus общие вопросы
Сделать (исправить) эмуляцию извлечения, сейчас она сделало через отправку disconnect
https://ibb.co/W2tj2hk
https://ibb.co/Hz4vW7L
|
|
|
|
29.03.2020, 16:23
|
#3229
|
Почётный гражданин KAZUS.RU
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от pavelpicaaso
|
решил сделать чтобы по нажатию на USBCONN запускалось usb, а при отключении вырубалось (понимаю что нужно сделать прерывание, но не знаю как)
|
VCC от USB на любой INT.
|
|
|
|
06.04.2020, 09:22
|
#3230
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,832
Сказал спасибо: 742
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Proteus общие вопросы
Сообщение от j-Roger
|
Вот что получилось.
P. S.
Да, и самое главное - успехов!
|
Еще раз спасибо ! добрался до компьютера, отсимулировал , все замечательно получается .
p/s это алгоритм для распределения импульсов по трем фазам тиристорного регулятора , с возможностью изменять длительность импульса и угол открытия тиристора. Дело за малым - воплотить в железе.
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:43.
|
|