RTV forum PL | NewsGroups PL

Ustawienie stanu licznika timera w SAM7S Gdzie to następuje w kodzie?

oprogramowanie przerwań od timera w sam7s

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Ustawienie stanu licznika timera w SAM7S Gdzie to następuje w kodzie?

[ ]
Guest

Sun Nov 02, 2008 9:46 pm   



Witam.

Analizuje ponizszy przyklad kodu i nie moge dojsc w ktorym to miejscu
ustawiany jest stan licznika od ktorego zaczyna liczyc timer?
Czy moge prosic o pomoc?

#include <targets/AT91SAM7.h>

// Interrupt definitions
#define AIC_SMR(n) (*(&AIC_SMR0 + n))
#define AIC_SVR(n) (*(&AIC_SVR0 + n))

#define AIC_SRCTYPE_INT_LEVEL_SENSITIVE 0x00 /* Level Sensitive */
#define AIC_SRCTYPE_INT_EDGE_TRIGGERED 0x20 /* Edge Triggered */

#define TC0_ID 12

// Timer definitions
#define TC_CLKEN 0x1
#define TC_CLKDIS 0x2
#define TC_SWTRG 0x4

#define TC_CLKS 0x7
#define TC_CLKS_MCK2 0x0
#define TC_CLKS_MCK8 0x1
#define TC_CLKS_MCK32 0x2
#define TC_CLKS_MCK128 0x3
#define TC_CLKS_MCK1024 0x4

#define TC_CLKS_SLCK 0x4

#define TC_CLKS_XC0 0x5
#define TC_CLKS_XC1 0x6
#define TC_CLKS_XC2 0x7

#define TC_COVFS 0x1 /* Counter Overflow Status */
#define TC_LOVRS 0x2 /* Load Overrun Status */
#define TC_CPAS 0x4 /* RA Compare Status */
#define TC_CPBS 0x8 /* RB Compare Status */
#define TC_CPCS 0x10 /* RC Compare Status */
#define TC_LDRAS 0x20 /* RA Loading Status */
#define TC_LDRBS 0x40 /* RB Loading Status */
#define TC_ETRGS 0x80 /* External Trigger Status */
#define TC_CLKSTA 0x10000 /* Clock Status */
#define TC_MTIOA 0x20000 /* TIOA Mirror */
#define TC_MTIOB 0x40000 /* TIOB Status */

static int count;

static void
ledInit(void)
{
PIOA_PER = 0x0000000F;
PIOA_OER = 0x0000000F;
}

static void
ledOn(void)
{
PIOA_CODR = 0xF;
}

static void
ledOff(void)
{
PIOA_SODR = 0xF;
}

void timer_irq_handler(void) __attribute__ ((interrupt ("IRQ")));

void
timer_irq_handler(void)
{
TC0_SR;
if (count++ & 1)
ledOn();
else
ledOff();

// Signal end of interrupt
AIC_EOICR = 0;
}

int
main(void)
{
ledInit();

// Put LDR PC, [PC, #-0xF20] instruction into IRQ vector in order to use
// hardware interrupt vectoring.
*(volatile unsigned int *)0x00000018 = 0xE51FFF20;

// Set up timer interrupt
__ARMLIB_enableIRQ();
AIC_IDCR = 1 << TC0_ID;
AIC_SVR(TC0_ID) = (unsigned)timer_irq_handler;
AIC_SMR(TC0_ID) = AIC_SRCTYPE_INT_LEVEL_SENSITIVE;
AIC_ICCR = 1 << TC0_ID;
AIC_IECR = 1 << TC0_ID;

// Set up timer
PMC_PCER = 1 << TC0_ID; // Enable T0 peripheral clock
TC0_CCR = TC_CLKDIS;
TC0_IDR = 0xFFFFFFFF;
TC0_CMR = TC_CLKS_MCK128;
TC0_IER = TC_COVFS;
TC0_CCR = TC_CLKEN | TC_SWTRG;

while (count < 5);

return 0;
}

--
pozdrawiam

Gotfryd Smolik news
Guest

Wed Nov 05, 2008 8:34 pm   



On Sun, 2 Nov 2008, [ ] wrote:

Quote:
nie moge dojsc w ktorym to miejscu
ustawiany jest stan licznika od ktorego zaczyna liczyc timer?
Czy moge prosic o pomoc?

Czy ten kompilator (lub loader kodu, w "dużych" systemach
operacyjnych czasem robi to sam mechanizm mapowania pamięci
wirtualnej) domyślnie zeruje zmienne statyczne o niezade-
klarowanej wartości?

Quote:
static int count;

....bo wykorzystywanie automatycznego zerowania "dobrym
programowaniem" akurat nie jest (ze względu na
przenośnośc) co nie musi przeszkadzac temu, że działa ;)

pzdr, Gotfryd

Adam Dybkowski
Guest

Fri Nov 07, 2008 12:17 am   



Gotfryd Smolik news pisze:

Quote:
nie moge dojsc w ktorym to miejscu ustawiany jest stan licznika od
ktorego zaczyna liczyc timer?
Czy moge prosic o pomoc?

Czy ten kompilator (lub loader kodu, w "dużych" systemach
operacyjnych czasem robi to sam mechanizm mapowania pamięci
wirtualnej) domyślnie zeruje zmienne statyczne o niezade-
klarowanej wartości?

Chyba standard ANSI C tego wymaga i nie spotkałem się jeszcze z
kompilatorem C, który by nie zerował automatycznie (w kodzie tzw. "C
startup") niezainicjowanych zmiennych globalnych czyli w przypadku gcc
sekcji ".bss".

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Ustawienie stanu licznika timera w SAM7S Gdzie to następuje w kodzie?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map