Presentes: Victory, Gilmar, Rodrigo
Muitas dificuldades e poucos resultados este foi o salda da reunião!
Concluimos toda a parte de escrita no LCD e partimos para a leitura dos sensores... e aí é que encontramos as dificuldades! A seguir close da montagem mecânica da carenagem do robô e dos motores.

Passamos a manhã toda tentando ler um push-button conectado à porta 2 do 8051 sem sucesso! Mas é isso mesmo... semana que vem tentamos novamente, afinal o robô depende disso!
Estudei muito sobre leitura de sensores e pude concluir que na verdade acho q teremos que usar interrupções que possibilitam a interrupção do ciclo de operação do programa para o tratamento do evento de interrupção, o que será importante por exemplo p/ dar prioridade a inversão do movimento no caso da detecção da linha branca do ringue.
Como o 8051 disponibiliza apenas 2 entradas de interrupções já tratei de procurar uma forma de como tratar os 4 leitores infra-vermelhos e 4 sensores de toque que estarão presentes no robô. Bom achei um circuito de expansão interessante que testaremos nas próximas reuinões. No esquema a seguir é possível expandir uma entrada de interrupção para até 4 sensores!

A reunião serviu tb para mostrar q nem tudo é tão fácil quanto parece ser... encontrei um conportamento bastante inesperado no código a seguir. Por mais estranho q possa parecer o retorno apresentado no LCD para a execução das MOV A, #30h e MOV A, R0 não é o mesmo! Se alguem poder me exeplicar pq estou aceitando qualquer comentário!
main:
LCALL inic_display ;Inicializa as configurações do LCD
MOV R0, #30h ;zera registrador
MOV A,#00h ;Move para o acumulador a posicao que deve ser iniciada a escrita
LCALL set_pos ;Chama função que seta a posicao do cursor do LCD
MOV A,#'M' ;Move para o Acumulador o caracter a ser escrito
LCALL wrcar1 ;Chama a funcao que escreve o caracter no LCD
MOV A,#'1'
LCALL wrcar1
MOV A, #30h
LCALL wrcar1
MOV A,#' '
LCALL wrcar1
MOV A,#'M'
LCALL wrcar1
MOV A,#'2'
LCALL wrcar1
MOV A, R0
LCALL wrcar1
MOV a, #10 ;Move o valor 10 para o acumulador
CJNE a, #30, $ ;Se o valor do acumulador nao for 30, refaz o loop
Presentes: Gilmar, Victory, Fellipe, Airton, Neto, Lourenço
Como sábado seria carnaval transferimos as atividades do grupo para a sexta-feira o dia inteiro. Segue foto do robô de sumô "arm-lock" no estágio atual

Victory e Fellipe trabalharam na conclusão do software de controle de leds que futuramente controlarão os relés de acionamento dos motores. Esta estapa já foi concluída e o código assembler necessário isolado para uso futuro. Segue abaixo foto da montagem e código assembler do programa

ORG 0000H
LJMP main
ORG 0030H ;Pulando os enderecos das interrupcoes
main:
MOV A, #00000000b
MOV P2, A ;Atribuição da porta P2 = registrador
MOV R0, #0Ah ;Atribue o acumulado
CALL atraso_5s ;Executa atraso de 5 segundos
MOV A, #00000001b
MOV P2, A ;Atribuição da porta P2 = registrador
(...)
atraso_5s:
MOV TMOD, #00010001b ;Configura timer 1 e 2 para modo 1 16 Bits
MOV TH0, #4Ch ;Carrega parte alta do temporizador
MOV TL0, #04h ;Carrega parte baixa do temporizador
CLR TF0 ;Limpa flag de overflow do timer 0
SETB TR0 ;Liga o timer 0as
JNB TF0, $ ;Aguarda flag de overflow do timer 0 estourar (TF0 = 1)
CLR TF0 ;Zera flag de overflow do timer
CLR TR0 ;desliga o timer 0
DJNZ R0, atraso_5s ;decrementa e retrona se R0 <> 0
RET
END
Neto trabalhou na parte do circuito impresso. Usando o software PCBExpress fizemos a placa de controle dos motores e depois testes de tranferência do desenho impresso no papel Glossy para a placa de cobre.

Erramos várias vezes o processo mas no final parece q deu certo.

Airton trabalhou no fechamento do RT1 e na conclusão de diversos tópicos do RT2.
Bom carnaval já passou e sábado que vem agora tem mais!
|
||||
|
||||