Код: Выделить всё
while (1)
{
PORTB.0=0;
delay_us(10);
PORTB.0=1;
delay_us(10);
}
Код: Выделить всё
/*****************************************************
Chip type : ATtiny13
Clock frequency : 9,600000 MHz
*****************************************************/
#include <tiny13>
#include <delay>
void main(void)
{
unsigned int k, i;
unsigned char a;
// Port B initialization
PORTB=0xFF;
DDRB=0x07;
while (1)
{
k=3000;
while(k>1){
for(i=1; i<=k; i=i+1)
{
if(a==0){
PORTB.0=0;
PORTB.1=1;
}
if(a==1){
PORTB.1=0;
PORTB.2=1;
}
if(a==2){
PORTB.2=0;
PORTB.0=1;
}
delay_us(5);
}
for(i=k; i<3000>2)a=0;
};
}
пока k>1 мы 3000 раз делаем
PORTB.0=0;
PORTB.1=1;
с интервалом delay_us(5);
Затем 3000 раз
PORTB.0=1;
PORTB.1=0;
Уменьшаем k=k-10; и всё снова пока k>1. Т.е. уменьшая k мы уменьшаем длительность "горения" светодиода. Т.е. только что мы его плавно зажгли и потушили.
Дальше увеличили a++; т.е. перешли ко второму светодиоду и т.д.
У меня же светодиод с этой прошивкой просто быстро моргает И В ПРОТЕУСЕ И В ЖЕЛЕЗЕ. Частота 8 МГц (внутр.) по дефолту для ATTiny45 (и в протеусе и в железе).
1. Как зажечь светодиод в полнакала? 1/4?
2. Как плавно менять?

P.S. Посмотрел datasheet на ATTiny45 там говорится про аппаратный 2-х канальный шим. Но пока не будем об этом (у меня ещё есть и ATTiny15, там нет такого)


