30 de July de 2010
Main Menu
Home
Cadastre-se
Como colaborar
Contato
Sugerir Conteúdo
Reportar Problema
Conteúdo
Fórum
Notícias
Artigos
Projetos
Inovação Tecnológica
Downloads
Eventos
Links
Blogs
Conteúdo Parceiro
Wiki da CBE
Wiki iMXdev
Blogesfera
Login
Usuários online
Nenhum usuário online
Nós temos 73 visitantes online
Usuários Registrados
4282 registrados
0 hoje
15 esta semana
77 no mês
Último: junio12 offline
Próximos Eventos
Nenhum evento
« < Julho 2010 > »
D S Q Q Q S D
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tradutor
Escolha o idioma:
RSS
PageRank
Add Site to Favorites
Add Page to Favorites
Make Homepage
Print Page
Android TR
Fórum Embarcados
Seja bem-vindo, Visitante
Por Favor Entrar ou Registrar.    Esqueceu a senha?
Iniciando com RTOS MQX (1 visualizando) (1) Visitante
Freescale (HCxx, Coldfire, etc)
Ir para baixo Favorito por: 0
TÓPICO: Iniciando com RTOS MQX
#444
dfranca (Usuário)
Fresh Boarder
Mensagens: 6
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 5 Mês, 1 Semana atrás Popularidade: 0  
Ricardo,

Você já deve ter verificado isso, mas confirme se no seu projeto as constantes abaixo estão setadas:

BSPCFG_ENABLE_IO_SUBSYSTEM
BSPCFG_ENABLE_GPIODEV

Elas são encontradas no arquivo user_config.h

Douglas
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#445
dfranca (Usuário)
Fresh Boarder
Mensagens: 6
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 5 Mês, 1 Semana atrás Popularidade: 0  
Legal Ricardo, obrigado pela explicação. Eu nunca compartilhei um pino dessa maneira, mas pelo que vc explicou é uma opção interessante.
Somente por curiosidade: compartilhando o pino dessa forma vc queria economizar pinos ou facilitou o seu hardware de alguma forma ?

Dá uma olhada no forum do MQX no site da Freescale. Tem uma mensagem bem recente lá onde um desenvolvedor pergunta se é possível ele controlar diretamente alguns pinos do microcontrolador ao invés de deixar o MQX fazer isso. A resposta do pessoal foi "sim, é possível"...Então acredito qeu vc consiga fazer isso sim no MQX.
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#446
Ricardo_Franco (Usuário)
Fresh Boarder
Mensagens: 11
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 5 Mês, 1 Semana atrás Popularidade: 0  
Ola Senhores.
Douglas na verdade o objetivo principal era economizar pinos, como eu disse antes, eu programo dispositivos pequenos de 8 bits, e trabalho com projetos muito "low cost" assim preciso dosar muito bem as escolhas... e geralmente acabo subdimensionando o uC.
Claro que depois é um "pega-para-capar" ... hehe.

Vou dar uma olhada no forum da freescale sobre este assunto. Na segunda-feira ja irei testar suas sugestões referente ao problema acima.

Mais uma vez muito obrigado.

Ricardo Franco
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#447
Ricardo_Franco (Usuário)
Fresh Boarder
Mensagens: 11
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 5 Mês, 1 Semana atrás Popularidade: 0  
Ola Senhores.
Caro Douglas, que belo tiro certeiro eim ... Agora tudo funfa ...
Se não for pedir muito gostaria de saber porque a configuração anterior não funcionava. Pois deveria né !!!

Att.

Ricardo Franco
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#456
Ricardo_Franco (Usuário)
Fresh Boarder
Mensagens: 11
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 4 Mês, 4 Semanas atrás Popularidade: 0  
Ola Senhores.
o proximo passo é a implementação de um canal AD. Este eu consegui fazer sem qualquer tipo de ajuda externa. apenas lendo os User guides e exemplos da Freescale.
Realmente o jeitão dele se repete.
Isso não garante que as rotinas estejam perfeitas e otimizadas. Mas ja é a ponta do Iceberg.

Arquivo IO.C
Código:


// -- Variaveis Globais
static FILE_PTR adc = NULL;
static FILE_PTR adc_channel = NULL;

// -- definições Globais
const ADC_INIT_STRUCT adc_init = 
  {
  ADC_RESOLUTION_8BIT,     /* resolution */
  };
  
/* Logical channel #1 init struct */
const ADC_INIT_CHANNEL_STRUCT adc_channel_parameters = 
  {
  POT_1, /* physical ADC channel */
  ADC_CHANNEL_MEASURE_LOOP | ADC_CHANNEL_START_NOW,
  10,             /* number of samples in one run sequence */
  0,              /* time offset from trigger point in us */
  50000,         /* period in us (= 0.6 sec) */
  0x10000,        /* scale range of result (not used now) */
  1,             /* circular buffer size (sample count) */
  ADC_TRIGGER_1,  /* logical trigger ID that starts this ADC channel */
};  

// -- Função para inicializar ADC
boolean InicializaIO(void) 
{
// -- Configuração do ADC
 ADC_INIT_CHANNEL_STRUCT adc_chl = adc_channel_parameters;
    
    adc = fopen("adc:", (const char*)&adc_init);
    if (NULL == adc) {    
        printf("ADC device open failedn");
        _task_block();
    }
    
    adc_channel = fopen("adc:3",(const char*)&adc_chl);
    if (NULL == adc_channel) {    
            printf("adc:POT channel open failedn");
            _task_block();
       
    }
}
  

// -- Função para retornar Valor do ADC
/*
 *  Read in ADC value on the channel given
 */
int_32 ReadADC(void) {
    ADC_RESULT_STRUCT data;
    int_32 val;
    
    read(adc_channel, &data, sizeof(data) ) ;
    val = data.result;
    
    return val;

}



Arquivo TASK.C
Código:


void Adc_task(uint_32 initial_data) 
{
int_32 ValorADC = 0;

printf("n Adc task n");

  while (TRUE)
  {
  ValorADC = ReadADC();
  
  if(ValorADC > 240) 
    {
    SetOutput(3,1);
    } 
    else 
    {
    SetOutput(3,0);      
    }
    
  _time_delay(100);
  }
}   



Tudo funciona Direitinho.

Att.

Ricardo Franco
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#457
Ricardo_Franco (Usuário)
Fresh Boarder
Mensagens: 11
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 4 Mês, 4 Semanas atrás Popularidade: 0  
Senhores.
Estou com uma pequena dificuldade em relação a comunicação serial.

ja vi que posso escrever na serial usando "printf" e provavelmente possa ler da serial usando "scanf".Mas onde eu configuro os parametros de hardware da serial. Baud Rate, quantidade de bits, etc?
Não achei isso em lugar algum. No entanto sei que sem fazer nada eu consigo transmitir pela serial a 115.200 bps.

Alguém te alguma idéia?

Ricardo Franco
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
#458
Ricardo_Franco (Usuário)
Fresh Boarder
Mensagens: 11
graphgraph
Usuários Offline Clique aqui para ver o perfil deste usuário
Re:Iniciando com RTOS MQX 4 Mês, 3 Semanas atrás Popularidade: 0  
Ola Senhores.
Bom problema da Serial resolvido gostaria de colocar a solução e transcrever trechos de uma conversa com o "Douglas França", que tem me fornecido um exelente suporte.

Primeiro a solução para comunicação serial:
No arquivo DRIVER_IO.C
Código:


static FILE_PTR serial = NULL;

// -- Função para inicializar IO
boolean InicializaIO(void) 
{
uint_32 Dummy=0;   

serial =  fopen(BSP_DEFAULT_IO_CHANNEL, 0);

Dummy = 9600;
ioctl(serial, IO_IOCTL_SERIAL_SET_BAUD, &Dummy);

Dummy = 0;
ioctl(serial, IO_IOCTL_SERIAL_SET_FLAGS, &Dummy);
}

// -- Leiutura da UART.
char ReadUART(void) 
{
char Char = 0;
  if (fstatus( serial )) {
         Char = fgetc( serial );
      }  
return Char;   
}



Arquivo TKS_Tasks
Código:

void Serial_task(uint_32 initial_data) 
{
unsigned char Char = 0;
printf("n Serial task n");  

  while(TRUE) 
  {
  Char = ReadUART();
    if(Char) 
    {
    //printf("n Dentro Recebe Char n");  // Apenas DEBUG
    printf("%c",Char);  
    }
    
  _time_delay(100);
  }

}



Bom agora um pequeno trecho da conversa com o Douglas.

Ricardo Franco: Senhores.
Estou com uma pequena dificuldade em relação a comunicação serial.

ja vi que posso escrever na serial usando "printf" e provavelmente possa ler da serial usando "scanf".Mas onde eu configuro os parametros de hardware da serial. Baud Rate, quantidade de bits, etc?
Não achei isso em lugar algum. No entanto sei que sem fazer nada eu consigo transmitir pela serial a 115.200 bps.

Alguém te alguma idéia?

Ricardo Franco


Resposta: Douglas França
Você altera todo a configuração da serial (após você ter aberto a porta, e obtido o file descriptor) através dos comandos de IOCTL.

Naquele mesmo .pdf (MQXIOUG.pdf), vá na página 27.
Lá vc encontra todos os códigos de IOCTL para controlar tudo na sua serial.

abraços,

Douglas


Pergunta: Ricardo Franco

Mas uma duvida ... depois que eu abri a serial e modifiquei os parametros das mesma ... como eu uso a serial ? pelo "printf" mesmo? E no caso de ter mais de uma serial ? como eu iria direcionar as mensagens ?

Ricardo Franco


Resposta: Douglas França
A palavra mágica é "file-descriptor".

Se você abriu N seriais, você terá recebido N file-descriptors, certo ?

A facilidade de você escrever na serial usando o printf é algo que o MQX faz com a serial que ele chama de "default".
E aliás, você pode alterar isso, fazendo por exemplo o printf escrever na serial2, ou serial3, ou serialN, ao invés da serial1 (serial default).

O método genérico de escrita e leitura em qualquer serial são os comandos:

read();
write();

Veja na API deste comandos, que um dos parâmetros que eles recebem é justamente o file-descriptor, para saberem "onde" atuar.
Os outros parâmetros são os buffers, e o tamanho de caracteres à enviar e receber.

Boa sorte !

Dougals


Apenas completando a resposta do Douglas, eu também usei o exemplo Telnet<->Serial para nortear minha aplicação, disponivel em:
C:Arquivos de programasFreescaleFreescale MQX 3.5demotelnet_to_serial

Att.

Ricardo Franco
 
Logado Logado  
  O administrador desabilitou acesso publico para escrita.
Ir para cima
Pesquisar no Portal
Newsletter
Assinar a newsletter do Portal Embarcados
Name:
Email:


Enquete
Qual é o principal motivo para a escolha do processador em seu projeto atual?
 
Oportunidades
Últimas do Fórum

Mais...
Blogs
PROPELLER CHIP Autor: Josilton Rocha Data: 24 de April de 2010
Procuramos consultoria - GSOAP Autor: Claudio Boechat Data: 12 de March de 2010
IDE Free para SDCC Autor: Alexandre Andrade Souza Data: 27 de January de 2010
O desafio em (tentar) organizar e realizar um evento Autor: Diego Sueiro Data: 12 de August de 2009
PIC mikroC Autor: Oliveira Data: 15 de April de 2009
Parceiros
Comunidade C&C++ Brasil
Comunidade Brasileira de Eletronica
Eletromaniacos
Tempo Real
Psoc-Chile