Stmívání dveří

Z MAM wiki

Verze z 15. 4. 2012, 20:58; Korbekar (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Pokud jste někde podobný kód viděli, pochází jen z mojí předešlé práce a proto není odkud citovat Jinak jsem sháněl rozumy (stylopis, bit_is_set a IO operace na následujících webech AVR Basic code Linux Atmel AVR Tutorial AVR Tutorial - Interrupts Přerušení

#include <avr/io.h>
#include <avr/iom8.h>
#include <util/delay.h>

int main()
{
	unsigned char predchozi = 0;
	unsigned char a = 255;	

	DDRD = 0xFF; // výstup
	PORTD = 0x00; // obrácená logika, 1 = 0V, 0 = 5V

	DDRC  = 0x00; // vstup
	PORTC = 0xFF; // pull-ups na vstupu

	DDRB = (1 << PB3);
	// nastavÝme PWMko
	TCCR2 = 0b01111001;
	// 0-FOC2 vypnutÚ nucenÝ
	// 1-WGM20 - druhř bit pro Mode, 11 = Fast PWM
	// 1-COM21
	// 1-COM20 - in FastPWM mode - clear OC2 at Bottom (non inverting)
	// 1-WGM21 - prvnÝ bit pro Mode, 11 = Fast PWM
	// 100 - Prescale clk/64 speed
	
	OCR2 = 255;

	while(1){
	
	if(bit_is_set(PINC,PINC5) && predchozi == 1)
		{
		predchozi = 0;
		zhasni();
		}
		else 
		  if(bit_is_clear(PINC, PINC5))
		    {
			predchozi = 1;
			OCR2 = 0;
			}
	}
}

void zhasni()
  {
  unsigned char a = 0;
  _delay_ms(5000);	
	while(1){
		_delay_ms(10);
		OCR2 = a;
		a++;
		if(a==0)break;	
	}
  }
Osobní nástroje