Por exemplo, um PIC10F200T
Praticamente qualquer código que você escrever será maior que isso, a menos que seja um chip de finalidade única. Existe alguma maneira de carregar mais memória de programa do armazenamento externo ou algo assim? Só estou curioso, não vejo como isso poderia ser muito útil ... mas deve ser.
microcontroller
pic
memory
storage
coder543
fonte
fonte
Respostas:
Vocês, crianças, desçam do meu gramado!
384 bytes é bastante espaço para criar algo bastante complexo no assembler.
Se você pesquisar na história quando os computadores eram do tamanho de uma sala, você encontrará alguns feitos de arte verdadeiramente incríveis, executados em <1k.
Por exemplo, leia o clássico Story of Mel - A Real Programmer . É certo que esses caras tinham 4096 palavras de memória para brincar, os infiéis decadentes.
Observe também algumas das antigas competições demoscene em que o desafio era encaixar uma "introdução" no bloco de inicialização de um disquete, os alvos típicos eram 4k ou 40k e geralmente conseguiam incluir música e animação.
Editar para adicionar : Acontece que você pode implementar a primeira calculadora científica de US $ 100 do mundo em 320 palavras.
Edite para os jovens:
fonte
Os microcontroladores são baratos o suficiente para serem usados com frequência para fazer coisas realmente simples que, no passado, provavelmente teriam sido feitas com lógica discreta. Coisas realmente simples. Por exemplo, pode-se querer que um dispositivo ligue uma saída por um segundo a cada cinco segundos, mais precisamente do que um temporizador 555 seria capaz de fazer.
Isso seria um aplicativo real, utilizável, em menos de 32 palavras (48 bytes) de espaço de código. Pode-se facilmente adicionar algumas opções para que alguns pinos de E / S controlem as opções de tempo e ainda tenha muito espaço de sobra, mas mesmo que todo o chip tenha sido exatamente o que é mostrado acima, ainda pode ser mais barato e fácil do que qualquer alternativa usando discretos lógica. BTW, as
clrwdt
instruções poderiam ser movidas para a sub-rotina, mas isso tornaria as coisas menos robustas. Como está escrito, mesmo que uma falha faça com que a pilha de endereço de retorno seja corrompida, o cão de guarda não será alimentado até que a execução retorne ao loop principal. Se isso nunca acontecer, o cão de guarda reiniciará o chip após alguns segundos.fonte
clrwdt
instruções. Este não é o arranjo de contador absolutamente absolutamente à prova de falhas possível, mas é levada em consideração questões de segurança (por exemplo, evitarclrwdt
dentro de uma sub-rotina)."SOMENTE" 384 bytes?
No passado, eu tinha o trabalho de escrever um sistema operacional inteiro (sozinho) para um computador especializado que atendia o setor de gerenciamento de navios, oleodutos e refinarias. O primeiro produto da empresa foi baseado em 6800 e estava sendo atualizado para 6809, e eles queriam que um novo sistema operacional fosse compatível com o 6809 para eliminar os custos de licença do sistema operacional original. Eles também estavam aumentando o tamanho da ROM de inicialização para 64 bytes, acima dos 32. Se bem me lembro - foi há cerca de 33 anos! - Eu convenci os engenheiros a fornecerem 128 bytes para que eu pudesse colocar todos os drivers de dispositivo do sistema operacional na ROM e, assim, tornar todo o dispositivo mais confiável e versátil. Isso inclui:
Sim, tudo isso foi o mais simples possível e otimizado para as mãos para remover todos os ciclos estranhos, mas perfeitamente funcional e confiável. Sim, coloquei tudo isso nos bytes disponíveis - ah, também configurou o tratamento de interrupções, as várias pilhas e inicializei o sistema operacional em tempo real / multitarefas, avisei o usuário sobre as opções de inicialização e iniciei o sistema.
Um amigo meu que ainda é afiliado à empresa (seu sucessor) me disse há alguns anos que meu código ainda está em serviço!
Você pode fazer muito com 384 bytes ...
fonte
Você pode usar isso para aplicações muito pequenas (por exemplo , início atrasado da PSU , substituição do temporizador 555 , controle baseado em triac , LED piscando etc ...) com tamanho menor do que o necessário com portas lógicas ou um temporizador 555.
fonte
Projetei um sensor de umidade para plantas que rastreia a quantidade de água que a planta possui e pisca um LED se a planta precisar de água. Você pode fazer o sensor aprender o tipo de planta e, assim, alterar suas configurações durante a execução. Ele detecta baixa voltagem na bateria. Eu fiquei sem flash e ram, mas consegui escrever tudo em código C para fazer com que este produto funcionasse perfeitamente.
Eu usei o pic10f que você mencionou.
Aqui está o código que eu criei para o meu sensor de água da planta. Eu usei o pic10f220, pois possui um módulo ADC, ele tem a mesma memória que o pic10f200, tentarei encontrar o esquemático amanhã.
O código está em espanhol, mas é muito simples e deve ser facilmente entendido. Quando o Pic10F sair do modo de suspensão, ele será redefinido para que você precise verificar se foi um PowerUp ou uma redefinição e agir em conformidade. A configuração da planta é mantida no aríete, pois nunca realmente desliga.
MAIN.C
MAIN.H
Deixe-me saber se você tiver dúvidas, tentarei responder com base no que me lembro. Eu codifiquei isso há vários anos, então não verifique minhas habilidades de codificação, elas melhoraram :).
Nota final. Eu usei o compilador Hi-Tech C.
fonte
Uma coisa que eu não vi mencionado: o microcontrolador que você mencionou custa apenas US $ 0,34 cada, em quantidades de 100. Portanto, para produtos baratos produzidos em massa, pode fazer sentido ir para o problema extra de codificação imposto por uma unidade tão limitada. O mesmo pode se aplicar ao tamanho ou ao consumo de energia.
fonte
Quando eu estava no colegial, tive um professor que insistia que o escurecimento da luz era uma tarefa muito difícil para um aluno como eu enfrentar.
Assim desafiado, passei bastante tempo aprendendo e entendendo o escurecimento da luz com base em fase usando triacs e programando o 16C84 do microchip para realizar esse feito. Acabei com este código de montagem:
É claro que você precisaria modificar isso para o chip mencionado e talvez adicionar uma rotina serial barata para entrada, já que seu chip não tem uma porta de 8 bits de largura para ouvir, mas a idéia é que um trabalho aparentemente complexo possa feito em muito pouco código - você pode ajustar dez cópias do programa acima no 10F200.
Você pode encontrar mais informações sobre o projeto na minha página Light Dimming . Aliás, eu nunca mostrei isso ao meu professor, mas acabei fazendo uma série de equipamentos de iluminação para o meu amigo DJ.
fonte
Bem, anos atrás, eu escrevi um controlador de temperatura com E / S serial (batendo a E / S serial porque o MCU não tinha um UART) e um simples interpretador de comandos para conversar com o controlador. O MCU era um MC68HC705K1 da Motorola (agora Freescale), com 504 bytes de memória de programa (OTPROM) e cerca de 32 bytes de RAM. Não tão pequeno quanto o PIC que você mencionou, mas eu lembro de ter sobrado ROM. Ainda tenho algumas unidades montadas, 17 anos depois; quer comprar um?
Então, sim, isso pode ser feito, pelo menos na montagem.
De qualquer forma, recentemente escrevi programas C muito simples que provavelmente caberiam em 384 bytes quando otimizados. Nem tudo requer software grande e complexo.
fonte
Você pode gravar um LED piscando com 384 bytes de memória de programa e muito mais.
Até onde eu sei, não é possível estender a memória do programa com um chip externo (a menos que você esteja criando um interpretador ASM completo nos 384 bytes , o que seria lento). É possível estender a memória de dados com um chip externo (EEPROM, SRAM).
fonte
Na verdade, é pior do que você pensa. A página vinculada da Mouser está confusa quando especifica esse processador como tendo 384 bytes de memória de programa. Na verdade, o PIC10F200 possui 256 palavras de 12 bits da memória do programa.
Então, o que você pode fazer com isso? O conjunto de instruções PIC de 12 bits usado pelos dispositivos PIC10F20 x são instruções de uma única palavra; portanto, depois de subtrair algumas instruções para a configuração do processador, você fica com espaço suficiente para um programa de cerca de 250 etapas. Isso é suficiente para muitas aplicações. Eu provavelmente poderia escrever um controlador de máquina de lavar nesse tipo de espaço, por exemplo.
Acabei de examinar os compiladores PIC C disponíveis e parece que cerca de metade deles nem sequer tentará emitir código para um PIC10F200. Aqueles que provavelmente publicam tanto código padrão que você pode apenas escrever um pisca-pisca de LED no espaço restante. Você realmente deseja usar a linguagem assembly com esse processador.
fonte
balançando minha bengala no meu dia, tivemos que gravar nossos próprios pedaços na areia!
Em 1976 (ou nos arredores), o sistema Atari 2600 VCS era uma das "plataformas de videogame" mais populares da época. Nele, o microprocessador (MOSTEK 6507) funcionava a aproximadamente 1 MHz e possuía **** 128 bytes de RAM **.
Um segundo exemplo que me lembro de um microcontrolador com RAM extremamente limitada (~ 128 bytes) foi um PIC12F usado em um conversor DC-DC. Este micro também teve que usar a linguagem assembly para rodar.
fonte