Ir ao conteúdo
  • Cadastre-se

Vicente Cesar

Membro Pleno
  • Posts

    126
  • Cadastrado em

  • Última visita

Tudo que Vicente Cesar postou

  1. Eu falei com um professor de eletrônica digital hoje e ele me explicou como eu faria um "acesso manual"(como seria um codigo de baixo nível para isso) a uma RAM externa (Explicou mais ou menos porque tenho que escolher um modelo especifico antes). Em fim ... cansativo ficar procurando informação kkkk. Vou ver como faço quanto a memoria, e depois posto a solução que eu encontrar.
  2. Cada quadro tem 525 x 640 pixels, acha que o pic 16f628A tem capacidade para uma memoria externa que suporte vários desses quadros? Tipo, nunca mexi com memoria esterna, então não tenho ideia por onde começar kkk, nem quais são os valores comumente encontrados. Precisaria de na ordem de alguns KB's (Cerca de 100 kb). É possível ?
  3. Eu pretendo gerar o sinal de vídeo para TV mesmo, acho que com um pouco de pesquisa logo consigo gerar um sinal com perfeição. Só que a memoria RAM do pic se esgotou kkkk (Me disseram que vou ter que sair da serie 16F se eu quiser avançar mais com isso). Agora to tentando ver o que posso fazer para continuar o projeto.
  4. @vtrx Fui tentar implementar e só agora entendi o problema quanto a RAM, porque eu tenho um numero extremamente alto de pontos para serem impressos na tela enquanto o meu pic possui uma memoria muito limitada, realmente não tem condições com o pic 16f628A (Eu, não sei muito sobre os pics). Pode me dar algum paramento de por onde começar essa mudança (Como você disse, eu teria que mudar de pic)? Lembrando que essa matriz de pixels é de 525 x 640. O que me aconselha fazer ? To meio perdido agora kk
  5. Tudo certo, agora é tentar implementar kkk. @Felipe Electronic, Eu comecei a implementar o código, e cara me deparei com um problema, minha tabela tem mais de 255 posições, como faço para passar o índice dela (Já que o pic só tem registradores de 8 bits)? O pic tem Algum registrador de mais de 8 bits ? Porque não entendi como eu posso ter tantas variáveis com uma estrutura de 8 bits. Como o pic trata isso ?
  6. @vtrx e @Felipe Electronic, você já me deram bastantes exemplos, claro, ainda retaram duvidas, mas já tenho uma ótima ideia para uma implementação a partir da união da informações que me deram (no 16F mesmo pois não tenho um 18F no momento). Assim que terminar digo se deu tudo certo, tentarei implementar hoje a noite.
  7. Legal isso resolve meu problema com algumas pequenas alterações, o problema quando aumentar o clock é que na minha cidade não tem lojas de eletrônica e o frete sai muito caro kkk, então eu deixo para meus pai comprar para mim nas viagens dele a trabalho, mas enquanto isso, estou me virando com o que tenho, até porque se eu fizer com um clock mais baixo, quando eu tiver um clock alto sera simples reimplementar. Mas antes que eu comesse a implementar esse seu método quero tirar algumas duvidas, que poderiam me ajudar muito na hora de criar algo mais rápido: 1 - tabelaPixel:24 ;reserva 24 bytes para uma tabela de 24 posições Esse é um valor decimal ? É que aonde aprendi assembly para representar um valor decimal você coloca ".valor", então isso me confundiu um pouco (O valor 24). 2 - incf FSR,f ; Está linha eu aponto para o próximo endereço da tabela certo ? Etão porque eu movo INDF para o port A? Esse registrador possui sempre o valor que FSR aponta ? 3 - movf INDF,w é o mesmo que a intrução movfw INDF (Uso o MPLAB) ? 4 - Uma ultima duvida, acho que não teria como, mas um registrador qualquer poderia ficar se incrementando enquanto o programa é executado ou apenas o registrador do Timer tem essa capacidade? Me desculpe por tantas perguntas, mas o meu inglês não é muito bom e dificulta a entender. Agradeço pelas perguntas que puder responder. OBS: Quanto a onde a imagem vai estar salva, pretendo coloca-la na RAM e indo atualizando por comunicação serial ou paralela (Para ser um pouco mais rápido).
  8. @Felipe Electronic, eu sou bem iniciante em assembly ainda, não conheço muito do que você falou, mas pelos seus comentários consegui ver é uma maneira relativamente lenta de acesso olhando o que eu preciso. Eu vi que você comentou o meu post de geração de sinal de vide com pic e lá eu expliquei o que eu precisava, e um problema adicional que acho que não avia mencionado é que tenho 1 microssegundo para colocar cada pixel na tela, e posso realizar 3 instruções por microssegundo, e pelo que eu analisei esta estrutura é bem lenta. Acho que eu terei de arruma outra maneira de colocar os pixels na tela sem ser lendo o valor dele e colocando na tela. A não ser que saiba uma maneira de fazer isso em 3 instruções, algo mais ou menos assim: _Seleciona o índice do vetor _Pega seu valor _Joga no port A Entende ? Estou meio confuso com o seu codigo, eu conseguiria realizar o que eu quero ? Se sim, poderia explica-lo melhor ?
  9. @vtrx, esqueci de alguns detalhes, é o seguinte: Um quadro tem 525 linhas para ser impressas, mas de vido a perda de resolução pelo baixo sinal de clock considerar que tenho uma dela de aproximadamente 45 x 45 pixesl (Triste realidade kkk). Antes de começar a imprimir primeiro quadros irei atualizar a tabela que contem a imagem, e mostrarei o endereço inicial da primeira linha. No final de cada linha eu possuo 4 microssegundos onde tenho para informar o endereço dos dados da segunda linha, após serem impressas todas as linhas eu tenho um tempo de 256 microssegundos para atualizar os dados que serão recebidos de um outro microcontrolador, este só enviara o próximo quadro se o mesmo estiver completo para evitar a falta de sincronismo vertical, como acontecia em um monte de jogos mais antigos. O que eu preciso é de uma tabela que possa ser atualizada que contenha uma "amostra de cada linha", e uma outra com a sequencia de linhas a serem impressas, pois uma linha tem que ser impressa mais uma vez. Vou tentar explicar: Um pixel leva 92 nanossegundos aproximadamente para ser impresso, mas como eu tenho como imprimir 1 a cada microssegundo eu coloco aproximadamente 12 na tela, então, para ter proporção tenho de colocar na tela 12 linhas repetidas, assim formo pixels de 12 x 12. Seria uma boa um estrutura que eu pudesse e pegando os dados sequencialmente sem precisar fazer um monte de chamadas para preencher cada espaço. Isso economizaria tempo (o que eu já não tenho kkk). Acho que essas informações são o suficiente para você ver se pode me ajudar, mas se precisar de mais alguma só pedir
  10. @Felipe Electronic, havia me esquecido do post, voltei só para agradecer kk. Funcionou perfeitamente, obrigado.
  11. Eu entendi mais ou menos, ainda não conheço todos esses comandos de assembly. Preciso aprofundar um pouco mais nas suas explicações. O que fazem as "intruções ADDWF PCL,F" e "RETLW B'11111111' " ? Não entendi como estou organizando esses dados. eu estou indicando o endereço de memoria que eu quero ? E se eu precisas de mais de 255 posições ? OBS: O que estou fazendo é o seguinte, uma imagem são composta de varias imagens (Personagem, cenário, objetos, etc... ) e eu não tenho tempo para fazer esse processamento e colocar a imagem na tela ao mesmo tempo, então vou usar um segundo pic que vai montar essa imagem em uma especie de matriz, e quando o quatro estiver completo, vai atualizar a matriz que joga a imagem na TV com o novo quadro que ela deve mostrar na tela. Entende ? Mas acho que esse método (usando tabelas) gasta um tempo extremamente alto levando em conta que só tenho um oscilador de 12 MHz kkk. Um problema é que possuo mais de 255 pixles para manipular por linha, tem algum modo de eu meio que juntar dois espaços de memoria para fazer essa manipulação? Perdendo o minimo de desempenho possível.
  12. Pessoal, é o seguinte, preciso montar uma estrutura de dados, uma especie de tabela que armazenara um valor em cada posição (0 ou 1 mais especificamente no momento), mas não tenho ideia de como eu poderia fazer isso. Tem alguma maneira de se montar uma estrutura indexada em Assembly ? Quais maneira eu tenho para organizar meus dados ? Ou a unica manira é criando variáveis avulsas ? Agradeço muito se alguém tiver algum exemplo de como poderia criar uma estrutura qualquer de dados em Assembly (OBS: Não serve outra linguagem, preciso fazer isso necessariamente em Assembly).
  13. @vtrx, logo posto código, preciso dar uma arrumada nessa bagunça porque senão ninguém entende o que eu arrumei aqui kkkk ç-ç. Eu pretendo continuar com o sinal de vídeo RCA mesmo, apesar de realmente parecer mais complicado sua construção. Preciso entender melhor essa questão de criar minha própria estrutura em assembly, não conseguiria me mostrar um exemplo de como eu poderia montar uma pequena matriz (Tabela) ? Teria como ser uma estrutura indexada? Facilitaria demais o trabalho se for.
  14. Obrigado. Realmente preciso de um clock maior porque só programando isso percebi a dificuldade de processar vídeo (Isso porque foi uma imagem bidimensional e monocromática). Sabe me dizer se tem algum pic que trabalha com mais de 8 bits ? Ta complicado manipular dados só com isso. Fiquei sabendo de alguns outros microcontroladores que são melhores que o pic devido o poder de processamento deles, e estou vendo se não seria melhor eu mudar de microcontrolador (aceito sugestões kkk). Outra pergunta, tem como criar estruturas de dados em assembly ? Tipo, queria fazer uma especie de vetor para guardar os pixels da imagem que vou mostrar na tela, assim poderia alterar facilmente o que esta aparecendo na tela. Aqui vai um vídeo da ultima alteração, agora se move pela tela:
  15. Acho que a parte mais difícil na produção de vídeo preto e branco (Com tons intermediários de cinza) já passou, agora as coisas estão andando bem kk. O problema agora são as cores, achei meio confuso o modo de gerar o sinal, é bem diferente do que eu esperava. PS: A câmera do notebook não é muito boa mais consegui filmar o personagem se movimentando pela tela (Consegui fazer ontem a noite).
  16. @Bcpetronzio Consegui, demorou um pouco mais consegui haha. Era algo bem simples até, o problema era que eu continuava enviando informação enquanto o tubo de raios catódicos da TV chegava ao fim da tela, quando na verdade nesse momento tenho que desliga-lo até que chegue ao topo da tela novamente, isso da um tempo 192 microssegundos, sendo 96 microssegundo depois que eu terminava de colocar as linhas impares na tela e 96 depois das pares. Vim deixar a imagem dos resultado "final" (Ainda quero fazer bastante coisa com isso XD).
  17. @ , @vtrx , @Isadora Ferraz , Obrigado pela ajuda de todos vocês, consegui montar um sinal de vídeo de um quadro completo e vim trazer os resultados para vocês verem, agora é só questão de ir aperfeiçoando (colocar cores, faze-ló se movimentar pela tela, etc). Algumas duvidas ainda ficaram, mas com o tempo acho as respostas kkk. Queria postar tudo de como eu fiz, mas não tenho muito tempo para isso, mas se alguém quiser posso arrumar um tempinho haha. Quando arrumar mais filmo um vide o dele se movimentando.
  18. O jeito foi programar em Assembly mesmo e com a ajuda do debugger do MPLAB consegui controla perfeitamente o tempo das funções. Obrigado a todos que responderam
  19. Realmente, não tem sido nada fácil achar informações organizadas e que vão direto ao que eu quero saber, mas estou determinado a conseguir, até porque os primeiros resultados já são visíveis. Irei ler tudo. Eu consegui deixar a imagem parada na tela, mas foi meio que uma gambiarra e quero arrumar isso para deixar o código bem feito. Complica um pouco por eu estar mexendo com assembly a primeira vez, mas uma apostila que encontrei aqui no forum mesmo tem me ajudado muito. Logo respondo sobre os links que você enviou.
  20. Isso eu entendi, por esse motivo quero saber o tempo que tenho na tela para jogar um único quadro ai posso ajustar corretamente, mas n achei esse tempo exato Eu entendi o problema, só não sei como arrumar esse sinal, não sei o tempo exato de um quadro, ja tentei de tudo e não funciona.
  21. É um sinal de vídeo onde cada linha demora 64 microssegundos para ser composta, coloco na tela 525 linhas. Com essa quantidade de linhas o movimento é para cima e se eu aumento ele fica para baixo, mas não achei um numero de linhas exato para que a imagem fique parada na tela. Assim que conseguir um filmo e posto um vídeo.
  22. Estou desenvolvendo um programa para pic que reproduz uma imagem na tv, ele funciona perfeitamente, exceto pelo fato da imagem ir descendo com o decorrer do tempo. Acho que isso esta acontecendo porque estou colocando mais linhas do que as Tvs brasileiras suportam em um quadro. Sabem me dizer se tem como informar a Tv que quero voltar para o primeiro pixel? Quantas linhas tenho que imprimir na tela (Vi na internet que o padrão é 525 - PAL 625 - PAL-M)? O tempo de impressão de uma linha na tela é 64 microssegundos(acho que isto esta certo, pois senão a imagem estaria se movendo para o lado em caso da falta de sincronia horizontal)? Qual o tempo exato de varredura de um único quadro ? Agradeço se puderem me dar essas respostar ou possíveis soluções para esse problema, to trabalhando a mais de uma semana nisso, e mal posso esperar para ver funcionando kkk. Obrigado
  23. vtrx Eu sei que isso trava o PIC, mas é justamente o que eu preciso, pois eu já tenho todas as informações que quero que sejam impressas no momento que vou usar este Delay, mas achei interessante o link, só não consegui baixar o arquivo no botão de download, mas funcionou para usar online @_@ Obrigado Felipe, a instrução nop, quando eu testei ela gastou um ciclo de maquina, e não um ciclo de clock, ou seja, no pic a instrução demorou 4 vezes mais que o esperado.
  24. É um temporizador que pausa o programa por mais ou menos 30 microssegundos para terminar a sincronização de imagem de um televisor com meu pic. Acho que dará certo seus métodos. Tenho mais uma duvida, tem como eu parar o processamento por um ciclo de clock ? E poderia explicar melhor como esse código retorna para o programa ? O contador de tempo eu entendi, mas não entendi como ele retorna ao ponto em que o programa foi interrompido.
  25. Olá pessoal, estou tentando fazer um timer em assembly(que conta x segundos). Só que eu quero usa-lo em varios pontos do programa, ou seja, quando eu usar GOTO TIMER quero que ele execute e depois retorne ao ponto do programa do qual estava quando foi chamado, seria possível ? Como? Se poderem da detalhes sobre, agradeço.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!