AiDream
Участник-
Постов
18 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о AiDream
-
Звание
Участник
-
RC и LC генераторы
AiDream ответил AiDream тема в Вопросы аналоговой техники
Спасибо. Буду разбираться. Кстати, насчет моделирования.. Пробую в proteus, но я слышал что для аналоговых схем он не очень подходит. Наверное есть еще что то? Можете посоветовать? -
RC и LC генераторы
AiDream опубликовал тема в Вопросы аналоговой техники
Здравствуйте! Подскажите пожалуйста хорошую книгу или статьи по расчету RC и LC генераторов на транзисторах. Спасибо! -
И снова proteus
AiDream опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Хочу сложить два сигнала разной частоты. Использую элемент SUMMER из библиотеки протеус. Когда просто хочу посмотреть суммируемый сигнал на осциллографе, все нормально, сигнал правильный. Но когда отправляю сигнал на вход микроконтроллера, сигнал пропадает. Не пойму в чем дело.. Может кто нибудь сталкивался с таким? -
вопрос про proteus
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
В протеус вставляю свой сигнал, на осциллографе появляются фрагменты без импульсов, хотя на самом деле в файле импульсы есть. Что это может быть? -
вопрос про proteus
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
да уж)) Спасибо! -
вопрос про proteus
AiDream опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Здравствуйте! В generators протеуса есть вкладка:файл. Как я понимаю, есть возможность создать файл с сигналом и считывать его при симуляции. Кто нибудь может подсказать, как можно создать такой файл? Мне необходимо подавать последовательность импульсов изменяющихся со временем с двух выходов на микроконтроллер. Спасибо! -
Таймеры и прерывания
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Спасибо. Но мне то как раз нужно, чтобы на дисплей выводилось значение переменной в тиках таймера 250 кГц) 1. Когда я выставляю ICR1, CodeVision ругается на эту строку undefined symbol. 2. Значит надо использовать переменную long? 3. да, про это я подумал, но думал, что мне хватает разрядности таймера. Теперь понял свою ошибку. -
Таймеры и прерывания
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Программу переработал, снова пытаюсь в протеусе посмотреть. На экране lcd появляется какой то значок, только не то, что мне надо. Вот думаю в чем проблема. Может переменные надо переводить где то из одной системы исчисления в другую. Или Fuse выставлять. Кстати, почему то в протеусовской модели Atmega88 нельзя поставить тактовую частоту 16 МГц. Добавлю код, посмотрите пожалуйста, кому не трудно. #include <mega88.h> // Подключение библиотеки LCD модуля #include <alcd.h> //Объявление переменных unsigned int EdgeR, EdgeF;//время первого и второго импульса unsigned long PulseClocks;//количество тактовых импульсов внутри импульса на входе ICP // Прерывание таймера 1 по событию захват на входе PB0 interrupt [TIM1_CAPT] void timer1_capt_isr(void) { static unsigned char a;//локальная статическая переменная if(!a) //если чётный вход в обработчик по нарастающему фронту (новое измерение периода) { EdgeR = ICR1L; //запоминаем значение счётчика a = 1; //изменяем переменную для завершения текущего измерения } else //если нечётный вход в обработчик по нарастающему фронту (завершение текущего измерения) { EdgeF = ICR1L; //запоминаем значение счётчика a = 0; //изменяем переменную для нового измерения периода PulseClocks = ((unsigned long)EdgeF - (unsigned long)EdgeR);//вычисляем период } } void main(void) { // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTB=0xFF; DDRB=0x00; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 250,000 kHz // Input Capture on Rising Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: On TCCR1A=0x00; TCCR1B=0x43; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x20; lcd_init(16); // Global enable interrupts #asm("sei") while (1) { // выводим значение переменной на экран lcd_gotoxy(0,0); lcd_putchar(PulseClocks); } } -
Как создать таблицу значений?
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Спасибо! -
Как создать таблицу значений?
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Ох, спасибо)) Вот думаю, осилю ли) Поздновато я начал.. -
Как создать таблицу значений?
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
))Спасибо. Буду разбираться. Не учился я на программиста, что поделать)) -
Как создать таблицу значений?
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Спасибо! Как я понимаю, создается матрица-столбец? А считывать можно как num[4], где 4 - номер элемента?? -
Как создать таблицу значений?
AiDream опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Здравствуйте! Подскажите пожалуйста, как записать несколько значений в таблицу? Как ее объявить, использовать? unsigned int num; // наша переменная // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { num=ICR1L; TCNT1H=0; TCNT1L=0; } По приходу переднего фронта импульса, записываю значение регистра ICR в переменную. А как сделать так чтобы значение записалось в таблицу? И чтобы потом можно было бы считать данные из нее? Спасибо! -
Как создать таблицу значений?
AiDream опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
Здравствуйте! Подскажите пожалуйста, как записать несколько значений в таблицу? Как ее объявить, использовать? unsigned int num; // наша переменная // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { num=ICR1L; TCNT1H=0; TCNT1L=0; } По приходу переднего фронта импульса, записываю значение регистра ICR в переменную. А как сделать так чтобы значение записалось в таблицу? И чтобы потом можно было бы считать данные из нее? Спасибо! -
Таймеры и прерывания
AiDream ответил AiDream тема в MCS51, AVR, PIC, STM8, 8bit
Спасибо за советы! Для начала пытаюсь настроить прерывание по захвату, настроил таймер. Просто увеличиваю переменную по таймеру, вывожу ее на lcd. Сделал модель в протеусе, но что то не выводит ничего на индикатор. Буду благодарен если кто то подскажет, что я делаю не так. #include <mega88.h> // Alphanumeric LCD Module functions #include <alcd.h> unsigned int numb; // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { TCNT1H=0; TCNT1L=0; numb++; } void main(void) { // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; TCCR1A=0x00; TCCR1B=0x43; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2A output: Disconnected // OC2B output: Disconnected ASSR=0x00; TCCR2A=0x00; TCCR2B=0x00; TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=0x00; EIMSK=0x00; PCICR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x20; // Timer/Counter 2 Interrupt(s) initialization TIMSK2=0x00; // USART initialization // USART disabled UCSR0B=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; ADCSRB=0x00; DIDR1=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTD Bit 0 // RD - PORTD Bit 1 // EN - PORTD Bit 2 // D4 - PORTD Bit 4 // D5 - PORTD Bit 5 // D6 - PORTD Bit 6 // D7 - PORTD Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { { lcd_gotoxy(0,0); lcd_putchar(numb/10+0x30); lcd_putchar(numb%10+0x30); } } }