Ir ao conteúdo
  • Cadastre-se
josias001

8051 Linguagem C para uC

Posts recomendados

Existe algum macete para não se perder com tantas chaves { } num programa em C?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Geralmente o compilador tem uma opção que exibe as chaves correspondente com uma cor diferenciada quando clicado.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vtrx

Olá:

Fiz um programa em C para 8051 (SDCC), um relógio com alarme que mostra as horas, minutos e segundos, mais o dia da semana num display LCD.

A quantidade de chaves me deixou muito confuso. Para minimizar a dificuldade, usei a IDE do Arduíno que exibe a chave correspondente quando você destaca uma delas.

Agora quero colocar mais 7 alarmes (Alm1, Alm2, Alm3..etc) e fazer um sinaleiro, igual a esses que comandam sirene das escolas, mas acho que vou ter problemas com a organização das chaves ....

Josias001

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem editores com sintaxe colorida. Quanto à organização, pesquise sobre indentação deve te ajudar ainda mais.

 

3 horas atrás, josias001 disse:

colocar mais 7 alarmes (Alm1, Alm2, Alm3..etc) e fazer um sinaleiro, igual a esses que comandam sirene das escolas, mas acho que vou ter problemas com a organização das chaves ...

Você está colocando a carroça na frente do cavalo. Crie sua própria organização e não se perde.

5 horas atrás, josias001 disse:

macete para não se perder com tantas chaves { } num programa em C

Sim, eu tenho macetes mas são intransferíveis com palavras humanas. De fato como disse o amigo

4 horas atrás, vtrx disse:

o compilador tem uma opção que exibe as chaves correspondente com uma cor diferenciada quando clicado

depende do compilador (ou d editor de texto). Alguns mostram linhas entre chaves. Outros até complementam o código pra você. Portanto, são muitas opções e muitas emoções...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vtrx

@Isadora Ferraz

 

Boa Noite:

Pesquisando, conforme o conselho da amiga, descobri que eu já fazia indentação antes mesmo de saber o que isso significava, pelos livros que eu li.

Achei a solução: dividi o programa em várias partes formando funções. Assim o main ficou muito mais fácil de entender.

Obviamente declarei as funções no inicio do programa.

Agora vou trabalhar no sinaleiro.

Agradeço a ajuda.

Josias001

 

void main(){
LCD_init();
atualizaLCD();
P0_0=1;
while(1){
      trecho1();
      trecho2();
      trecho3();  

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde:

Para encerrar esse tópico, comunico que, uma maneira muito fácil (na minha opinião) de lidar com as chaves da linguagem C, para quem programa 8051 com o compilador SDCC é usar a IDE do Arduíno, que exibe a chave correspondente quando você destaca uma delas. Graças à esse macete e à divisão do programa em várias partes (funções), consegui fazer o relógio sinaleiro sem maiores dificuldades, que mostra as horas e o dia da semana no display LCD, assim como 7 alarmes (alm1, alm2, alm3...etc) que podem ser configurados para tocar todos no mesmo dia ou nos outros dias da semana.

 

OBS: Acostumado com os PICs, quando conheci o 8051 não dei muito valor, pela ausência de recursos e pelo baixo fornecimento de corrente de saída. Agora reconheço que é um grande uC, muito bom.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 15/12/2019 às 11:37, josias001 disse:

um grande uC, muito bom.

...que se torna pequeno e 'muito ruim' depois de você conhecer os stm32fxxx. 32 bits (do 8 pula o 16), uma literal fração do preço, 128K de flash, adc, dma, portas e mais portas, programador stlink uma bagatela, e sim funciona e compila na ide do arduino e ... um monte de etc... ufa

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
23 horas atrás, Isadora Ferraz disse:

...que se torna pequeno e 'muito ruim' depois de você conhecer os stm32fxxx. 32 bits (do 8 pula o 16), uma literal fração do preço, 128K de flash, adc, dma, portas e mais portas, programador stlink uma bagatela, e sim funciona e compila na ide do arduino e ... um monte de etc... ufa

@Isadora Ferraz

 

Amiga: 

Por favor, não despreze o velho 8051! É um excelente uC... e pelo que eu pude apurar, ele ainda é a base dos estudos sobre microcontroladores em muitas escolas (muitos entram no mundo maravilhoso dos microcontroladores através dele), e ele ainda é produzido por muitas empresas, está longe de ser aposentado.

Confesso que por ser um projeto antigo, falta alguns recursos ( quando coloquei a carroça na frente do cavalo* e fiz meu relógio mestre-sinaleiro só pude colocar 18 alarmes no mesmo (que já está funcionando) porque faltou memória RAM para a criação de variáveis) mas para o básico ele ainda serve muito bem.

 

Quanto aos stm32fxxx, eu lembro um provérbio: " O tigre caça presas grandes como búfalos, já o gato caça ratinhos" ou então um antigo ditado sumério:

" Não vá o sapateiro além das sandálias "

 

Reconsidere, por gentileza :D

 

* Perdoe a provocação, não consegui resistir...

Josias001

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, josias001 disse:

não despreze o velho 8051! É um excelente uC... e pelo que eu pude apurar, ele ainda é a base dos estudos sobre microcontroladores em muitas escolas (muitos entram no mundo maravilhoso dos microcontroladores através dele)

Amigo, sim já 'peguei' este mc no passado e como se não bastasse sua homônima era minha companheira de buteco. Portanto não considere desprezo mas sim uma 'evolução' (atualmente só tomo vinho seco).

E sim, as escolas antigamente ensinavam válvula e nem sei por quê motivo não ensinam mais... estranho. 🤔

 

1 hora atrás, josias001 disse:

para o básico ele ainda serve muito bem

Aí sim... Seu hw é relativamente simples (em comparação com os st) e uma excelente introdução (ui...) no micromundo dos mc's.

 

1 hora atrás, josias001 disse:

Reconsidere, por gentileza

Infelizmente não posso. Aqui fora no mundo real o bixo pega. De fato, os st são como um proveŕbio mais nosso: 'matar passarinho com canhão' e cada centavo pende a balança pro lado do custo o que nos leva a 'maior lucro com menor custo' (este inventei agora)😁

 

Ah e pra complementar, o st é 'arduinizável'. Você grava um bootloader nele e pá.. Estou trabalhando nisso agora mas no desafiador 'ambiente' linux.

 

Portanto, pra próxima etapa pule pic e avr...😉

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom ..... para quem TRABALHOU com 8080, 8085, Z80 e 6502, participou do desenvolvimento de um PC-DOS 3.2 , programou assembler para 8086 até o 80286, depois de velho mexeu com PIC e hoje usa os AVRs .....   quando abro um datasheet de um desses STM, realmente não tem como comparar nada que tenha trabalhado com ele, inclusive o 8051 o qual não tive o prazer de trabalhar, mas pelo que lí é inferior aos Avrs, imagina perto desses modernos STM ....

 

Concordo com a @Isadora Ferraz .

 

Mas também defendo o meu ponto de vista : são raríssimas as aplicações que precisam do poder de um desses STM. 

 

Ainda não enfrentei nenhum problema de desenvolvimento de produto que um simples Atmega não resolveu.

Algumas vezes tenho de misturar Assembler com o meu velho Basic, mas consigo coisas que muitos acham impossível de serem feitas com processadores que não sejam os STM ou outros "poderosos" do mercado.

 

Um programador que conheça a fundo o hardware de um microcontrolador faz uma dupla muito poderosa, e muitas vezes bate um programador mediano com um hardware poderosíssimo.

 

Portanto, @josias001 , o que vale é você saber usar bem o que tem no 8051. Com isso, o céu é ( quase ) o limite, use bastante, aprenda como todos os módulos internos interagem, e mande bala !

 

Paulo

 

 

  • Curtir 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

@josias001 , não se trata de falar mal do 8051. Considere 2 questões:

- O moderno de hoje é o caco velho de amanhã.

- O trabalho de aprender a lidar com um uC obsoleto é o mesmo de aprender um novo.

você já deve ter notado que trabalhar com programação é trabalhar com memória. A família STM8 oferece 20 formas de acessar a memória, o ARM (STM32F) quase a mesma coisa com a vantagem de manipular 32bits de forma natural e isso é muito útil quando se trabalha com grandes números. Como se isso não bastasse o desempenho proporcionado pela arquitetura de havard +  um fetche poderoso põe o 8051 no chinelo e pelo mesmo custo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é falar mal, mas temos de acompanhar o progresso, mesmo contra a vontade .....

 

Não basta pensarmos que a arquitetura de 32 bits vai fazer nossos projetos de 8 bits voarem, hoje em dia o clock é que está fazendo voar, e não os 32 bits ....

 

Segue um Bechmark simples para uma ideia da diferença de potência dos STM32F e os Avrs, programa feito na IDE do Arduíno :

 

Generic STM32F103C8T6 72MHz (Cortex-M3)
INT_LOOP(30000) bench...= 2924 microseconds 10.26MIPS
LONG_LOOP(30000) bench...= 2926 microseconds 10.25MIPS
FLOAT_DIV(30000) bench...= 27979 microseconds 1.20MFLOPS
DOUBLE_DIV(30000) bench...= 38000 microseconds 0.86MFLOPS
FLOAT_MUL(30000) bench...= 20463 microseconds 1.71MFLOPS
DOUBLE_MUL(30000) bench...= 25891 microseconds 1.31MFLOPS

Arduino Nano (ATMega328 16MHz AVR)
INT_LOOP(30000) bench...= 7544 microseconds 3.98MIPS
LONG_LOOP(30000) bench...= 13408 microseconds 2.24MIPS
FLOAT_DIV(30000) bench...= 154792 microseconds 0.21MFLOPS
DOUBLE_DIV(30000) bench...= 154800 microseconds 0.21MFLOPS
FLOAT_MUL(30000) bench...= 156744 microseconds 0.21MFLOPS
DOUBLE_MUL(30000) bench...= 156736 microseconds 0.21MFLOPS
 

 

Se levar em conta a diferença de velocidade de Clock, a diferença da arquitetura de 32 bits para 8 bits não tá ajudando quase nada ..... Vamos comparar ambos no mesmo Clock de 16 Mhz :

 

Generic STM32F103C8T6 16MHz (Cortex-M3)
INT_LOOP(30000) bench...= 2924 microseconds 2.28MIPS
LONG_LOOP(30000) bench...= 2926 microseconds 2.28MIPS
FLOAT_DIV(30000) bench...= 27979 microseconds 0.27MFLOPS
DOUBLE_DIV(30000) bench...= 38000 microseconds 0.19MFLOPS
FLOAT_MUL(30000) bench...= 20463 microseconds 0.38MFLOPS
DOUBLE_MUL(30000) bench...= 25891 microseconds 0.29MFLOPS
 

Arduino Nano (ATMega328 16MHz AVR)
INT_LOOP(30000) bench...= 7544 microseconds 3.98MIPS
LONG_LOOP(30000) bench...= 13408 microseconds 2.24MIPS
FLOAT_DIV(30000) bench...= 154792 microseconds 0.21MFLOPS
DOUBLE_DIV(30000) bench...= 154800 microseconds 0.21MFLOPS
FLOAT_MUL(30000) bench...= 156744 microseconds 0.21MFLOPS
DOUBLE_MUL(30000) bench...= 156736 microseconds 0.21MFLOPS

 

Como podem ver, só fica mais rápido visivelmente no Float_Mul ( 80% mais rápido ), mesmo assim no restante é muito parecido !

 

Dá para perceber que o compilador deveria ajudar muito mais do que realmente está ajudando, mas temos de lembrar que os Avrs fazem quase todas as instruções em um único ciclo de máquina, o que mostra que só terá diferença de performance significativa nas operações matemáticas de 32 bits e de ponto flutuante, embora pelo benchmarks dá para perceber que a IDE do Arduíno é uma droga quando compila para esses processadores de 32 bits. No restante das operações, os 32 bits não ajudam em nada, e em cálculos simples com inteiros até consegue piorar ....

 

Moral da história : se tivesse um AVR rodando a 72 Mhz mesmo em 8 bits seria um páreo fortíssimo a esses de 32 bits, mesmo sendo ARM  ....

 

Mas o caminho natural é o sumiço dos de 8 bits e cada vez mais o uso desses de 32 bits, principalmente pelo preço e Clock alto que possuem. Nas mãos de um programador Assembly, deve fazer uma diferença muito maior  ....

 

Paulo

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Sérgio Lembo

Amigo Sergio Lembo:

 

Em primeiro lugar eu quero dizer que respeito a opinião de todos ( No conselho de anciões, há sabedoria)

 

Não estou ao nível vocês em termos de conhecimento a respeito de microcontroladores. É como se fôssemos todos agentes da CIA, só que vocês são nível 7 e eu, nível 4, ou seja, o acesso de vocês é maior que o meu.   :D

 

(Não tenho a pretensão de me tornar um agente nível 7, se não houver necessidade. Poderia ganhar mais, ter mais status mas me sobraria pouco tempo para fazer as coisas que eu faço como agente nível 4 e que me apraz.

 

Se eu tiver que aprender a usar esses uCs poderosos, não quero fazê-lo somente para fazer leds piscarem, quero fazer projetos que estejam à altura do hardware do microcontrolador, senão não faz sentido.)

 

Apesar disso, como diria o Didi Mocó, eu dou as minhas "cacetadas", trabalho profissionalmente com PICs e tenho por hobby fuçar com 8051s e arduínos.

Também gosto de desmontar IBM pcs e usar os TTLs para fazer equipamentos muito úteis usando circuitos lógicos (Ultimamente tenho usado PICs para fazer isso).

Paguei R$ 8,00 num 8051, baixei o SDCC gratuitamente e também baixei muitas apostilas e PDFs da internet que me ensinaram a programar em C o 8051.

Gastei um pouco mais no gravador e num Kit de desenvolvimento para 8051 por que fiquei com preguiça de usar protoboard.

Foi mamão com açucar!

Logicamente (como diria o Sr. Spock) eu reconheço a necessidade de evolução, mas eu ainda não senti a necessidade de evoluir. Ainda não está na hora. Ainda consigo me virar (muito bem)  profissionalmente com os PICs.

(Me dou bem com os macacos na caverna!  :D )

Um dia talvez eu me veja na necessidade de aprender a lidar com uCs mais poderosos, quando esse dia chegar, quando essa necessidade chegar eu com certeza serei um agente nível 7, como vocês.

 

Para tentar expressar o que eu sinto no momento em relação a esse assunto, vou citar algo que aconteceu na fórmula 1:

- A Renault estava "voando"  na pista com seus motores V10 e a Ferrari estava desesperada, pois não conseguia acompanhar. Aí tiveram a ideia (a Ferrari) de migrar para motores V12.  Foram perguntar para os representantes da Renault o que eles achavam disso. Com muita segurança eles responderam:

- Ainda tem muita coisa que dá para fazer (melhorar) nos motores V10 antes de optarmos por um motor V12!

 

Vocês, programadores mais experientes necessitam de uCs mais poderosos para seus projetos. Eu me contento no momento com PICs, 8051s e arduínos. No momento eles são suficientes.

 

Tudo o que vocês disseram faz sentido mas, por enquanto, não é para mim.

Meus projetos não excedem a capacidade dos uCs que eu utilizo, sou um sapateiro e o meu negócio é sandálias

 

" Não vá o sapateiro além das sandálias "

 

Agradeço a interação e como já disse, respeito todas as opiniões.

 

OBS1: Me perdoe as brincadeiras, estou muito falante e de bom humor hoje!

OBS2: Comparo os uCs que eu estou acostumado a usar com minha extinta CBzinha (400) e esses que vocês citaram com a Kawasaki H2R (top do top):

- Se eu tivesse dinheiro para comprar uma H2R, provavelmente eu me mataria com ela (cada macaco no seu galho)

 

 

Josias001

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

8 horas atrás, josias001 disse:

Paguei R$ 8,00 num 8051

Amigo permita-me (mais uma vez) apresentar o argumento daqui de fora.

Ok você pagou os 8,00 (~U$2,00) e ficou feliz com seu filho único. Faça um execício mental e imagine que seu produto vai ser um pisca led que ninguém vai conseguir viver sem ele. Neste caso, sugiro não ter escrúpulos em usar um mc 32bits de ~U$0,60 pra fazer um led piscar.

8 horas atrás, josias001 disse:

aprender a usar esses uCs poderosos, não quero fazê-lo somente para fazer leds piscarem

Há um caso cá do meu lado em que um st é usado apenas pra acionar 3 relés... sério...

Se isto te choca, é o tal choque de realidade. Aqui fora o sistema é bruto: o bolso dá a palavra final.

 

Mas voltando à realidade-título... devido ao conhecimento da meia dúzia de instruções C, você deve ter facilidade em portar pra qualquer mc

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
27 minutos atrás, Isadora Ferraz disse:

Há um caso cá do meu lado em que um st é usado apenas pra acionar 3 relés... sério...

Se isto te choca, é o tal choque de realidade. Aqui fora o sistema é bruto: o bolso dá a palavra final.

 

Mas voltando à realidade-título... devido ao conhecimento da meia dúzia de instruções C, você deve ter facilidade em portar pra qualquer mc

@Isadora Ferraz

37 minutos atrás, Isadora Ferraz disse:

Há um caso cá do meu lado em que um st é usado apenas pra acionar 3 relés... sério...

Amiga:

Diante da tua defesa (apaixonada) de novos horizontes em termos de microprocessamento e diante também de sua persuasiva argumentação, eu me vejo numa condição de perturbadora curiosidade a respeito desses uCs. Sendo assim gostaria de contar com sua colaboração para começar a explorar esses componentes:

 

- Recomenda começar por qual componente?

- Existe algum compilador gratuito? (de graça, até injeção na testa:- sou fã do SDCC)

 

 

Dependendo unicamente desses dois fatores, acho que consigo fazer alguma coisa com esses microcontroladores...  :D

 

OBS1: Me passe um programinha simples (porém completo, com configuração de registradores, palavra de configuração, etc. pode ser um  led piscando) feito para esse tal uC para eu ver como é que é ( se não for pedir muito).

OBS2: Se puder me recomendar alguma literatura a respeito, eu também agradeço.

 

Josias001

 

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, josias001 disse:

Vocês, programadores mais experientes necessitam de uCs mais poderosos para seus projetos. Eu me contento no momento com PICs, 8051s e arduínos. No momento eles são suficientes.

 

Esse é o segredo do negócio, meu amigo !

Saber usar um microcontrolador que você já tem pleno conhecimento para os projetos mais avançados é algo que vai te ajudar muito !

Cá entre nós.... você acha mesmo que um dia vai precisar usar mais de 128K de memória para o seu programa ????

Usamos microcontroladores, não microprocessadores, nossos projetos tem a ver muito com hardware, meu maior projeto até agora coube em um espaço de 64K com folga. A grande maioria coube em 8K...

Como eu disse, a mudança será forcada pelo baixo preço e alto Clock desses novos brinquedos, é bom já ir se acostumando mesmo kkkk.

Mas pessoalmente eu não pego nenhum projeto que eu não consiga fazer com um Avr rodando a 20 Mhz. A idade me "obriga" a fazer isso, não dá para aprender mais uma nova tecnologia, nova linguagem, tudo ..... com 60 anos  !

Acabou o espaço para novo aprendizado no meu cérebro ...

 

Paulo

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, aphawk disse:

Cá entre nós.... você acha mesmo que um dia vai precisar usar mais de 128K de memória para o seu programa ????

 

Amigo:

Eu também acho que nunca irei precisar de 128K de memória de programa.

 

6 horas atrás, aphawk disse:

A grande maioria coube em 8K...

 

Também no meu caso, 8k está de bom tamanho, talvez 16K em alguns casos ( em ASM)

 

6 horas atrás, aphawk disse:

Como eu disse, a mudança será forcada pelo baixo preço e alto Clock desses novos brinquedos, é bom já ir se acostumando mesmo kkkk.

 

Com disse nossa colega, precisamos baixar os custos do produto...

 

6 horas atrás, aphawk disse:

A idade me "obriga" a fazer isso, não dá para aprender mais uma nova tecnologia, nova linguagem, tudo ..... com 60 anos  !

 

Somos contemporâneos...

 

 

 

6 horas atrás, aphawk disse:

Acabou o espaço para novo aprendizado no meu cérebro ...

 

Ainda tem espaço no meu cérebro para novos aprendizados, mas eu procuro otimizar ao máximo os recursos da minha massa encefálica. 

 

Não devemos perder tempo com coisas supérfluas. 

 

Josias001 

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, josias001 disse:

perder tempo com coisas supérfluas

Minutos preciosos...Eu perdi.. por você 😢

 

 


 

#define tudo_saida 0x33333333

#define led GPIOC_ODRbits.ODR15
#define ledsA GPIOA_ODR
#define ledsB GPIOB_ODR


void delay (unsigned int dl)
{
while (dl--);
}

#define ATRASO asm {nop} asm {nop} asm {nop}

void main() {
unsigned int a=1,b=0x8000,l;

GPIO_Digital_Output(&GPIOA_BASE,    //tudo saída
_GPIO_PINMASK_15|
_GPIO_PINMASK_14|
_GPIO_PINMASK_13|
_GPIO_PINMASK_12|
_GPIO_PINMASK_11|
_GPIO_PINMASK_10|
_GPIO_PINMASK_9|
_GPIO_PINMASK_8|
_GPIO_PINMASK_7|
_GPIO_PINMASK_6|
_GPIO_PINMASK_5|
_GPIO_PINMASK_4|
_GPIO_PINMASK_3|
_GPIO_PINMASK_2|
_GPIO_PINMASK_1|
_GPIO_PINMASK_0);
                                   
GPIO_Digital_Output(&GPIOB_BASE,_GPIO_PINMASK_ALL); //tudo saída
GPIO_Digital_Output(&GPIOC_BASE,_GPIO_PINMASK_15); //led=saída

//  RCC_APB1ENR=0xffff;
//  RCC_APB2ENR=0xffff; //clock em tudo

  GPIO_Clk_Enable(&GPIOA_BASE);
  GPIO_Clk_Enable(&GPIOB_BASE);
  GPIO_Clk_Enable(&GPIOC_BASE);

  ledsB=0xaaaa;
  ledsA=0x5555;
  delay(50000);
  ledsB=0x0000;

  for(;;)
  {
  ledsA=a;
  ledsB|=b;
  delay(50000);
  led=l>>2;
  l++;
  a<<=1;
  b>>=1;
  if (!a) a=1;
  if (!b) {b=0x8000;ledsB=0x0000;}
  }

}

 


 

sdcc, gcc e etc devem ter este mc sim mas não devo te ajudar com eles.

Mikroc: semi gratuito .. semi semelhante ao arduíno e ccs com libs mastigadas. Bem bacaninha. No caso do pisca led anabolizado acima só usei a de configurar porta como saída pois são 3 (três!) registros pra isso. Consigo mas penso não valer a pena esmiuçar-te-lhes.

Há também um configurador de periféricos no modo gráfico como o https://www.st.com/en/development-tools/stm32cubemx.html mas não me achei nele .. ainda.

Uma piração de cabeção de velho que podes experimentar (já passei por esta fase) é que pode usar centenas a milhares de bytes só pra piscar led. A veiarada tem a forte tendência de não conseguir conviver com isso. Já a 'galera' não quer nem saber e num tá nem aí ... Se bem que um aplicativo de celular que usa dezenas de milhões de bytes pra acender o led-lanterna, isso sim ainda me incomoda.

 

8 horas atrás, josias001 disse:

 Me passe um programinha simples (porém completo, com configuração de registradores, palavra de configuração, etc. pode ser um  led piscando) feito para esse tal uC para eu ver como é que é ( se não for pedir muito).

OBS2: Se puder me recomendar alguma literatura a respeito, eu também agradeço.

A literatura: pelo seu grau de 'maturidade', suponho que basta-lhe o datasheet e o reference manual

 

Conta comigo ... 1...2...3...4... e só ... kk

abç

 

pisca led STM32F103.zip

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Isadora Ferraz

 

 Jovem Amiga:

 

Agradeço a ajuda, agora deixa comigo que daqui prá frente eu desenrolo.  :D

16 horas atrás, Isadora Ferraz disse:

A literatura: pelo seu grau de 'maturidade',

 

Espalhe isso, por favor: muita gente precisa ouvir esse testemunho...

 

Seria perfeito se esse uC viesse em encapsulamento DIL, facilitaria bastante.

 

22 horas atrás, josias001 disse:

 

Não devemos perder tempo com coisas supérfluas. 

 

 

É claro que, quando disse isso, não me referi à aprender programar o STM32F103. Se fosse assim eu nem pediria prá você perder seu tempo me passando informações. Eu me referi à aprender coisas que você nunca vai usar na vida, tipo : o jogo de xadrez dos esquimós ou trigonometria em algarismos romanos.

 

Agora vamos falar sério, eu quero jogar limpo com você, não quero iludir ninguém...

Vamos colocar as cartas na mesa...😔

 

Eu quero deixar muito claro prá você que por enquanto não existe compromisso nenhum entre eu e o STM32F103, nós só estamos nos conhecendo (estamos ficando), portanto não alimente esperanças (de que o STM32F103 passe a ser meu uC padrão).

 

Ainda sou leal aos PICs (casamento de mais de 10 anos com vários filhos (produtos & programas) e muitos (muitos mesmo) livros (de papel)).

 

(Fui apresentado ao PIC 16F628 pela microchip num momento difícil da minha vida, numa encruzilhada profissional onde um "velho" técnico em eletrônica de linha de produção, que gostava de TTLs e eletrônica digital (década contadora, shift- register,portas OR, END, etc) perguntava a si mesmo o que fazer a partir de então...

Foi amor à primeira vista (ou ao primeiro programa).

Desde então me "casei" com os PICs e isso dura mais de 10 anos, um casamento feliz.)

 

Minha relação com o STM32F103 é, por enquanto um "namoro de verão", uma escapadinha, um rolo inconsequente.

 

Josias001💔

 

OBS: Perdoe as brincadeiras, não leve a sério, estou de bom humor!  :D

Não esqueci o motivo lógico, coerente, inteligente alegado por você para mudanças = custo final do produto, etc.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, Isadora Ferraz disse:

centenas


Será que conseguimos fazer um Led piscar a 1 Hertz com menos de 100 bytes usando um clock de 1 Mhz ???

É um desafio interessante... qual será o menor tamanho que ocupa ?

 

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, josias001 disse:

Minha relação com o STM32F103 é, por enquanto um "

 

9 horas atrás, aphawk disse:

É um desafio interessante...

Fase 1 completada kk

 

9 horas atrás, aphawk disse:

o menor tamanho que ocupa ?

 

9 horas atrás, aphawk disse:

menos de 100 bytes

Paulão depende do compilador e de sua "qualidade" e preço. Os gratuitos provavelmente não. O intermediário mikroc talvez. Tem que configurar sua otimização e tal. Já os "de verdade" IAR, Keyl há maior possibilidade. Qualquer dia eu tento e te falo (era isso que você queria né?). A dica é não usar suas libs que são gulosas e criar sua próprias p.ex. a delay() que fiz lá atrás. Caso apenas faça acesso ao seu hw, sim, teoricamente fica bem pequeno com algumas dezenas de bytes. 'Retrocedendo' ao pic, certa feita na época do pic12f509, milênio passado, fiz um prog em assembly e por dias arrasei na otimização. Ficou menor do que um colega havia feito anteriormente. Aí resolvi fazer em C por horas só pra treinar o meu dragão. Pasme... ficou ainda menor e mais otimizado. O compilador: Hitech-c. História verdadeira sim.

 

11 horas atrás, josias001 disse:

aprender coisas que você nunca vai usar na vida

Papo de véyo kk. Mas sim te compreendo e já passei por isso com relação à arduínos e CIA  mas... Eis que surge a tal emergente IOT e com ela o tal chinês ESP32. Como não achei compilador C pra ele, vai de arduíno mesmo. Mas pasme também: pra piscar um led com ele ele come centenas de milhares de bytes!! Mas pra quem tem milhões e milhões, s.f.

  • Haha 1
  • Confuso 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@aphawk , é o espaço necessário para:

- ajustar o RCC para 1MHz

- colocar as portas não usadas como saída

- programar um timer:

     - com o divisor em 10.000

     - ARR em 100

     - compare em 50

     - mapear o Compare para saída

- colocar a CPU no sleep (o timer trabalha sozinho).

 

100 bytes vai render umas 30 instruções, vai ficar apertado mas quem sabe...

adicionado 7 minutos depois

Esta é uma estimativa para 8 bits pelo endereçamento compacto. O Arm com um mapa de endereçamento de 4Gb complica um pouco as coisas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem muita gente "idosa" (madura) aqui neste tópico, acho que eu devo ser o mais "jovem", mas mesmo assim já passei dos 55 anos (sou de 1964), acho que se somar as idades aqui já chega na Grécia antiga.

 

E metendo o nariz na conversa, acho que é muito mais fácil o aprendizado com um micro controlador mais simples (um 8051, 6502 ou Z80 por exemplo, meu primeiro contato foi com um 6502) do que com um mais complicado (com mais recursos). E imaginar que o meu primeiro contato com eletrônica foi com um bastante antigo livro de válvulas que meu pai me repassou, acho muito mais fácil de entender eletrônica começando por este caminho. Mesmo assim eu me entusiasmei muito com os ESP32, seus muitos recursos e enorme poder de fogo, mas eu tenho que concordar, às vezes é a mesma coisa que matar uma muriçoca com uma bomba atômica.

  • Curtir 1
  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
29 minutos atrás, Intrudera6 disse:

Tem muita gente "idosa" (madura) aqui neste tópico, acho que eu devo ser o mais "jovem"

 

Nem todos são idosos, tem gente "jovem" aqui (veja os comentários anteriores!)  :D

Não peguei a época das válvulas, mas nas aulas de televisão no laboratório do colégio técnico, às sexta-feiras (22:00 Hs) nós

(já de saco cheio) assistíamos novela nos osciloscópios ( verdade!). Não dava para ver com nitidez mas víamos os vultos dos atores nos idos de 1977...

E tem o lado bom de ser idoso: Com a idade vem a experiência e a sabedoria, não cometemos mais os erros da juventude...

 

29 minutos atrás, Intrudera6 disse:

às vezes é a mesma coisa que matar uma muriçoca com uma bomba atômica.

 

Concordo. Para cada situação, uma resposta à altura.

 

Também acho que é muito mais fácil aprender com um uC  mais simples do que com um uC mais complicado. 

 

E é também mais fácil aprender com um 8051 (que possui muita literatura a respeito e também muitos tutoriais) que com um STM32 que é mais moderno, porém sem tanto material de apoio.

 

Bem vindo ao debate.

 

Josias001

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Sérgio Lembo ,

 

Vamos ver se conseguimos temporização EXATA de 1 Hz, sem nenhuma assíncronia de algum ciclo de instrução  .... para forçarmos mesmo os recursos que temos de hardware ... vou ver o que consigo quando chegar em casa ....

Eu acho que dá para fazer em Assembly com uns 80 bytes ou menos ... quero ver um compilador C o quanto chega perto kkkk !

 

Paulo

 

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!