Forum » Programiranje » C volatile array
C volatile array
slovencl ::
Takole imam definirane registre
#define REG1 (*(volatile uint16_t *)(0x0400))
#define REG2 (*(volatile uint16_t *)(0x0600))
Register v register potem kopiram enostavo
REG1=REG2;
Ni mi jasno kako se to dela v primeru arraya.
Rad bi skopiral array 10 registrov od REG1 naprej v 10 registrov od REG2 naprej.
Ali pa da bi array 10 registrov od REG1 skopiral v REG2 (če je REG2 fifo).
Mogoče kdo ve, kako se to v Cju naredi?
#define REG1 (*(volatile uint16_t *)(0x0400))
#define REG2 (*(volatile uint16_t *)(0x0600))
Register v register potem kopiram enostavo
REG1=REG2;
Ni mi jasno kako se to dela v primeru arraya.
Rad bi skopiral array 10 registrov od REG1 naprej v 10 registrov od REG2 naprej.
Ali pa da bi array 10 registrov od REG1 skopiral v REG2 (če je REG2 fifo).
Mogoče kdo ve, kako se to v Cju naredi?
slovencl ::
Ja, kako je vprašanje...
Sem naredil tako:
Pa ne naredi nič. V asm mi zoptmira ven ta del, ker nikjer ne uporabljam teh registrov.
Pardon, tako:
memcpy(®1, ®2, 6);
Sem naredil tako:
#define REG1 (*(volatile uint16_t *)(0x8a22)) #define REG2 (*(volatile uint16_t *)(0x8a44)) void _memcpy(volatile uint16_t *dst, volatile uint16_t *src, uint16_t num) { while (num--) { *dst++ = *src++; } } _memcpy(REG1, REG2, 6);
Pa ne naredi nič. V asm mi zoptmira ven ta del, ker nikjer ne uporabljam teh registrov.
Pardon, tako:
memcpy(®1, ®2, 6);
Zgodovina sprememb…
- spremenil: slovencl ()
johnnyyy ::
Narobe imaš definirane registre, definiraj oba registra kot:
volatile uint16_t *REG1=(uint16_t *) (0x8a22);
volatile uint16_t *REG2=(uint16_t *) (0x8a44);
In uporabljaj registra kot pointerja. Poleg tega ti v argumente funkcij ni potrebno pisati volatile.
volatile uint16_t *REG1=(uint16_t *) (0x8a22);
volatile uint16_t *REG2=(uint16_t *) (0x8a44);
In uporabljaj registra kot pointerja. Poleg tega ti v argumente funkcij ni potrebno pisati volatile.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] - Atmel AVROddelek: Programiranje | 1510 (536) | blay44 |
» | ESP8266 ESP-12E (NodeMCU 1.0)Oddelek: Elektrotehnika in elektronika | 3647 (2492) | dc10 |
» | Imate rajši Win 7 kot Win 10? Imamo rešitev. (strani: 1 2 3 4 )Oddelek: Operacijski sistemi | 47756 (37987) | Cervantes |
» | C in funkcije ter #defineOddelek: Programiranje | 3969 (2330) | misek |
» | [PHP] primerjava besed v stavkihOddelek: Programiranje | 1088 (975) | rokpok |