Ir ao conteúdo
  • Cadastre-se

TUTORIAL: Projeto PicUSB quase pronto PIC<-->RF<-->PIC<-->USB<-->PC


Posts recomendados

O pedido chegou, mas não tinha os capacitores (220/470n) na loja... Um amigo comprará eles pra mim, e ai sim começarei os testes...

Pelo jeito, não terei problemas de fazer uma interface usando o labview, quando estiver finalizada coloco ela aqui... Mas quero aprender pelo menos o básico do visual C#, já arrumei umas vídeo aulas e apostilas. Qual eu baixo aqui: downloads Visual C#

o Visual C# 2010 expres?

Outra coisa, você poderia postar o seu projeto novamente Matheus? Quando vou baixar ele pelo 4shared da erro.

Valeu ai cara!

Link para o comentário
Compartilhar em outros sites

Aquele montagem com LCD não possuo mais.

No entanto, tenho uma rotina de LCD de teste aqui:

Código:

#include <16F877A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay(clock=4000000)

#include <lcd.C>

/*void lcd_scroll_right(void)
{
lcd_send_byte(0, 0x1E);
}
//-------------------------

void lcd_scroll_left(void)
{
lcd_send_byte(0, 0x18);
}

//Colocar essa parte do código logo abaixo da frase grande.
for(i = 0; i < 20 ; i++)
{
lcd_scroll_left();
delay_ms(50); // scroll delay
} */

void main()
{
lcd_init ();

while (true)

{
lcd_gotoxy (1,1);
lcd_putc("Teste LCD");
delay_ms(500);
lcd_putc("\f");
delay_ms (500);
lcd_gotoxy (1,2);
lcd_putc("com PIC");
delay_ms (500);
lcd_putc("\f");
delay_ms (500);
}
}

Circuito:

hb46S.png

Falou

Link para o comentário
Compartilhar em outros sites

O PICkit2 não reconheceu o PIC18F4550 (_( (reconhece outros 18F's), mas o JDM reconheceu, estranho.

Aê jovem! Fiz um teste com leitura de uma entrada analógica e plotagem das amostras no labVIEW, o capacitor usado foi de 224M (220nF). Segue o vídeo.

Obs: A forma que consegui passar os dois vídeos ao mesmo tempo foi esta.

Espere os dois vídeos carregarem, e depois aperte double up :D.

USB PIC18F4550 labVIEW teste.

(vídeo da esquerda adiantado 1 segundo, em relação ao vídeo da direita)

***

EDIT

Esqueci de tirar uns jumpers do gravador, por isto ele não estava reconhecendo.

Link para o comentário
Compartilhar em outros sites

Vou fazer o esquema de acender leds. Tem que verificar se vai acontecer algo quando o PIC acender ou apagá-los, como você disse... Assim que fizé-lo, posto aqui.

Cara, uma dúvida.

Qual a principal diferença entre a configuração HID e BULK? HID já tem drivers instalados e é mais lenta?

Valeu pela ajuda em Matheus! Se não fosse você, acho que nem teria tentado mexer com USB.

Link para o comentário
Compartilhar em outros sites

Olá amigo!

Sei que não nos conhecemos, mais estou precisando de ajuda, e vi esse seu topico, e acho que você possa me ajudar. Meu nome é Bryen. A pouco tempo ganhei um kit de desenvolvimento PIC 18f dá cerne tecnologia. Sou totalmente leigo quanto a PIC, mais quero aprender. Para você entender melhor o qual é meu problema, de uma olhada no topico que eu criei em uma comunidade no orkut. Se eu escrever tudo aqui, vai ficar muito grande. Segue link para acesso>>> http://www.orkut.com.br/Main#CommMsgs?cmm=128885&tid=5573329616920552750

Agradeço muito se puder me ajudar.

Aguardo:

Bryen;

Link para o comentário
Compartilhar em outros sites

Não é bem assim. Existem 4 tipos de tranferencia no USB.

Bulk, Control, Interrupt e Isochronous. Cada uma tem sua caracteristica e aplicação.

Control eu não vou comenta muito pois raramente é utilizado para aplicações.

Bulk tem a maior capacidade de transferencia de dados, pois ele basicamente utilisa toda a banda disponivel, porém com a troca de não ter uma garantia de latencia. Em muitas aplicações que requeiram um minimo de tempo real (ja que o USB por si ja é pessimo nesse quesito), bulk não é aceitavel por essa caracteristica. Além disso ele tem detecção de erro e auto-reenvio, ou seja ele de certa forma garante que os dados irão chegar corretamente. Basicamente essas caracteristicas são otimas para transferencias grandes de dados que não possam de nenhum forma serem corrompidos, mas não seja importante o tempo exato entre cada transferencia. Pode se ver que alicações ideias são dispositivos de armazenamento de dados como pendrives, HD externos entre outros. Uma outra aplicação utilizada é osciloscopio via USB. Vale ressaltar que essa caracteristica de alta taxa de troca de dados é conseguida apenas se você não ficar trocando a direção dos dados (do computador do dispositivo, do dispositivo para o computador), pois isso requer um tempo relativamente grande.

Interrupt (que é a transferencia que HID é baseado) tem a mesma caracteristica do bulk quanto à garantia detecção de erros, e ao mesmo tempo tem uma latencia muito mais bem controlada, ou seja uma parte da banda é reservada para ele (no bulk ele utiliza o que estiver sobrando, não existem garantias). Porém como Interrupt tem uma garantia de banda, essa banda é bem limitada, que acaba sendo um pacote por milisegundo. O tamanho do pacote muda de tipo para tipo (slow, full e fast). É por isso que HID é utilizado para controles, mouses etc.. pois ele garante os dados, e ainda mais garante que esses dados serão entregues dentro de um certo periodo.

Para Isochronous tem uma banda garantida, e ao mesmo tempo essa banda é relativamente grande, porém não existe garantia de detecção de erros, e não ha reenvio de dados caso o erro seja detectado. Ou seja é util para aplicações onde você precisa enviar um monte de dados dentro de um perido de tempo determinado, porém se alguns dados não chegarem, ou chegararem errados não ha problema. O seu grande foco de implementação sao dispositivos como webcams, microfones, caixas de som, e assim por diante. Ou seja dispositivos que um byte errado não ira interferir muito em sua operação. Se você estiver ouvidno uma musica e um byte chegar errado, você nem vai perceber, porém se você estiver ouvindo uma musica e o tempo entre o uma nota e outra chegaram errados, vai ficar bem zuado. Esse o motivo da garantia de entrega dos dados dentro de um certo periodo (que bulk não garante).

Isso é tudo beeem resumido, porém basicamente não se pode criar essa ideia de HID(interrupt) é simples (o que é mentira, pois no fundo a sua complexidade é a mesma de qualquer outra) e lerdo e Bulk é mais complexo e rápido. Você tem que avaliar as caracteristicas que você quer, e escolher baseado nisso.

Nesse projeto dp Matheus por exemplo. Pessoalmente eu iria de Interrupt (não necessariamente HID) com certeza, pois para controlar algo você não precisa de uma transferencia absurda de dados, mas sim algusn dados com uma latencia bem garantida. Mas isso é opinião propria, e não ha nada melhor do que a proprioa realidade para justificar qualquer coisa. Se ele implementou e esta funcionando como ele queria quer dizer que foi uma boa escolha.

Abs

Link para o comentário
Compartilhar em outros sites

Boa noite pessoal.

Sink00, infomações valiosas essas... Valeu cara! (já copiei em um notepad =D)

MatheusLPS, segue o vídeo com o acendimento dos LEDs. Percebi que ao dar o comando para acender o LED, no exato momento, a comunicação meio que dá uma travada, coloquei dois capacitores em paralelo à alimentação ai diminuiu, depois alimentei o circuito com uma fonte externa, ai ficou quase imperceptível.

Valeu matheuzão...

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
  • 2 semanas depois...

Pessoal,

Estou com um problema. Não estou conseguindo utilizar o usb no proteus. Já tinha conseguido antes. Quando conseguir, instalei o virtual usb do proteus e depois o driver do cdc que se encontra na pasta do PICC. O pc reconheceu como (COM4), fiz vários testes (usando o hyper terminal, um software em java) e até então funcionava perfeitamente. Quando foi ontem parou de funcionar e não reconhece mais a porta COM. Já realizei o mesmo procedimento de instalação mas não obtive sucesso, não reconhece mais uma porta COM.

Gostaria de uma ajuda. Alguem já teve este problema?

Grato

Link para o comentário
Compartilhar em outros sites

Obrigado, conseguir! Foram várias tentativas.

Como te falei, estou usando o usb cdc e estou tendo dificuldade para realizar leitura tanto de um double quanto de uma String. Por exemplo não conseguindo utilizar esta função get_long_usb() ou get_float_usb(), não sei porque, eu importo a biblioteca certa (input.c) mas não dá erro.

Obrigado

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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