Jump to content

Leo

Members
  • Content Count

    131
  • Joined

  • Last visited

Community Reputation

-3 Плохой

About Leo

  • Rank
    Осваивающийся

Информация

  • Пол
    Мужчина
  • Город
    москва

Электроника

  • Стаж в электронике
    1-2 года
  1. У меня предположение с верхнего транзистора напряжение заходит с нижнего выходит нижняя полу волна. А как работает при высоком напряжении полу мост 300В мало кто может объяснить.
  2. Я рад что кто то разбирается и написал. Но заполнение переменной по битно структура мне не очень понятна.Про структуры я почитаю я ими не пользовался. А заполнение переменной сдвигом почему это не правильно. Массив больше для этого подходит.Хочу понять что где лучше использовать?
  3. Странно ни кто не знает как лучше сохранить данные по битно в переменную чем плох сдвиг и правильно ли я думаю использовать массив. И как массив сравнивают с переменной.
  4. Здесь не должно быть сложностей если знаешь о чем идёт речь.
  5. Что бы сохранить изменение компаратора подойдёт одномерный массив bit ?
  6. xc=1<<1; По мойму это команда на сдвиг по регистру. 0x20 (b100000) в регистре ACSR Да не регистр а переменная имелась в виду. И как лучше написать?
  7. Через отладчик не прогонял. Только в Протеусе. Но переменную от оптимизации защищал в начале что то дописывается это не помогло.
  8. Есть трудность. Получая значения от компаратора и пытаясь занести их в регистр методом сдвига. Заполнить переменную не получается. Проверяю в Протеусе. Под скажите что не так? Chip type : ATtiny2313 Clock frequency : 8,000000 MHz Memory model : Tiny External RAM size : 0 Data Stack size : 32 *****************************************************/ #include <tiny2313.h> char n=0; int xc=0x00; // Timer 1 output compare A interrupt service routine interrupt [TIM1_COMPA] void timer1_compa_isr(void) { n++; ACSR=0x48; } // Analog Comparator interrupt service routine interrupt [ANA_COMP] void ana_comp_isr(void) { if ((ACSR&0x20)==0x20) { PORTB.0=0; } else { xc=1<<1; //Здесь регистр не заполняется PORTB.0=1; ACSR=0x40; } } // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0x07; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 1000,000 kHz // Mode: CTC top=OCR1A // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: On // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x02; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x08; OCR1BH=0x00; OCR1BL=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x41; // Analog Comparator initialization // Analog Comparator: On // Digital input buffers on AIN0: On, AIN1: On DIDR=0x00; // The Analog Comparator's positive input is // connected to the Bandgap Voltage Reference // Interrupt on Output Toggle // Analog Comparator Input Capture by Timer/Counter 1: Off //ACSR=0x48; // Global enable interrupts #asm("sei") while (1) { #asm("cli") if(n==16){ if (xc&1){ PORTB.2=1; } else{ PORTB.2=0; } xc>>=1; } #asm("sei") }; }
  9. Так и хотел но обнаружив два регистра сравнения может есть ещё способ. Чем мир и прекрасен велосипеды разные нужны.
  10. Более высокую частоту генеришь в частоте на порядок более низкой в определенной последовательности.
  11. Вопрос был в не понимание почему в CV T0 два регистра сравнения за этим спросил почему два и можно оба одновременно использовать. А у меня интерес генерировать частоту и выдавать на ножку с некоторой периодичностью.
  12. Ты о выводе результатов сравнения на ножки OCnx.
  13. Во первых Григорий знает как! Но не уточняет этого. Во вторых сброс таймера можно отключить.Прерывание и он продолжит до конца. В третьих таймером управляет управляющая логика значит её надо настроить.
×
×
  • Create New...