This is an old revision of the document!


Lihtsa viite tekitamine

Kontrollige, et optimeerimine oleks välja lülitatud: -O0 ja et AVRStudios oleks määratud kontrolleri taktsagedus: 14745600

void delay1s(int count){ // ~0,09s
	unsigned int i,j;
	for(i=0;i<count;i++){
	for(j=0;j<65530;j++){asm volatile ("nop");}}
}
 
 
//Väljakutsumine programmist
delay1s(10); //0,9 sek.

Paus taimeriga. Järgnevat pausi tekitamise koodi optimeerimine ei mõjuta.

// Paus millisekundites
// Pausi tegemiseks on kasutusel taimer 0
// Maksimaalne pausi aeg on 4500 ms
// Pausi täpsus on 3%
void aeg(unsigned int t)
{
  // Maksimaalse aja piiramine
  if (t > 4500) t = 4500;
 
  // Sagedusjaguri teguriks 1024
  TCCR1B = _BV(CS12) | _BV(CS10);
 
  // Taimerile sellise väärtuse omistamine, et
  // t millisekundi pärast märgitakse katkestuse bitt
  TCNT1 = 0xFFFF - (unsigned int)((unsigned long)t * (unsigned long)144 / (unsigned long)10);
 
  // Lõputu tsükkel kuni katkestuse bitt märgitakse
  while ((TIFR & _BV(TOV1)) == 0)
  {
  	asm volatile ("nop");
  }
 
  // Katkestuse biti kustutamine toimub seda üheks kirjutades
  TIFR |= _BV(TOV1);
}

Viide kasutades util/delay.h päisfaili. Probleem on maksimaalses väärtuses, mida _delay_ms aktsepteerib. Järgnev funktsioon võimaldab kasutada oluliselt suuremaid viiteid.

void delay_ms(uint16_t ms) // Määrab pausi pikkuse
{
	while (ms)    // tsükkel, kuni ms väärtus on jõudnud nullini
	{
		_delay_ms(1); // 1ms viide
		ms--;  // lahtutab igas tsüklis ühe maha
	}
}
en/examples/delay.1236248433.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0