Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 2.584 pregleda

Najnovija ↓

Problem oko Timer1 u mikroC 18.08.2012. u 17:30 · pre 172 meseca #1
Pravim frekfrenciometar do 50Mhz sa tajmerom 1 kao brojacem i tajmerom 0 koji meri vreme. Problem je u tome sto kad prodje 1 sekunda i kada prikaze vrednost ona ispadne neka bezveze. Na primer za 1khz pokaze 2430Hz, za 10khz prikaze 24319hz, za 100hz prikaze 240Hz. Simulaciju vrsim u proteusu.
Code:

sbit LCD_RS at RA0_bit;
sbit LCD_EN at RA1_bit;
sbit LCD_D7 at RB4_bit;
sbit LCD_D6 at RB3_bit;
sbit LCD_D5 at RB2_bit;
sbit LCD_D4 at RB1_bit;
sbit LCD_RS_Direction at TRISA0_bit;
sbit LCD_EN_Direction at TRISA1_bit;
sbit LCD_D7_Direction at TRISB4_bit;
sbit LCD_D6_Direction at TRISB3_bit;
sbit LCD_D5_Direction at TRISB2_bit;
sbit LCD_D4_Direction at TRISB1_bit;

 long unsigned inc=0,frek=0,broj=0;

char TMR[20]="0";
  void interrupt(void)
{

   if(INTCON.T0IF)
   {

    inc++;
    INTCON.T0IF=0;
   }
   if(PIR1.TMR1IF)
   {
     broj++;
     PIR1.TMR1IF=0;
     
    }

}


void main() {
     INTCON=0b10110000     ;
     OPTION_REG=0b10000000;
     TMR1L=0;
     TMR1H=0;
    LCD_Init();
   LCD_Cmd(_LCD_Cursor_Off);
  Delay_Ms(100);
   PIR1.TMR1IF=0;
   PIE1.TMR1IE=1;
   T1CON=0b00000110;
     INTCON.PEIE=1;
     INTCON.GIE=1;
    T1CON.TMR1ON=1;
    INTCON.T0IF=0;
     for(;;)
     {
          if(inc==1953)
          {
          INTCON.GIE=0;
         T1CON.TMR1ON=0;
          frek=(TMR1H<<8)+TMR1L+(65535*broj);
          LongToStr(frek,TMR);
          LCD_Out(1,1,TMR);
          broj=0;
           TMR1L=0;
     TMR1H=0;
          T1CON.TMR1ON=1;
          INTCON.GIE=1;
          inc=0;
         }
     }
     
} 



Gde gresim i sta da promenim da bi proradio program. Inace kontroler je 16f628a i koristim interni clock koji je 4Mhz. Hvala unapred
Re: Problem oko Timer1 u mikroC 18.08.2012. u 19:30 · pre 172 meseca #2
Interni oscilator ti nije dobar za takvo merenje. Za proveru mozes recimo posle:

if(inc==1953)
{


da toglujes neki pin cisto da vidis koliko ti traje merenje ali da budem iskren ni u kodu ne vidim odakle ovolika razlika.
Potpis
gorankg
Re: Problem oko Timer1 u mikroC 19.08.2012. u 13:21 · pre 172 meseca #3
Vec sam proverio, tacno jedna sekunda kolko mi i treba. Pokusao sam i sa internim i sa eksternim isto je. A u data sheet-u pise da je preciznost internog takta +-1%.
Re: Problem oko Timer1 u mikroC 19.08.2012. u 18:02 · pre 172 meseca #4
Proveri ove izraze:

frek=(TMR1H<<8)+TMR1L+(65535*broj);
LongToStr(frek,TMR);

mozes i koristeci simulator samo umesto TMR1H i TMR1L stavi neke unsigned char konstante. Ja nemam ME kompajler.

Drga stvar koju mozes da uradis je da dovedes 1KHz signal i ispises nakon jedne sekunde TMR1H i TMR1L.
Potpis
gorankg
Re: Problem oko Timer1 u mikroC 20.08.2012. u 03:25 · pre 172 meseca #5
Sa int na TMR1H nista ne dobijam. E sad sam isao step by step animaciju u proteusu sa sve osciloskopom, stavio sam frekfrenciju na 10Hz, kako bih lakse pratio signale i posmatrao sam kako se sada menja TMR1H. Step je isao na svaki puls ulaznog signala i gle cuda. Na svaki step koji dodje na ulaz, za rastuci signal timer1 broji 2 puta a za svaki opadajuci broji 1. Tako da za jedan inpuls on broji 3puta. Da li je ovo do proteusa i da li bi ovo radilo kada bih ga napravio ovako?
Re: Problem oko Timer1 u mikroC 20.08.2012. u 09:54 · pre 172 meseca #6
Ja sam nekoliko puta isto imao problema sa simulacijom u PROTEUS-u, iako mi je program izgledao sasvim u redu. OK, rekoh, problem u simulatoru, napraviću ja uredjaj i to će da radi. Medjutim, kako je radilo u PROTEUS-u, tako je radilo i na pravom hardveru. Ne kažem da je simulator idealna stvar, ali šanse da su se zeznuli oko TMR1 su jako jako male. Problem je, najverovatnije, u tvom programu.

Pozdrav.
Sinisha
Re: Problem oko Timer1 u mikroC 20.08.2012. u 10:47 · pre 172 meseca #7
RS i EN linije su ti na RA0 i RA1, ocigledno da LCD radi u PROTEUSU iako te pinove MCU-a nisi postavio kao digitalne CMCON = 0x07; Simulator moze da gresi ali mislim da mozes vrlo brzo da proveris matematiku koju sam ti prethodno predlozio.
Potpis
gorankg
Re: Problem oko Timer1 u mikroC 20.08.2012. u 14:09 · pre 172 meseca #8
Citat:
rsinisa:Ne kažem da je simulator idealna stvar, ali šanse da su se zeznuli oko TMR1 su jako jako male.


posebno sa 628A koji je implementiran jako dobro!!

@OP, da li si gledao warninge u ISIS-u kada si terao simulaciju? Obicno ti tamo da mnogo korisnih podataka. Mogao si i da zakacis ovde dsn fajl (ne vidim da si ga okacio) ili bar png ili pdf da vidimo kako si to spojio
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme