logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

pomiar czasu pisania ciągu znaków zrealizowany na AT91R40008

fresostrowiec 24 Sty 2009 13:14 780 2
  • #1 6046737
    fresostrowiec
    Poziom 10  
    Witam wszystkich czytających ten wątek
    na laboratoria ma zrobić program, który będzie zliczał czas wpisywania określonego ciągu znaków z klawiatury
    nie jest najlepszy z C więc to co zamieszczam poniżej może do końca nie być dobrze zrealizowane
    #include <91R40008.H>         // definicje dla ukladu AT91R40008
    #include <stdio.h>
    
    
    unsigned int mili = 0;
    float ttt;
    
    // odczyt znaku z ukladu UART 0
    int getchar (void)
    {                    
      while (!(US0_CSR & US_RXRDY));
      return (US0_RHR);
    }
    
    void obsl_tc0 (void) __irq
    {
    	mili++;
    
      	ttt = TC0_SR;
    	AIC_EOICR = 0x00;							
    }
    
    void  main (void)  
    {
    unsigned int i = 0;
    unsigned int j = 0;
    
    
    	PIO_PDR  = (1<<PIORXD0) | (1<<PIOTXD0);  // Enable RXD and TXD              
    	US0_MR   = US_CHRL_8 | US_PAR_NO;        // 8 bits, no Parity, 1 Stop bit   
    	US0_BRGR = 430;                         // Baud Rate    
    	US0_CR   = US_RXEN | US_TXEN;            // Enable RX and TX                
    	
    	TC0_RC  = 8250;
    	TC0_IER = TC_CPCS;
      	TC0_CMR = TC_CAPT|TC_CPCTRG|TC_CLKS_MCK2;
    
    	AIC_SVR4 = (unsigned long)obsl_tc0; 		 
    	AIC_SMR4 = AIC_SRCTYPE_EXT_POSITIVE_EDGE;	 
    	AIC_IECR = (1<<TC0_ID);  					 
    	
    	
    	j = getchar();
    	
    	TC0_CCR	= 	TC_CLKEN|TC_SWTRG;
    	
    	for(i=1; i<=15; i++) j = getchar();
    	
    	TC0_CCR	=	TC_CLKDIS;
    	
    	
    	printf("%d", mili);
    }

    kompilator nic nie wyrzuca ale jakoś nie mogę zmusić terminala RS232 do współpracy z tym programem
    za wszelkie uwagi i rady będę wdzięczny
  • #3 6047267
    fresostrowiec
    Poziom 10  
    tutaj jest datesheets
    Link
REKLAMA