• ×   Вставлено в виде отформатированного текста.   Восстановить форматирование

      Разрешено не более 75 смайлов.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Похожие публикации

    • Автор: forestdozor
      Здравствуйте!

      Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328.
      Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается.
      Подскажите пожалуйста, что делать?
      Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль.
      Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается...
      Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать.
       
       
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H = 0x00;
      TCNT1L = 0x00;
      }
      // Timer1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
       
             TCNT1H = 0x00;
             TCNT1L = 0x00;           // Это уже уровень танцев с бубном "авось поможет" - не помогает.
         
              current_timp++;          // Все упрощено до максимума. Мне бы он хоть количество периодов для начала...
              
        //  }
      }
      // Прерывание по переполнению первого таймера
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      {
      // Обнуление счетного регистра.
      TCNT0=0x00;

          
          counter ++;
          if (counter > 10)
          {
                  lcd_clear();
                  sprintf(buffer,"%d us", current_timp);
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                  counter = 0;
          }
          
          
      }

      // Главный цикл программы
      void main(void)
      {

      #pragma optsize-
      CLKPR=(1<<CLKPCE);
      CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif

      // Port B initialization
      // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
      // Port C initialization
      // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
      DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
      // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
      PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
      // Port D initialization
      // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее.
      TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
      TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;
       
      // Настройка таймера 1
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      // Разрешение прерывания по переполнению таймера 0
      TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
      // Timer/Counter 1 Interrupt(s) initialization
      TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
    • Автор: getshket
      Продам ПУСТЫЕ печатные платы для гальваноразвязки под amanero для этого цапа.  Автор не я, проект тут.
      Цена 300 рублей.


    • Автор: getshket
      Продам ПУСТЫЕ платы для сборки цапа на AK4490. Автор плат не я, ссылка на проект. Размер ПП 100*67 мм. Цена одной платы 300 рублей. Территориально - Уфа. Отправлю почтой.
       
       


    • Автор: serglobo
      Продам заводские печатные платы предварительного усилителя (по схеме ПУ Натали) входная часть без темброблока под одиночные ОУ. Цена 100грн. Тел (Украина) 05О6751256 Сергей.

       
       
       
       
      Платы регулятора громкости с селектором каналов (8 каналов) на PGA2311 с возможность дистанционного управления. Цена комплекта из двух плат 200грн. Схему предоставляю, а также возможно програмирование микроконтролера.
       

       
       
      Плата ЦАПа на АК4490 для транспорта Аманеро. Управление софтовое, воспроизведение до 256ДСД. Цена 300грн. Все вопросы в личку или по телефону.
       

    • Автор: Avatoro
      Всем привет. В общем есть простая мигалка по переполнению нулевого таймера. ATmega328. В АВР студии все прекрасно работает, в протеусе-0 реакции. Либо протеус тупит, либо я не настроил в нем что-то, так как собрал в железе и прошил - все работает замечательно. Файлы исходника, прошивки и протеуса прилагаю.
      P_5.asm
      P_5.hex
      Timer.pdsprj
  • Сообщения

    • открываешь схему СВАРОЧНИКА МОСТОВОГО  там и фазировка и все есть 216_MMA250_ARC.pdf
    • В эти 2В как-то слабо верится. Как измеряли выход с щелевого датчика? Выход датчика еще куда-то присоединен?
    • Гадаю, какую очередную глупость придумает правительство, что скоро станет страшно дышать в собственном доме. А отвёртку с магнитным наконечником, она может почувствовать? Надеюсь, она сделана с учётом некоторого критического значения поля, способного воздействовать на правильность показаний счётчика? Т.е. не будет реагировать на "безопасный" для показаний счётчика уровень поля?
    • Вопрос не в том что бы разобраться в коде, вопрос в том сколько на это времени уходит. Если ты пишешь по жизни одно и тоже, то к тебе и вопросов нету, а у меня есть проект в котором чистого кода около 4МБ, и это просто проект, других проектов другой направленности кучу. И я не встречал пока программиста в моей сфере кто бы без проблем вносил все правки в свои проекты годовой давности. Хотя я уже понял что ты по сути дальше ВОТ |= ЭТОГО не ушел. Как я и писал выше, разговаривать нам с тобой не о чем. Я чет пока от тебя вобще никакой аргументации не увидел, даже детсадовской. Пока твой треп даже на демагогию не катит, так - пережитки собственного самодовольствия.
    • Хранить в одной комнате можно. Близко не подносите...
    • Я так понимаю у klaid1971 притензии не к регулятору,а к блоку спектроанализатора.
    • Насколько чувствителен индикатор? Дома имеются неодимовые магниты большой силы. Боюсь теперь хранить в одной комнате со счётчиком.