Diferença entre const unsigned int *picture e const uint16_t *picture

225 views
Skip to first unread message

Ricardo

unread,
Oct 10, 2013, 10:26:09 AM10/10/13
to sis_emb...@googlegroups.com
Bom dia pessoal,

Estou começando a brincar com o ARM e percebi que se crio uma função desta forma :

void LCD_DrawImage( uint16_t Xpos, uint16_t Ypos, uint16_t dim_x, uint16_t dim_y, const unsigned int *picture)
{
....

Funciona, mas se criou ele desta forma:

void LCD_DrawImage( uint16_t Xpos, uint16_t Ypos, uint16_t dim_x, uint16_t dim_y, const uint16_t *picture)
{
....

Não da certo, perde pontos da matriz picture.

Alguém sabe me dizer o motivo, qual a diferença entre os dois tipos de variáveis.

Obrigado pela atenção
Ricardo

Fernando Barboza

unread,
Oct 10, 2013, 10:33:22 AM10/10/13
to sis_emb...@googlegroups.com
Ricardo,

  Precisa saber onde os tipos estão definidos, mas int no ARM é 32 bits.

   Então acredito que poderá substituir por uint32_t.

  Outro detalhe, tente evitar de criar funções com mais de 4 parametros, pois senão os parametros deverão ser passados pela stack e não por registradores (r0..r3), deixando menos otimizado.

  Att,



--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

William Silva lyra

unread,
Oct 10, 2013, 10:42:43 AM10/10/13
to sis_emb...@googlegroups.com
Ricardo,

Declaração de "uintx" e "intx" para microcontroladores de  32 bits:

- uint8   = 1 byte    = unsigned char
- uint16 = 2 bytes unsigned short int
- uint32 = 4 bytes = unsigned int 
- int8   = 1 byte    = signed char
- int16 = 2 bytes signed short int
- int32 = 4 bytes = signed int 

Att,

William Lyra



Em 10 de outubro de 2013 11:26, Ricardo <longo....@gmail.com> escreveu:

--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
William Lyra

Ricardo

unread,
Oct 10, 2013, 12:36:20 PM10/10/13
to sis_emb...@googlegroups.com
O Fernando acertou,

Colocando uint32_t funcionou certo. Tinha em mente que int era 16 bits, como no microcontrolador de 8 bits.

Valeu pessoal.

Marcelo Jo

unread,
Oct 10, 2013, 2:42:16 PM10/10/13
to sis_emb...@googlegroups.com
  Até onde eu sei int tem o tamanho da palavra do processador, logo em microcontroladores de 8 bits,  o int deveria ser 8 bits... ou estou errado?

  Marcelo


2013/10/10 Ricardo <longo....@gmail.com>
O Fernando acertou,

Colocando uint32_t funcionou certo. Tinha em mente que int era 16 bits, como no microcontrolador de 8 bits.

Valeu pessoal.

--

Felipe de Andrade Neves Lavratti

unread,
Oct 10, 2013, 2:56:12 PM10/10/13
to sis_emb...@googlegroups.com
Por isso eu uso uint8_t e cia ltda


2013/10/10 Marcelo Jo <marc...@gmail.com>



--
Skype: felipeanl

Juan Castro

unread,
Oct 10, 2013, 3:00:19 PM10/10/13
to Embarcados BR
Se bem que pra 8 bits eu acho que é seguro usar char e unsigned char, certo?

Juan


2013/10/10 Felipe de Andrade Neves Lavratti <feli...@gmail.com>

Felipe de Andrade Neves Lavratti

unread,
Oct 10, 2013, 3:01:10 PM10/10/13
to sis_emb...@googlegroups.com
tem plataforma que char é 16bits.


2013/10/10 Juan Castro <jccy...@gmail.com>



--
Skype: felipeanl

Emerson Beserra

unread,
Oct 10, 2013, 3:12:03 PM10/10/13
to sis_emb...@googlegroups.com

O tamanho default do int não é definido pelo processador, o teu compilador que define isso da forma que ele acha melhor, já usei compilador de pic que int era 8 bits e outro que era 16. Por isso que existe o uintX_t, só assim vc tem certeza do tamanho do dado

Ricardo Luis

unread,
Oct 10, 2013, 3:21:38 PM10/10/13
to sis_emb...@googlegroups.com
Eu não sabia desse detalhe.


--
Você recebeu esta mensagem porque está inscrito em um tópico do grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/sis_embarcados/KdtpAABTsek/unsubscribe.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para sis_embarcado...@googlegroups.com.
Message has been deleted

Rogerio Machado

unread,
Oct 10, 2013, 6:18:30 PM10/10/13
to sis_emb...@googlegroups.com
Nao funciona porque incrementar o  ponteiro picture em "void LCD_DrawImage( uint16_t Xpos, uint16_t Ypos, uint16_t dim_x, uint16_t dim_y, const unsigned int *picture)" representa um incremento de 4 bytes
e em "void LCD_DrawImage( uint16_t Xpos, uint16_t Ypos, uint16_t dim_x, uint16_t dim_y, const uint16_t *picture)" 2 bytes

Entao a matriz eh lida incorretamente

Entao o correto seria: 
void LCD_DrawImage( uint16_t Xpos, uint16_t Ypos, uint16_t dim_x, uint16_t dim_y, const uint32_t *picture)

Marcelo Jo

unread,
Oct 10, 2013, 10:42:14 PM10/10/13
to sis_emb...@googlegroups.com
  O compilador era ANSI? 

  Sim, entendo que podem ter variações e por isso foi criado o padrão stdint.h. Se o teu compilador tiver, é bom usar esses tipos, senão o ideal é vc mesmo definir como o Felipe mencionou!

  Eu mesmo uso só uint8_t, uint16_t, etc

  Abraços


2013/10/10 Emerson Beserra <emerso...@gmail.com>

agaelema .

unread,
Oct 11, 2013, 7:12:46 AM10/11/13
to sis_emb...@googlegroups.com
O CCS por padrão não reconhece estas nomenclaturas, dependendo da inclusão do "stdint.h".

É uma boa prática de programação a utilização deste include? Ele facilita a  portabilidade posterior de códigos? Esta biblioteca influi em algo no desempenho dos código? pergunto isso pois boa parte das bibliotecas padrão de C não são otimizadas para os embarcados.

Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru

Felipe de Andrade Neves Lavratti

unread,
Oct 11, 2013, 7:16:49 AM10/11/13
to sis_emb...@googlegroups.com
agaelma:

É uma boa prática, sim, torna portável. Não influi em desempenho e não tem incompatibilidade com embarcados. Use e abuse do stdint.h.


2013/10/11 agaelema . <agae...@gmail.com>



--
Skype: felipeanl

agaelema .

unread,
Oct 11, 2013, 8:32:19 AM10/11/13
to sis_emb...@googlegroups.com
Obrigado Felipe, irei começar a utilizar nos próximos códigos.

A cada dia aprendendo uma nova...

Haroldo L. M. Amaral
Mestrando em Eng. Elétrica - UNESP Bauru
Tecnólogo em Sistemas Biomédicos - FATEC Bauru
Técnico em Eletrônica - CTI/UNESP Bauru


Juan Castro

unread,
Oct 11, 2013, 9:18:32 AM10/11/13
to sis_emb...@googlegroups.com

Se não me falha a memória, o stdint.h já faz parte dos padrões oficiais.

Em 11/10/2013 08:17, "Felipe de Andrade Neves Lavratti" <feli...@gmail.com>escreveu:

agaelma:

É uma boa prática, sim, torna portável. Não influi em desempenho e não tem incompatibilidade com embarcados. Use e abuse do stdint.h.



2013/10/11 agaelema . <agae...@gmail.com>


>
> O CCS por padrão não reconhece estas nomenclaturas, dependendo da inclusão do "stdint.h".
>

> É...




--
Skype: felipeanl

--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Go...

Emerson Beserra

unread,
Oct 11, 2013, 11:40:03 AM10/11/13
to sis_emb...@googlegroups.com
Se o compilador obedecer o padrão c99 o stdint.h já vem no pacote de includes, é só usar.
Eu já cheguei a usar o ccs, que não obedece o padrão c99, na verdade eu acho que o ccs não obedece padrão nenhum, nesse caso eu criava um arquivo e fazia os respectivos typedefs 


--
Você está recebendo esta mensagem porque se inscreveu no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para sis_emb...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/sis_embarcados.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Emerson Beserra

Marcelo Jo

unread,
Oct 11, 2013, 12:06:51 PM10/11/13
to sis_emb...@googlegroups.com
  É o CCS segue em partes o padrão... =D

  Usei ele, o hi-tech e o compilador da própria microchip.. atualmente uso o C30 ou xc16-gcc pra 16bits... acho ele bom e dá pra usar otimização nivel 1 na versão free! Achei o CCS meio estranho... acho que é bom pra quem tá começando pq tem várias funções build-in, sei lá.. eu gosto de fazer os códigos seguindo o padrão ANSI.

  Abraços

  Marcelo


2013/10/11 Emerson Beserra <emerso...@gmail.com>
Reply all
Reply to author
Forward
0 new messages