edm2007 писал(а):константин_KoSS_89
P.S. А можно просто прикрутить к контроллеру обиженную женщину. Уверен, гадать на что и когда она обиделась Вы будете очень долго. Тут любой генератор случайностей отдыхает.
Это прописная истина, которая вечна.
edm2007 писал(а):константин_KoSS_89
P.S. А можно просто прикрутить к контроллеру обиженную женщину. Уверен, гадать на что и когда она обиделась Вы будете очень долго. Тут любой генератор случайностей отдыхает.
Этого контроллера мало?Tankor писал(а):ATMega328.
Мурик писал(а):Этого контроллера мало?Tankor писал(а):ATMega328.![]()
![]()
Это столько кода написали или есть какие-то данные, типа картинок, шрифтов и т. д.?

Код: Выделить всё
//*****************************************[ОПИСАНИЕ ПРОГРАММЫ]************************************************
//
// Микроконтроллер: ATMEGA8A
// Частота: 4MHz
//
// SoftPWM 8-channel (0 - максимальная яркость, 255 - светодиод погашен)
//*************************************[ПОДКЛЮЧАЕМЫЕ ФАЙЛЫ И МАКРОСЫ]******************************************
#define F_CPU 4000000UL // тактовая частота
#include <avr/io.h> // работа с AVR
#include <avr/interrupt.h> // работа с прерываниями
#define DDR_LED DDRD // порт светодиодов
#define PORT_LED PORTD
#define LED1 PD7
#define LED2 PD6
#define LED3 PD5
#define LED4 PD4
#define LED5 PD3
#define LED6 PD2
#define LED7 PD1
#define LED8 PD0
//*****************************************[ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ]*********************************************
uint8_t counter = 0; // счетный регистр таймера
uint8_t bright[8] = {40, 70, 100, 150, 180, 200, 220, 250}; // значения яркости 8-ми каналов
//*********************************************[ПРЕРЫВАНИЯ]****************************************************
ISR(TIMER0_OVF_vect) // обработчик таймера 0 по переполнению
{
if (++counter == 255) // если счетчик переполнился
{
counter = 0; // сбрасываем его
PORT_LED = 0xFF; // и гасим все светодиоды
}
else // в ином случае, проверяем, какой светодиод пришло время зажечь
{
if (counter >= bright[0]) PORT_LED &= ~(1 << LED1);
if (counter >= bright[1]) PORT_LED &= ~(1 << LED2);
if (counter >= bright[2]) PORT_LED &= ~(1 << LED3);
if (counter >= bright[3]) PORT_LED &= ~(1 << LED4);
if (counter >= bright[4]) PORT_LED &= ~(1 << LED5);
if (counter >= bright[5]) PORT_LED &= ~(1 << LED6);
if (counter >= bright[6]) PORT_LED &= ~(1 << LED7);
if (counter >= bright[7]) PORT_LED &= ~(1 << LED8);
}
}
//********************************************[ОСНОВНОЙ ЦИКЛ]**************************************************
int main(void)
{
DDR_LED = 0xFF; // весь порт на выход
PORT_LED = 0xFF; // все светодиоды погашены (управляются 0)
TCCR0 |= ((0 << CS02) | (0 << CS01) | (1 << CS00)); // таймер 0: прескаллер - 1
TIMSK |= (1 << TOIE0); // прерывание по переполнению
sei(); // глобальное разрешение прерываний
while(1) // пустой основной цикл
{
}
}
//*******************************************[КОНЕЦ ПРОГРАММЫ]*************************************************

pavel1979 писал(а):если да то какой программатор выбрать в программе?
Metaboard - Arduino-совместимая плата с USB, но без USB-чипа. USB реализовано в микропрограмме ATmega, код основан на драйвере V-USB от Objective Development (на этом драйвере основаны все реализации протокола USB на AVR)
bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?
sasha_1973 писал(а):bumbum писал(а):Как вывести зеркально байт? Есть команда или надо программно решать?
Toggle Переменная_byte