Ir ao conteúdo
  • Cadastre-se

eletronicav

Membro Pleno
  • Posts

    144
  • Cadastrado em

  • Última visita

Reputação

1
  1. Legal heim, fiquei curioso agora kk. Realmente o proteus pra isso deixa a desejar, também tive problemas em testar com ele, no começo nao funcionava nada e na verdade tudo estava funcionando ¬¬. Sobre o DAC eu ja conhecia R/2R, até montei porém ficou muito ruim o som, dai montei este outro que também era muito mais fácil pra montar na mão e no final acabou com a metade de componentes porque os valores que eu "escolhi" acabaram sendo os tradicionais do mercado então na questão dos valores diferenciados não tive problema. E outro problema era que o único amp. op. que eu tinha precisava de fonte simétrica e eu não tenho, dai uma vantagem pra mim usar esse outro DAC, porque ele não precisa de operacional o que facilitou pra mim. Realmente o R/2R é mais fácil mas não quis perder tempo procurando o erro, pensava que era a fonte mas não era, tanto que eu liguei todos os resistores do R/2R pro terra e coloquei no osciloscópio e continuou essa interferência, dai desisti do R/2R e montei esse outro. valeu.
  2. extamente, eu leio o byte da memoria e mando direto pra porta 8bits e no DAC(conversor de digital para analogico) eu utilizei o Weighted DAC igual a esse da imagem porém de 8-bit, apenas acrescentando mais 2 resistores com valores de R*64 e R*128. Na saida utilizei um falante simples porém mesmo a saida variando de 0v a 5v não tem força suficiente para tocar, então precisa de um amplificador simples, no meu caso usei um LM comum de 0.5W e foi mais que suficiente. PS.: O valor do resistor não importa muito desde q seja fiel à multiplicação R*(x), não precisa ser exato mas quanto mais proximo melhor o som e menos chiado. O valor inicial de R pode ser qualquer um, no meu caso utilizei 100R pois se tivesse utilizado valor maior teria q usra no final resistores acima de 1M e nao tinha ai vai do que voce achar melhor. Att, Victor.
  3. Não tinha reparado isso, mas por padrão ele é habilitado, por isso que i2c_read() sem nada funcionou.. Se alguém quiser saber, sobre o DAC eu utilizei o Weighted DAC R-2R-4R-8R-16R-32R-64R-128R o som ficou melhor do que eu esperava fica melhor ainda colocando um capacitor non polarized de 1uf no positivo do falante e no negativo ou um low pass filter que resolve a chiadera(pouca mas tem). Att, Victor.
  4. Problema nenhum.. O codigo ficou assim: #include <16F628A.h>#fuses HS#fuses NOMCLR#fuses NOWDT#fuses NOPUT#fuses PROTECT#fuses NOBROWNOUT#fuses NOLVP#fuses CPD#use delay(clock=20000000)#use i2c(master, fast, sda=PIN_A1, scl=PIN_A0)#use fast_io(A)#use fast_io(B)int byte_atual = 0;int16 length = 23790;int16 i;#separatevoid le_eeprom(){ i2c_start(); i2c_write(0xa0); i2c_write(0); i2c_write(0); i2c_start(); i2c_write(0xa1); for(i=0;i<length;i++) { byte_atual = i2c_read(); output_b(byte_atual); } i2c_stop();}void main(){ setup_ccp1(CCP_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); set_tris_a(0b00000000); set_tris_b(0b00000000); output_a(0b00000000); output_b(0b00000000); output_float(PIN_A0); output_float(PIN_A1); delay_ms(500); le_eeprom(); while(True){}} valeu mesmo vtrx você me ajudou muuito! Att, Victor.
  5. valeu mesmo cara. Sequencial realmente melhorou muuito. Você me recomendaria outro Compilador C? Ou definitivamente mudar para ASM?? Pois quando eu começei, estudei o ASM para aprender como funciona o uC, os bancos e tal, mas preferi o C pelo tempo que se leva produzindo o código. Att, Victor.
  6. Converti o arquivo WAV em Raw no audacity, renomeei o arquivo em .bin e gravei usando o gravador da elnec. Eu testei o simple rate em 8KHz e deu certo porém a qualidade obviamente acaba sendo um defeito. Quando eu usava o SD usei o MikroC Pro pra gravar todo o conteudo nele via RS232. Att, Victor.
  7. Eae galera, estou com um problema e não sei se tem solução, é o seguinte, fiz um programinha aqui pra testar playback de sons no pic, minha 1ª ideia foi usar o Cartão SD(tudo em RAW data) fiz tanto no proteus como na pratica e funcionou parcialmente, porque demorava pra ler de bloco em bloco, eu lia 1 bloco e tinha um delay de 5ms e isso ficou ruim, parti pra EEPROM e escolhi a 24LC512 que é a unica que tem onde moro, porém a velocidade dela de operação é de 400KHz comparado ao Cartão SD que é de 20MHz(velo maxima) e com isso usando a EEPROM um simples "Oi" que tinha 500ms se tornou um som de 2s aproximadamente, sim horrivel. E queria saber se estou fazendo algo errado para reproduzir o som ou o que posso usar de fácil acesso no mercado para armazenar esse som? Estou usando a frequencia máxima do PIC(20MHz). Sei que tem a linha 25LCXXX que é mais rápida trabalha em 20MHz também seria o ideal eu acredito, ja pesquisei rios na internet e nada, se alguém que já testou algo assim pudesse me ajudar seria otimo . Codigo(no CCS C) atual para leitura da EEPROM: #include <16F628A.h>#fuses HS#fuses NOMCLR#fuses NOWDT#fuses NOPUT#fuses PROTECT#fuses NOBROWNOUT#fuses NOLVP#fuses CPD#use delay(clock=20000000)#include <24512.c>int16 length = 23790;int16 i;void main(){ setup_ccp1(CCP_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); //setup_timer_2(T2_DIV_BY_4,55,1); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); set_tris_a(0b00000000); set_tris_b(0b00000000); output_a(0b00000000); output_b(0b00000000); init_ext_eeprom(); delay_ms(500); for(i=0;i<length;i++) { output_b(read_ext_eeprom(i)); } while(True){}} valeu, Victor Migliatti.
  8. Problema resolvido depois de muito suor: nao posso criar a conexão no main thread! tem que criar uma asynctask ou então fazer tudo dentro do ClientThread ja ta criado no codigo.
  9. Eae galera, estou tentando fazer uma comunicação entre o android(usando eclipse 4.2) e o pc(usando delphi 2010) usando socket, so que estou tendo problema no codigo do android, ele funciona como cliente e o pc como servidor, ate ai tranquilo, mas quando eu tento receber alguma mensagem do pc no android ele trava e fecha, mas o contrário funciona tranquilamente, android -> pc. ja usei varios tipos de recepção de dados e nenhum obtive sucesso e com o delphi não há problemas pois testei com outra aplicação cliente no proprio delphi e funcionou ok. Minha intenção é apenas enviar string de um pro outro, porém necessito que os dois hajam esse envio, tanto o android quanto o pc. Segue o codigo do android: Delphi: servidor.Socket.SendText('12345' + Chr(10)); Android: package com.example.wifi;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity{ //variaveis para conexão Socket socket = null; DataOutputStream dataOutputStream = null; DataInputStream dataInputStream = null; Button button; TextView textIn,textOut; @[member=override] protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener(buttonSendOnClickListener); textIn = (TextView) findViewById(R.id.textin); textOut = (TextView) findViewById(R.id.textout); Thread cliente = new Thread(new ClientThread()); cliente.start(); } Button.OnClickListener buttonSendOnClickListener = new Button.OnClickListener() { @[member=override] public void onClick(View arg0) { // TODO Auto-generated method stub try { dataOutputStream = new DataOutputStream(socket.getOutputStream()); dataInputStream = new DataInputStream(socket.getInputStream()); dataOutputStream.writeUTF(textOut.getText().toString()); textIn.setText(dataInputStream.readUTF()); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (dataOutputStream != null) { try { dataOutputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (dataInputStream != null) { try { dataInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }; class ClientThread implements Runnable { public void run() { try { socket = new Socket("192.168.0.164", 8888); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } }} O servidor identifica o cliente tranquilo eu so estou com problema na hora de receber a string do pc, no delphi eu uso quebra de linha e converti o texto para UTF-8. valeu.
  10. Pesquisei mais a fundo e encontrei esse blog muuito bem explicado, ele dá o codigo fonte, creio que é so segui-lo que conseguirá. Lembrando que você precisará baixar o stack da microchip. Segue links: http://www.microchip.com/forums/m356755.aspx ou http://www.ljcv.net/projects/picdemnet/index.html Falou
  11. Certo, nunca brinquei com ethernet e PIC, mas veja este documento que achei na net, pode te ajudar em algumas coisas, dei uma lida bem rapida e parece ter boa utlidade, explicando passo a passo, ate como testar diretamente no pc , por enquanto estou em bluetooth e PIC, meu proximo vai ser ethernet. Falou.
  12. Não entendi muito bem, você conseguiu no PC, receber o dado do PIC, mas não conseguiu no PIC receber do PC, é isso?
  13. Eae Brunocavaledo, se você é iniciante e não sabe como estudar o programa, faça o seguinte, va apagando linhas, mudando valores e vai anotando a função de cada uma. T+

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...