Static

ATmega8, подключение питяния

17 сообщений в этой теме

Static    7

Доброго дня всем!
Не так давно решил опробовать использовать в схемах ATmega в корпусе TQFP и возник такой вопрос. На ней имеется аж три ноги на "-" и две под "VCC". Подсоединять нужно все или можно только по одной любой?

Заранее благодарен за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vascom    651

Смотри даташит.

Но по хорошему надо подключать все. Иначе может работать нестабильно при высокой нагрузке и/или высоком выходном токе на выходных ногах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    372

Подсоединяются все. Но там цифровая и аналоговые (земля и питание). Аккуратно с разводкой и иногда на AVCC ставят фильтр (дроссель и конденсатор). Как-то примерно так

TesterZener02big.PNG

Изменено пользователем KomSoft

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263
4 часа назад, KomSoft сказал:

там цифровая и аналоговые (земля и питание)

Специальной аналоговой земли в AVR-ках вроде нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    637

Есть там аналоговая земля, только она соединена технологическим низкоомным резистором(1...10 Ом) на цифровую.  Резистор этот слабый его легко спалить и/или получить проблем при работе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    263

где про это почитать поподробнее? Или хотя бы как проверить экспериментально?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    372

Кстати, Ctrl-F в даташите выдает только это единственное упоминание про agnd

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KomSoft    372
9 hours ago, Alexeyslav said:

аналоговая земля, только она соединена технологическим низкоомным резистором(1...10 Ом) на цифровую. 

Я так понял, что все поняли :D, что этот резистор внутри? И копнули даташит. Пытаемся найти, где он. Или в МС все замли соединены вместе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    637

Он технологический, на кристалле. В первых версиях контроллера его небыло. По факту, это просто дорожка на кристалле, но она слишком тонкая чтобы выдерживать рабочие нагрузки порта поэтому вывод к земле подключать обязательно. А если не подключить, оно вроде и будет работать но эта цепь прямо в сердце кристалла будет собирать все наводки внутренние, АЦП потеряет в разрядности и т.п.

Даже если выводы соединены, это всеравно может стать проблемой при работе АЦП - даже на малом сопротивлении будут падать миливольты и высокая разрядность АЦП превратится в ничто. Поэтому всегда нужно внешнее подключение аналоговой земли к общему проводу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
солар    185
5 часов назад, Alexeyslav сказал:

поэтому вывод к земле подключать обязательно

Какой? Его номер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

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

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

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

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

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

Загрузка...

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

    • Автор: Денис Оробей
       Помогите написать простую задачку (для вас - простую, а я не шарю), на плате контроллера-конструнтора KIT-8515 нужно  сделать вот это: "Пусть движковыми переключателями задаются два четырехзначных операнда.  Напишите и протестируйте программу, при работе которой после нажатия кнопки 1 операнды складывались, а при нажатии кнопки 2 операнды вычитались, а результат операции выводился на светодиоды"
      Прикреплённый файл - начало задачки.
      Заранее благодарствую:)
      123.rar
    • Автор: Николай Зубий
      Как сделать  устройство, выводящие на индикатор время, прошедшее с момента последней перезагрузки контроллера?
    • Автор: 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);
    • Автор: Aizenkevich
      Пришел тороидальный трансформатор, брал с рук. ТТП-120 2х18 3А.
      Как с помощью мультиметра понять он рабочий или нет?
      И как он подключается?
      Просто может я что то не так делаю. Есть шнур с розеткой, приматал концы к двум черным проводам от трансформатора (черный-черный - это вход). Мультиметр прикладываю к проводам выходным. А там по нулям. Я ничего в этом не понимаю вообще.


    • Автор: voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c