Перейти к содержанию
    

AiDream

Участник
  • Постов

    18
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о AiDream

  • Звание
    Участник
    Участник
  1. Спасибо. Буду разбираться. Кстати, насчет моделирования.. Пробую в proteus, но я слышал что для аналоговых схем он не очень подходит. Наверное есть еще что то? Можете посоветовать?
  2. Здравствуйте! Подскажите пожалуйста хорошую книгу или статьи по расчету RC и LC генераторов на транзисторах. Спасибо!
  3. И снова proteus

    Хочу сложить два сигнала разной частоты. Использую элемент SUMMER из библиотеки протеус. Когда просто хочу посмотреть суммируемый сигнал на осциллографе, все нормально, сигнал правильный. Но когда отправляю сигнал на вход микроконтроллера, сигнал пропадает. Не пойму в чем дело.. Может кто нибудь сталкивался с таким?
  4. В протеус вставляю свой сигнал, на осциллографе появляются фрагменты без импульсов, хотя на самом деле в файле импульсы есть. Что это может быть?
  5. Здравствуйте! В generators протеуса есть вкладка:файл. Как я понимаю, есть возможность создать файл с сигналом и считывать его при симуляции. Кто нибудь может подсказать, как можно создать такой файл? Мне необходимо подавать последовательность импульсов изменяющихся со временем с двух выходов на микроконтроллер. Спасибо!
  6. Спасибо. Но мне то как раз нужно, чтобы на дисплей выводилось значение переменной в тиках таймера 250 кГц) 1. Когда я выставляю ICR1, CodeVision ругается на эту строку undefined symbol. 2. Значит надо использовать переменную long? 3. да, про это я подумал, но думал, что мне хватает разрядности таймера. Теперь понял свою ошибку.
  7. Программу переработал, снова пытаюсь в протеусе посмотреть. На экране 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); } }
  8. Ох, спасибо)) Вот думаю, осилю ли) Поздновато я начал..
  9. ))Спасибо. Буду разбираться. Не учился я на программиста, что поделать))
  10. Спасибо! Как я понимаю, создается матрица-столбец? А считывать можно как num[4], где 4 - номер элемента??
  11. Здравствуйте! Подскажите пожалуйста, как записать несколько значений в таблицу? Как ее объявить, использовать? unsigned int num; // наша переменная // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { num=ICR1L; TCNT1H=0; TCNT1L=0; } По приходу переднего фронта импульса, записываю значение регистра ICR в переменную. А как сделать так чтобы значение записалось в таблицу? И чтобы потом можно было бы считать данные из нее? Спасибо!
  12. Здравствуйте! Подскажите пожалуйста, как записать несколько значений в таблицу? Как ее объявить, использовать? unsigned int num; // наша переменная // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { num=ICR1L; TCNT1H=0; TCNT1L=0; } По приходу переднего фронта импульса, записываю значение регистра ICR в переменную. А как сделать так чтобы значение записалось в таблицу? И чтобы потом можно было бы считать данные из нее? Спасибо!
  13. Спасибо за советы! Для начала пытаюсь настроить прерывание по захвату, настроил таймер. Просто увеличиваю переменную по таймеру, вывожу ее на 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); } } }
×
×
  • Создать...