[QUOTE = Atom058; 60240 Olá] - Eu tenho um problema estranho ao tentar acessar uma EEPROM em um determinado endereço. Eu tenho uma seqüência de cinco 24LC256 EEPROMs todos compartilhando o mesmo relógio e linha de dados. Na 4 primeiro, eu estou armazenando um POSIÇÃO DE 4 servos POSIÇÃO COM O valor convertido para um byte de tamanho variável. Na última, eu estou armazenando o estado de um relé (ou 1 0). O EEPROMs abordadas são 000, 001, 010, 011 e 100. Não tenho nenhum problema de leitura e escrita para os 3 primeiros EEPROMs ea última, mas por alguma razão, eu não consigo ler ou gravar uma EEPROM 4 (011). Tentei trocar EEPROMs ao redor e ter determinado que há alguma coisa ver um com esse endereço. Meu código é bastante simples - modo de gravação ler = as posições dos servos e revezamento 4 conversor para byte de tamanho (servos) os dados e Armazenar. Modo de reprodução = ler os dados converte-lo para uma palavra-de tamanho (número de servos) e enviá-lo para fora. O mesmo código é utilizado para todos os 4 servos. 1, 2 e funcionam bem 3, apenas 4 pinos para fora durante a reprodução. O servo # 4, quando sob o controle manual, responde muito bem. Alguém tem alguma idéia do que poderia ser meu problema? Em anexo é um desenho mostrando o layout do meu EEPROM. Eu pensei que poderia ser um problema de tempo, mas porque é que só afetam # 4 e # 5, não?
* PBP PIC 2,5 e 877A.
* Aqui estão alguns snipetts Código:
**** Var palavra Posit
**** Posit1 palavra Var
**** Posit2 palavra Var
**** Posit3 palavra Var
**** Var palavra Posit4
**** Var PVal byte
**** "EEPROM 1 CONTERA Dados sobre POSIÇÃO Servo de 1
****% EChip1W CON 10100000 'modo de gravação para EEPROM 1
**** EChip1R% CON 10100001 'modo de leitura para EEPROM 1
**** "EEPROM 2 Irá Conter dados sobre POSIÇÃO de Servo 2
****% EChip2W CON 10100010 'modo de gravação para EEPROM 2
**** EChip2R% CON 10100011 'modo de leitura para EEPROM 2
**** "EEPROM 3 CONTERA Dados sobre POSIÇÃO de Servo 3
****% EChip3W CON 10100100 'modo de gravação para EEPROM 3
**** EChip3R% CON 10100101 'modo de leitura para EEPROM 3
****
**** "EEPROM 4 Contém dados sobre POSIÇÃO de Servo 4
****% EChip4W CON 10100110 'modo de gravação para EEPROM 4
**** EChip4R% CON 10100111 'modo de leitura para EEPROM 4
****
**** "EEPROM 5 Irá Conter dados para Relay
****% EChip5W CON 10101000 'modo de gravação para EEPROM 5
**** EChip5R% CON 10101001 'modo de leitura para 5 EEPROM
* Modo de Gravação Código Snipett ---
**** Gosub ReadPot1
**** PULSOUT servo1, posit1
**** Pausa 5
********
**** Gosub ReadPot2
**** PULSOUT servo2, posit2
**** Pausa 5
********
**** Gosub ReadPot3
**** PULSOUT servo3, posit3
**** Pausa 5
********
**** Gosub ReadPot4
**** PULSOUT servo4, posit4
**** Pausa 5
**** Se recordflag = 1 then 'dados armazenam
******** Posicao = (posit1 * 23) / 100 'converter um valor para <255
******** Pval byte = posit 'colocar em uma variável
******** I2CWRITE DPIN, CPIN, EChip1W, Addr [PVal] 'write it out
********
******** Posicao = (posit2 * 23) / 100
******** Pval = posit
******** I2CWRITE DPIN, CPIN, EChip2W, Addr [PVal]
********
******** Posicao = (posit3 * 23) / 100
******** Pval = posit
******** I2CWRITE DPIN, CPIN, EChip3W, Addr [PVal]
************
******** Posicao = (posit4 * 23) / 100
******** Pval = posit
******** I2CWRITE DPIN, CPIN, EChip4W, Addr [PVal]
************
******** Se RelaySw = 1 then
************ Pval = 1
******** Diferente
************ Pval = 0
******** Endif
******** I2CWRITE DPIN, CPIN, EChip5W, Addr [PVal]
******** Addr = addr + 1
**** Endif
* Modo de Reprodução Código Snipett ---
**** Alta PlayLED
**** Ler 16, Lastaddr.byte0
**** Ler 17, lastaddr.byte1
****
**** Addr = 1 para um lastaddr
******** I2cread dpin, CPIN, echip1r, addr, [pval]
******** Posit = pval * 4 'multiplicar por 4,03 para converter de volta para o Word
******** POSIÇÃO = posicao + ((pval * 3) / 100)
******** PULSOUT servo1, postular
******** Pausa 5
********
******** I2cread dpin, CPIN, echip2r, addr, [pval]
******** Posit = pval * 4
******** POSIÇÃO = posicao + ((pval * 3) / 100)
******** PULSOUT servo2, postular
******** Pausa 5
****************
******** I2cread dpin, CPIN, echip3r, addr, [pval]
******** Posit = pval * 4
******** POSIÇÃO = posicao + ((pval * 3) / 100)
******** PULSOUT servo3, postular
******** Pausa 5
******** I2cread dpin, CPIN, echip4r, addr, [pval]
******** Posit = pval * 4
******** POSIÇÃO = posicao + ((pval * 3) / 100)
******** PULSOUT servo4, postular
******** Pausa 5
**************
******** I2cread dpin, CPIN, echip5r, addr, [pval]
******** Pval Se = 0 então
************ Baixo Relay
************ Baixa RelayLED
******** Diferente
************ Relé de alta
************ Alta RelayLED
******** Endif
********
******** Se SSRecBtn = 1 then
************ Baixo Relay
************ Baixa RelayLED
************ Baixa PlayLED
************ Pause 500
************ Goto Start
******** Endif
**** Próxima QUOTE [/]
Olá
iria me ajudar
que registram o movimento do servo-4
Tenho um programa em PBASIC
Eu quero converter para PICBASIC Pro
ser capaz de me ajudar
coloque bacalhau em um novo tópico
pesquisar
Bookmarks