AVR OSD e periféricos
- alexcmag
- Equipe E-voo.com
- Mensagens: 14827
- Registrado em: Sex Fev 13, 2004 12:13 pm
- Localização: Sao Paulo SP
- Contato:
Quanto aos minutos de latitude, você está certo.
Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.
No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.
Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.
No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.
-
- membro
- Mensagens: 26
- Registrado em: Qui Jul 08, 2010 11:40 am
- Localização: Fortaleza, CE
[quote:a008d1d8f6="alexcmag"]Quanto aos minutos de latitude, você está certo.
Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.
No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.[/quote:a008d1d8f6]
HUmm, agora a ficha caiu, voce em razão!!!
Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.
No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.[/quote:a008d1d8f6]
HUmm, agora a ficha caiu, voce em razão!!!
- alexcmag
- Equipe E-voo.com
- Mensagens: 14827
- Registrado em: Sex Fev 13, 2004 12:13 pm
- Localização: Sao Paulo SP
- Contato:
Como disse, é para otimizar, no seu caso não vai fazer muita diferença, até na latitude onde estou o erro é menor do que as setas em 8 direções, mas se você for voar no RS, Patagônia, norte da Europa, etc. já dá uma diferença. Se for pra Lapônia então...
Depois que tudo estiver acertado, uma tabelinha de uns 23 ítens (dividindo a latitude por 4) já melhora a precisão mais o suficiente para navegar com pouco erro.
Depois que tudo estiver acertado, uma tabelinha de uns 23 ítens (dividindo a latitude por 4) já melhora a precisão mais o suficiente para navegar com pouco erro.
OSD FlyGiba
Oi Oliver.ntg,
Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...
O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1
Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...
O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1
AVR rocks!!!
- Lt_Nelson
- membro
- Mensagens: 1179
- Registrado em: Sáb Jan 06, 2007 9:18 pm
- Localização: PREENCHER A SUA LOCALIZAÇÃO
Re: OSD FlyGiba
[quote:bc38506ed4="FlyGIBA"]
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1[/quote:bc38506ed4]
www.sparkfun.com
Na Digikey se for por courier (UPS, Fedex, etc):
((US$40,00+componentes)*dolar*1,60+R$200,00)*ICMS
[]s
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1[/quote:bc38506ed4]
www.sparkfun.com
Na Digikey se for por courier (UPS, Fedex, etc):
((US$40,00+componentes)*dolar*1,60+R$200,00)*ICMS
[]s
50W, 150W, 300W, 600W, 900W, 1200W, 3000W
-
- membro
- Mensagens: 26
- Registrado em: Qui Jul 08, 2010 11:40 am
- Localização: Fortaleza, CE
Re: OSD FlyGiba
[quote:062487a342="FlyGIBA"]Oi Oliver.ntg,
Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...
O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1[/quote:062487a342]
Giba;
Alem da SPARKFUN voce pode comprar algumas coisas interessantes neste site:
[url]http://www.sureelectronics.net/index.php[/url]
Já comprei la e é confiavel, so demora por ser na china. Aqui no brasil a farnell pelo menos vende em pequenas quantidades... e tem os sensores de pressao da .... esqueci agora, mas postei o codigo do sensor diferencial que comprei.
Gostei das imagens do seu OSD, muito bom. Tem como colocar esquematico? PErcebi em campo que a caixa muito preta pode atrapalhar a visualização de alguns detalhes durante o voo, por isso preferi deixar a caixa preta, mas não se sobrepondo de forma absoluta à imagem de fundo.
Hoje testei novo algoritimo e deu tudo certo, vou postar umas imagens e videos assim que puder.
Achei muito bacana ter trabalhado com o horizonte artificial, vai ser meu proximo passo.
Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...
O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).
Giba1[/quote:062487a342]
Giba;
Alem da SPARKFUN voce pode comprar algumas coisas interessantes neste site:
[url]http://www.sureelectronics.net/index.php[/url]
Já comprei la e é confiavel, so demora por ser na china. Aqui no brasil a farnell pelo menos vende em pequenas quantidades... e tem os sensores de pressao da .... esqueci agora, mas postei o codigo do sensor diferencial que comprei.
Gostei das imagens do seu OSD, muito bom. Tem como colocar esquematico? PErcebi em campo que a caixa muito preta pode atrapalhar a visualização de alguns detalhes durante o voo, por isso preferi deixar a caixa preta, mas não se sobrepondo de forma absoluta à imagem de fundo.
Hoje testei novo algoritimo e deu tudo certo, vou postar umas imagens e videos assim que puder.
Achei muito bacana ter trabalhado com o horizonte artificial, vai ser meu proximo passo.
OSD FlyG
Esse é o link (http://giba1.webs.com/avrosd.htm) pro meu código OSD no AVR. Esse código não está pronto e é apenas para referência, pra quem estiver fazendo OSD com Atmega.
Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.
Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.
Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.
Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.
obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.
----
Giba1
Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.
Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.
Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.
Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.
obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.
----
Giba1
AVR rocks!!!
-
- membro
- Mensagens: 26
- Registrado em: Qui Jul 08, 2010 11:40 am
- Localização: Fortaleza, CE
Re: OSD FlyG
[quote:d93207736e="FlyGIBA"]Esse é o link (http://giba1.webs.com/avrosd.htm) pro meu código OSD no AVR. Esse código não está pronto e é apenas para referência, pra quem estiver fazendo OSD com Atmega.
Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.
Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.
Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.
Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.
obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.
----
Giba1[/quote:d93207736e]
Precisa explicar nao, nao fiz muito diferente não.....
Uma dica, nao use matrizes multi-dimensionais, demora mais pra carregar os valores a partir delas. no meu caso criei matrizes constantes, contendo os caracteres e as figuras, dentro de uma rotina de conversão carrego em matrizes na memoria RAM.
A utilização de variáveis voláteis, no seu caso o "temp" é uma grande sacada, pelo menos no compilador que uso, pois ele usa um registrador que dixa a coisa muito rápida, de forma que é necessário gerar uns NOPs pra gerar um espaço, como voce disse.
O meu sistema já esta totalmente funcional, pretendo testar este final de semana e postar mais detalhes aqui.
Outro detalhe importante, fuja de utilizar floats, prefira utilizar ints e se nao tiver jeito o long int, pois as operações consomem uma quantidade absurda de memoria. Pra que tenha uma ideia a operação de raiz quadrada que calcula a distancia no meu programa consome cerca de 21% da memoria do mega168
Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.
Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.
Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.
Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.
obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.
----
Giba1[/quote:d93207736e]
Precisa explicar nao, nao fiz muito diferente não.....
Uma dica, nao use matrizes multi-dimensionais, demora mais pra carregar os valores a partir delas. no meu caso criei matrizes constantes, contendo os caracteres e as figuras, dentro de uma rotina de conversão carrego em matrizes na memoria RAM.
A utilização de variáveis voláteis, no seu caso o "temp" é uma grande sacada, pelo menos no compilador que uso, pois ele usa um registrador que dixa a coisa muito rápida, de forma que é necessário gerar uns NOPs pra gerar um espaço, como voce disse.
O meu sistema já esta totalmente funcional, pretendo testar este final de semana e postar mais detalhes aqui.
Outro detalhe importante, fuja de utilizar floats, prefira utilizar ints e se nao tiver jeito o long int, pois as operações consomem uma quantidade absurda de memoria. Pra que tenha uma ideia a operação de raiz quadrada que calcula a distancia no meu programa consome cerca de 21% da memoria do mega168
OSD FlyG
Falai Oliver.ntg,
É bom conversar com outras pessoas q tb entendem do assunto.
Não entendi o q vc quis dizer com as matrizes multidimensionais. Você ta falando da matriz TABLETRAS[7][128] na memoria de programa?
Normalmente eu fujo de floats, porém nessa aplicação eu tinha bastante memória de programa e não tenho problema de tempo, pois as operações ficam no loop principal q de nada afeta as rotinas do OSD.
Uma coisa: no meu programa da pra substituir aquele monte de PORTC= temp;temp <<=1; por uma MACRO pro código ficar mais limpo. Outra sacada: usando o ponteiro P=&DBTEXTO1[0][0]; dentro da interrupção eu deixo o acesso sequencial da memoria bem mais rápido também. O switch( line ) tb ajuda na velocidade.
Dica: Uma forma de aumentar a velocidade de calculos de funcoes matematicas complexas é usando tabelas. Por exemplo, vc usa uma tabela de n pontos pra converter um numero na sua raiz quadrada, se o resultado dessa raiz ficar entre dois pontos da tabela, vc pode aproximar por interpolação... se vc olhar no meu código tem uma tabela de divisao por 7 (u8 DIVby7[56]).
Quando eu tiver algum tempo vou continuar o projeto, porém eu precisava de alguns componentes q só encontramos no exterior... vou ver como faço pra conseguir... talvez compre na Digikey mesmo...mas enquanto isso vou pensando em outras coisas.
Abraço
É bom conversar com outras pessoas q tb entendem do assunto.
Não entendi o q vc quis dizer com as matrizes multidimensionais. Você ta falando da matriz TABLETRAS[7][128] na memoria de programa?
Normalmente eu fujo de floats, porém nessa aplicação eu tinha bastante memória de programa e não tenho problema de tempo, pois as operações ficam no loop principal q de nada afeta as rotinas do OSD.
Uma coisa: no meu programa da pra substituir aquele monte de PORTC= temp;temp <<=1; por uma MACRO pro código ficar mais limpo. Outra sacada: usando o ponteiro P=&DBTEXTO1[0][0]; dentro da interrupção eu deixo o acesso sequencial da memoria bem mais rápido também. O switch( line ) tb ajuda na velocidade.
Dica: Uma forma de aumentar a velocidade de calculos de funcoes matematicas complexas é usando tabelas. Por exemplo, vc usa uma tabela de n pontos pra converter um numero na sua raiz quadrada, se o resultado dessa raiz ficar entre dois pontos da tabela, vc pode aproximar por interpolação... se vc olhar no meu código tem uma tabela de divisao por 7 (u8 DIVby7[56]).
Quando eu tiver algum tempo vou continuar o projeto, porém eu precisava de alguns componentes q só encontramos no exterior... vou ver como faço pra conseguir... talvez compre na Digikey mesmo...mas enquanto isso vou pensando em outras coisas.
Abraço
AVR rocks!!!