68K ou coisa assim, again

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Mensagempor msamsoniuk » 30 Dez 2006 19:08

legal eh deixar ele em loop infinito no mesmo endereco, algo como:

loop: bra loop

que eh codificado como uma unica instrucao de 16 bits (0x60FE), entao ele inicializa, busca o vetor do PC e SP e vai para o loop, ou seja, fica gerando ciclo de bus, mas sempre no mesmo endereco fixo. monitorando o bus, eh facil verificar se ele esta corretamente em loop nesse endereco :)

tipo, o que ocorreu com o PIC ? eu nao entendi esse termo "saturar" hehehe
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 30 Dez 2006 22:57

blz pode deixar, já tó com umas tabelas do set de instruções, como antes o 68K, ficava doidão, entrava em modo de operação q não existe, etc...
Ver o menino operando em loop aberto e parando direitinho no modo supervisor já motivo de festa :wink:

Saturar digo, quando o uC não grava mais, o ultimo conteudo gravado fica nele e já era, em 2004 uns dois PIC16F84 saturaram sem a menor explicação, já no caso atual, foi fruto do ser humano ficar programando de madruganda e no tira-coloca da placa no gravador, coloquei meu unico PIC16F877-20 ao contrario e ele fritou, funciona ainda, mas com o codigo q era de teste, e não grava mais. Isso foi sabado da semana passada, na terça comprei um PIC16F877A e codigo q deveria funcionar não funciona nem a pau, tentei converter pro 18F452, mas não foi de cara, em vez de ficar debugando, estou fazendo algoritmos e fluxogramas, e vou refazer o codigo q fica mais facil, obs: o programa já tem umas 2 mil e poucas linhas, a paginação do PIC ferrou tudo, como há uma interligação de varias rotinas o vai e vem de pagina pra pagina o PIC fica doido, esquema pra essa parada é fazer uma maquina de estado com rotinas totalmente independetes uma da outra.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 02 Jan 2007 11:36

hehehe que confusao... nessas horas o HC908 me parece bem mais simples que o PIC :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 17 Jan 2007 12:36

Agora pra ficar legal meu gravador de PIC queimou, já montei um substitudo pra ele, mas vou dar um tempo antes de voltar ao hardware, fiz uma busca atrás de IDEs pro 68K mais amiga e achei uma otima, easy68K, free, completa e com direito a um otimo simulador, q estou usando como base pra estudar o assembler.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor Msconfig » 27 Jan 2007 15:28

Avatar do usuário
Msconfig
Byte
 
Mensagens: 116
Registrado em: 18 Nov 2006 16:11

Mensagempor mastk » 17 Mar 2007 14:45

Valeu ms, mas já to com o sistema rodando certinho, minha vontade no momento é fazer um OS bem simples a nivel de estudo. Sam pelo que vc tinha postado a muito tempo que há nescessidade de um sistema de arquivos, interresante como o S19 fica bacana pra isso, na rotina de interpretação do S19 que tenho ignoro todas as entradas que não sejam codigo, :| burro.
Se tivesse tempo,agora seria uma boa hora de colocar um AD (que pode ser o canal de PWM do proprio PIC) no BUS e fazer umas descargas de audio ou coisa assim. A escola ta me stressado, até me formar vai ser dificil...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 19 Mar 2007 12:12

voce jah esta conseguindo fazer o 68000 conversar com o PIC como se ele fosse um dispositivo de IO ? posta umas fotos de como ficou o projeto! :)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 22 Mar 2007 12:00

Sim, mas o PIC assume o BUS pra, ideia é colocar algumas posições de memoria pra eles conversarem, assim que tiver tempo posto fotos.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor mastk » 02 Abr 2007 11:10

Não coseguir subir uma fotos por motivos de força maior (virus ferrado a conecção dinovo XP), vou colocar meu filho pra roda aqui no trampo e subir as fotos.

Uma coisa bacana que conseguir esse FDS, foi enviar o S19 pra minha placa, já tinha visto isso há uns 10 anos:

TYPE DELAY.S68 > COM1

(trem bão esse DOS)

Minha placa tá travando com isso, mas reconhece e armazena as entradas de codigo que interresam, bem, todo o caso eu tenho que fazer uma revisão nas rotinas de interpretação de S19 msm...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor mastk » 08 Abr 2007 18:18

Então:

START ORG $0000
MOVEQ #0010, D1

MOVEA #$0010, A1
MOVE D1, (A1)

LOOP
BRA LOOP

Programinha que usei nos testes, bem simples, a ideia era ver se o 68K escrevia certinho na memoria, e assim foi XD

O S19 do codigo:

S021000036384B50524F47202020313143524541544544204259204541535936384B6D
S10D0000720A327C0010328160FEA7
S804000000FB


Como já disse estou ignorando qualquer entrada que não seja codigo (ainda), logo só o S1.... é considerado pelo PIC.

O sistema rodando:

Imagem
Imagem

As coisas mais importantes estão OK, tipo, atualizar a RAM com a EEPROM, receber um arquivo, enviar, limpar a RAM, alterar a memoria, resetar o 68K, visualizar memoria. E disso mudei de ideia, já estou achando de bom tamanho as funções que tenho, se deixar o PIC assim acho que posso usar o msm codigo pra um sistema com 8086 ou Z80, mas isso é pra depois...

Imagem
Imagem

Aqui coloquei o sistema para receber um arquvo, fiz BAT pra iniciar a COM1 pro DOS, dai é "cospir o S19" os XXX é para o PIC sair do modo de recebimento.

Imagem

E No endereço 0x0010 é possivel ver o 000A, conforme o esperado e com a caneta LED, o 101 nas linhas de endereço baixa, certinho ;)

Do jeito que a coisa tá, já dá pra brincar bastante, só dar um ponto final no meu TCC e blz.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 09 Abr 2007 13:39

esta ficando realmente muito bom! :)

soh um detalhe importante para o 68000: voce sempre tem que comecar o codigo do programa no endereco 0x400, pois o primeiro 1KB deve ser reservado para a tabela de vetores (256 vetores de 32 bits cada um), que voce ira utilizar para interrupcoes de hardware e software, bem como para tratar violacoes de privilegio e excessoes diversas. e em especial, os 2 primeiros vetores sao o PC e SP inicial: o 68000 le esses 2 vetores antes de rodar qq codigo.

portanto vc deve lembrar de inicializar eles no seu S19 e acho que algo como isso produziria o resultado esperado:

ORG 0
DC.L 1024;
DC.L 65534;

ORG 1024
seu codigo

assim vc configura o PC e SP iniciais para o 68000: PC apos a tabela de vetores e SP no topo da memoria (e ambos *sempre* com endereco par!)
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 18 Abr 2007 13:29

Ue, vc tem 4 bytes em cada vetor, Imagino que seria algo tipo:

0x0000 6000 ;instrução BRA
0x0000 03FF ;endereço para o BRA

0x03FF; programa

O processador começa a rodar apatir do endereço 0x0000 certo? o DC.L 0xXXXX é para vc colocar o valor XXXXX na região atual, mas deveria o processador deveria pegar instruções não?
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor msamsoniuk » 18 Abr 2007 19:19

quando o 68000 sai do RESET, configurado para um sistema com bus de 16 bits, ele busca sucessivamente 4 palavras de 16 bits, sendo que as duas primeiras compoe um valor de 32 bits que eh o SP inicial e as duas outras compoe um valor de 32 bits que eh o PC inicial.

entao, independente de onde esta localizada a flash ou o programa inicial, estas 4 primeiras palavras sempre sao buscadas nessa ordem e nao sao instrucoes, sao os valores efetivos carregados no SP e PC. no exemplo q eu postei antes, infelizmente, inverti a posicao do PC e SP inicial, assim, o correto seria:

ORG 0
DC.L 0x00010000 ; SP inicial
DC.L 0x000003FF ; PC inicial

ORG 1024
programa

note que os vetores armazenados como valores de 16 bits seriam vistos na memoria como:

0x00000000 0x0001
0x00000002 0x0000
0x00000004 0x0000
0x00000006 0x03FF
...

o SP, claro, pode apontar para qq lugar, desde que possua memoria RAM ali e o endereco seja par. o PC tambem possui essa restricao de alinhamento: se o endereco nao for par, ele crasheia e ativa o pino HALT (estas restricoes valem para qq 680x0 ou coldfire).
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor mastk » 25 Mai 2007 13:35

Olha SAM, nisso eu estou em duvida ainda, pelo simulador, se eu colocar um DC.L 0xXXXXXXX, ele não execulta corretamente. Vou colocar isso pra no decorrer da proxima semana pra rodar na placa real e comprovar. Em 3 semanas vou estar livre e vaoltarei com tudo :)

Outra coisa que fiz tocar sonzinho por um auto-falante compartilhando o LED de debug, espero poder reproduzir voz, mas de forma bem pobre.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor mastk » 05 Jul 2007 15:08

De fato burrice minha, estou querendo mudar a placa novamente pra deixar numa caixa, disso penso em comprar placa-padrão com as trilhas já curto-circuitadas e só soldar headers e espetar a RAM, EPROM, PIC etc, minha vontate é que seja possivel colocar o coldfire no lugar do 68K mas pela a diferença da velocidade já estou desistindo da ideia.

Em termos de soft, pretendo refazer tudo da parte do PIC, mas de forma mais simples, tipo, não ter muitas mensagens e unificar todas as funções. Operar o sistema por soft simples em delphi ou C, que é rapido.

Enfim agora que estou retomando estou uma visão diferente de "do que fazer" e "como fazer"

Quanto ao coldfire realizaei tentativas para fazer um adaptar pra barra de pinos, porém não conseguir transferir corretamente, tó pra fazer novas tentativas.
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

AnteriorPróximo

Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x