» »

[C] - Atmel AVR

[C] - Atmel AVR

slovencl ::

Prepisano iz kode za mikrokontroler:

void uart0Init(uint16_t baud, uint8_t mode, uint8_t fmode)
{
// set port pins for UART0
PINSEL0 = (PINSEL0 & ~U0_PINMASK) | U0_PINSEL;

U0IER = 0x00; // disable all interrupts
U0IIR; // clear interrupt ID
U0RBR; // clear receive register
U0LSR; // clear line status register

Kakšna je finkcija ukaza U0RBR;? A ima sploh kakšno vlogo?
  • spremenilo: CCfly ()

Matako ::

To kar imaš tukaj je ali en kup makrov, ki olajšajo programiranje tega mikrokontrolerja - katerikoli že je.

Spominja pa na kak UART serijski kontroler...

Kakorkoli, očitno ne gre za nobeno vgrajeno ključno besedo lai funkcijo iz standardnih knjižnic.

Kar rabiš je dokumntacija za ta mikrokontroler in/ali to razvojno okolje/knjižnice.

Sploh pa.. ni nujno, da je C++ (ne vidi se iz kode) - razvojn okolja za mikrokontrolerje v glavnem raje uporabljajo C.
/\/\.K.

Zgodovina sprememb…

  • spremenil: Matako ()

ql000 ::

Ta funkcija nastavi UART kanal 0. Tisti klici odspodaj U0IER = 0x00 itd. nekaj naredijo z ustreznimi registri (postavijo določene zastavice v registru) v mikrokontrolerju. Fajn bi bilo vedet, za kater mikrokontroler gre in v katerem razvojnem okolju je ta koda napisana.

P.S.
Sem že našel. Gre za družino Atmelovih AVR uC-jev. (Me love Google! :D )

Zgodovina sprememb…

  • spremenil: ql000 ()

slovencl ::

Sploh ni avr ampak je philipsov arm. Za kaj je kateri register ni važno. Moti me ukaz ;. Pa če je problem ker je to za mikrokontroler bom pa tako napisal:
int i=100;
i; // kaj je smisel tega?

ql000 ::

Za kaj je kateri register ni važno.


?!!?!!!?

Sploh ni avr ampak je philipsov arm.

Malo sem pogooglal in prvi izpis, ki ga je vrgel ven se je nanašal na AVR-e. Očitno imajo funkcije ista imena.

Tist
int i = 100;
i; 


int (verjetno 32 biten, ne poznam arm-ov, delam s PIC-i) samo priredi tip spremenljivke i. Tisti i sam po sebi pa pojma nimam kako funkcijo ima. Jaz bi rekel, da nobene.

Gundolf ::

> int i=100;
> i; // kaj je smisel tega?
To nima smisla.

> U0RBR; // clear receive register
To po drugi strani ima lahko smisel, če je U0RBR makro, ki nekaj naredi.

blay44 ::

Ko pridem domov moram spisati knjižnico, za tamalega brata, modelarja, da se ne bo lomil v avr gcc-ju. Koda bi bila bolj v stilu pythona.
Moj primarni jezik je bejzik, pa premišljujem, če bi to v Cju šlo.
Tist "mode "naj vas ne moti.


knjižnica kontrola pinov .h
#define portB   &PORTB  //naslov porta B
......
prototip funkcije:
void PinMode(volatile *port, uint8_t pin, uint8_t mode);
 //je volatile potreben?
.........

knjižnica .c
void PinMode(volatile *port, uint8_t pin, uint8_t mode) ;
{
	foo;
	*port  I=   (mode << pin);        // a bi to delovalo pravilno?
	foo;
}


main.c
....
PinMode(portB, pin, 1);   // pin na vhod ali izhod, itd...
.......

Tnx

blay44 ::

:D
#define portDDRB   &DDRB  //naslov UI registra B

Tkole je bolj jasn.
Na biciklu sem še druge stvari premleval. A noben ne ve, če je to pravilni uporaba pisanja po registrih preko funkcije?

:)
Preden grem spat. Dela ko metek.

Zgodovina sprememb…

  • spremenil: blay44 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] LPC1343 - UART - AT commands

Oddelek: Programiranje
91025 (915) JanezovJanez
»

Siemens m35 - rs232 - AT commands

Oddelek: Mobilne tehnologije
232946 (2132) JanezovJanez
»

C in funkcije ter #define

Oddelek: Programiranje
463764 (2125) misek
»

priklop lcd preko i2c

Oddelek: Elektrotehnika in elektronika
141424 (1193) cefizl88
»

c++ two dimensional array v classu

Oddelek: Programiranje
111295 (1098) Senitel

Več podobnih tem