Atmega 8535 мигаем светодиодом и подключаем кнопку

В предыдущей записи я уже писал как мигать светодиодом – “микроник.рус/6269/” Программу писал в MPLab X 5.35 и компилятор MPlab XC8 версии 2.10, как установить её на Linux смотрите в той же записи.

Код писал в программе MPLab X 5.35 и компилятор MPlab XC8 версии 2.10, как установить её на Linux смотрите здесь:

Скачать MPLAB X v5.35 + MPLAB XC8 можно здесь:
“https://web.archive.org/web/20200724202813/https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive”

“rutube.ru/video/eb28c94503b777a0a6ffc61dc9a5b3ed/”

———————————–

По умолчанию (на стандартных фьюзах) Atmega8535 работает на частоте 1 МГц (смотри онлайн калькулятор фьюзов, например “homes-smart.ru/fusecalc/”).

Стандартные фьюзы Atmega8535 (скриншот из Linux программы AVR Burn-O-Mat – скачать и настроить можно здесь “микроник.рус/7928/”):

Значит если мы программируем в MPLAB X v5.35 задержка кода в delay_ms(1000) будет соответствовать 1 сек.

——————————–

Программировал я только не 5 проводками (но тоже можно), а через самодельный программатор USBasp https://gameforstreet.ru/usb-programmator-na-atmega88/
https://микроник.рус/6300/
и программу AVR8 Burn-O-Mat

Также добавил внешний кварц на 16 МГц, так как до этого делал Arduino из Atmega 8535 (вот здесь можно прочитать как это сделать “https://микроник.рус/6961/”).

Поэтому если будете использовать нижеуказанный код делайте поправку в то, что при установленных по умолчанию фьюзах Atmega 8535 работает на частоте 1 МГц, а в коде ниже с внешним кварцем в 16МГц Atmega 8535 будет работать в 16 раз быстрее, то есть задержка в 1 сек будет равна “delay 16000” (при фьюзах по умолчанию delay 1000).

Схема подключения:

Мигаем светодиодами (1 секунду светим, 1 не светим) код на Си с внешнем кварцем 16МГц:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//#define F_CPU 16000000UL // 16 MHz clock speed
  
int main(void)
{
PORTC=0xFF;
DDRC=0xFF; 
  
while (1)
      {
      PORTC = 0b00011111; 
      //delay_ms(1000);
      _delay_ms(16000);
      PORTC = 0b00000000; 
      _delay_ms(16000);
      }
}

Здесь светодиоды на PC0, PC1, PC2, PC3, PC4 будут мигать, а на PC5, PC6, PC7 – мигать не будут.

Добавить комментарий