forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
ATmega16 stopky - nastavení čítače

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
kalmar
Nováček
Nováček


Založen: 26.12.2016
Příspěvky: 3

PříspěvekZaslal: 26 prosinec 2016, 18:26    Předmět: ATmega16 stopky - nastavení čítače Citovat

Zdravím, dělám projekt stopky s Atmega16 a chci si zde ověřit zda mám správně nastavený čítač. V obvodu mám 16 MHz krystal. Čítač je nastaven v CTC modu. A počet cyklů jsem vypočítal podle jednoho tutoriálu.

http://solarskit.wz.cz/avrprogramming.html

Chci aby se čítač inkrementoval každou ms, z toho vyplývá výpočet 1ms / 62,5 ns = 16000 cyklů a požil jsem 64predděličku, tak že 16000/64 = 250.


pokud vše chápu správně mělo by to být v pořádku Smile

Zde je kod:

kód:
/*
 * stopky.c
 *
 * Created: 22.12.2016 17:13:33
 *  Author: User
 */



#define F_CPU 16000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>



volatile uint16_t   msec = 0;   // milisekundy
volatile uint8_t   sec = 0;   // sekundy
volatile uint8_t   min = 0;   // minuty
volatile uint8_t   start_stop_znak = 0; // nastavení start/stop




void tlacitka_beh(void);






int main(void)
{
   
   
   //------------------------------------------------------------------>porty
   
   DDRD &= ~((1 << PD2) | (1 << PD3) | (1 << PD4)); // nastavení vstupu start/stop/reset
   PORTD |= (1 << PD2) | (1 << PD3) | (1 << PD4) ; // nastavení pull up rezistoru
   
   
   
   
   
   //-------------------------------------------------------------------->časovač
   
   TCCR0 |= (1 << WGM01) | (1 << CS00) | (1 << CS01); // CTC mod a 64 dělička
   TIMSK | = (1 << TOIE0); // přerušení při přetečění TCNT0 
   
   OCR0 = 249;     // porovnavaci registr
   TCNT0 = 0x00;
   
   sei(); // povolí globální přerušení
   
   
   while(1)
    {
       
      //volani fci + multiplexni spinani dopsat
      tlacitka_beh();
         
   }
}




ISR(TIMER0_COMP_vect)
{
   if(start_stop_znak)
      msec++;
   
   if(msec >= 1000) // 1000 ms = 1 s
   {
      msec = 0;
      sec++;   
   }   
   
   if(sec >= 60) // 60 s = 1 m
   {
      sec = 0;
      min++;
   }
   
   if(min >= 100) // max 100 m
   {
      min = 0;
   }
}




void tlacitka_beh(void){
   
   
   if((PIND & (1 << PD2)) == 0) //stisk start
   {
      start_stop_znak = 1;
      TCCR0 |= (1 << CS00) | (1 << CS01);
   }

   
   
   
   if((PIND & (1 << PD3)) == 0) //stisk stop
   {
      start_stop_znak = 0;
      TCCR0 &= ~((1 << CS00) | (1 << CS01)); //zastavení čítače
   }
   
   
   
   if((PIND & (1 << PD4)) == 0) //stisk reset
   {
      start_stop_znak = 0;
      TCCR0 &= ~((1 << CS00) | (1 << CS01));
      msec = 0;
      sec = 0;
      min = 0;
      TCNT0 = 0;
   }
   
   return;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 471

PříspěvekZaslal: 28 prosinec 2016, 0:26    Předmět: Citovat

A proč si to neověříš v simulátoru (AVR STUDIO) ?
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
stanleyv
Profesionál
Profesionál


Založen: 5.3.2008
Příspěvky: 155

PříspěvekZaslal: 29 prosinec 2016, 8:07    Předmět: Citovat

Ja skôr nechápem, prečo túto tému založil 2x? ..... ale budiž, stalo sa, tak aspoň napíšem, že sa zadarilo, aby jedno bolo zmazané (nevim, či je možnosť to zmazať priamo tazateli).

Ale čo tak použiť googla (samozrejme mimo simulátora ako radíš Radius) a nájsť si avr timer calculator, alebo ak má smartfón, tak tam je tiež po ....... strašne veľa aplikácií, ako nastaviť registre aby to robilo to, čo má.....

//píšem pomocou rýchlej odpovede, takže odkazy nedávam....
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)