Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V2
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Embedded C. Et spm?

Af Mega Supporter Fidusen | 25-03-2014 10:53 | 1480 visninger | 2 svar, hop til seneste
Hey hol Jeg har i kedsomhed kastet mig over at skrive noget indlejret software til en mikroprocessor. Jeg har skaffet mig et demoboard til en Renesas RL78 og bruger IAR Embedded Workbench + E1 debugger til at lege med det :) Jeg har hentet noget demo-kode, som kan få LEDerne på boardet til at blinke. Det, der nu undrer mig, er hvordan timeren fungerer. I r_globals.c er der defineret: uint32_t loop_counter; volatile __saddr uint16_t tick_10ms; volatile __saddr struct { uint16_t extP0_flag:1; uint16_t TM00_flag:1; ... Hvorefter der i main.c findes: if ((tick_10ms % PERIOD_1SEC) == 0x00 ){ LED01 = ~LED01; // toggle LED01 } Det lader til, at tick_10ms tæller op 100 gange i sekundet. Men hvordan hulen er bindingen mellem prædikatet tick_10ms og det register, der tæller op? Betyder "__saddr" et bestemt register, og hvordan finder man ud af, hvilket register, der bliver snakket om? Og hvad er betydningen af, at der er to linjer: volatile __saddr uint16_t tick_10ms; volatile __saddr struct {.... Først benævner man __saddr med "tick_10ms" og bagefter laver en struct? Jeg er en smule forvirret. Nogen, der er skarpe i embedded C ? :)
--
#1
Fidusen
Mega Supporter
25-03-2014 10:57

Rapporter til Admin
Hov, jeg kan se, at i "r_cg_timer_user.c" findes: __interrupt static void r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ TM00_flag = TRUE; tick_10ms++; /* End user code. Do not edit comment generated here */ } Hvilket forklarer, hvordan tick_10ms tæller op ved hvert interrupt. Men, hvad er betydningen af "__saddr"? Er det et namespace eller et prædikat, som linkeren kan bruge til at mappe variablen til et bestemt register?
--
#2
bRi
Elitebruger
25-03-2014 11:12

Rapporter til Admin
#0 Nvm, kan godt se det er C :)
--
Intel I7 3770K [email protected], 16GB-DDR3 1600Mhz 9-9-9-24-2, Asus GeForce GTX680 TOP, Samsung 830 256GB SSD, ASUS P8Z77-V Pro

Opret svar til indlægget: Embedded C. Et spm?

Grundet øget spam aktivitet fra udlandet, er det desværre ikke muligt for dig, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login