500EF escreveu: ↑24 Mai 2017, 13:38
Mas eu já escrevi de todo tipo de programas, desde todo o sistema aqui da empresa (DOS/Delphi/banco de dados SQL, PHP, etc), até montar e configurar os servidores (já passei por DOS/Lantastic, Win for workgroups, Win NT e depois fui para o linux, em 1998 - e fiquei nele, porque é o que eu gosto mais), com shell scripts para automatizar algumas tarefas, etc.
posso dizer que ja tenho alguma experiencia em programação, em 1995 quando tinha 15 anos quando a populaçao brasileira nem saiba oque era computador e essa febre toda que é hoje poluída e sem sentido, eu ja programava em DOS, em um XT e disquetao bolação, nao me lembro a linguagem talvez era COBOL ou BASIC mas pra mim era BASIC, o curso na epoca era super novidade ate mesmo o PC, imagina programar. me formei em 2002 algo mais realista e com logica intelectual ja formada, ae sim ja programava pra valer PASCAL, depois Delphi onde aprendi muito linguagem em alto nivel muito completa por sinal. alias vo usa-lo novamente pra montar o sofware <-> ECU. tambem aprendi Php,JScript,MSQL,etc, fiz redes tb mas nunca fui fundo nisso, ficou no curso técnico MEC de 2 anos em 2000
to gostando de linguagem de media nivel logico. C puro sem frescura com float da vida, so tem inteiro. fui aprender C agora, uns 5 anos pra cá com uso da eletronica ou C ou ASM e falta muito ainda, mas ja sei fazer alguma coisa.
linguagem em baixo nivel logico, eu me curvo pra um cara desse! vai ver oque é um ASM dae tu pode chamar ele de programador de verdade. uma vez tentei e desisti nao tem logica alguma aquilo puramente siglas e uma IF é uma tarefa complicado de fazer rsrsrsrs. hoje nos com essas IDE mastigado nao podemos reclamar.
500EF escreveu: ↑24 Mai 2017, 13:38
Só ainda não tinha tido tempo de me arriscar com programação voltada para microcontroladores. Já tinha tentado, uns 15 anos atrás, começar a estudar PIC, mas na época não era tão fácil como hoje achar informação na internet e tal...
E o arduino, como plataforma de desenvolvimento, simplifica bem as coisas. Claro que se for para algo profissional, é bom pensar em soluções mais robustas e confiáveis.
IDE mastigada essa do arduino que foi feito de proposito mesmo, os comando sao interpretadores do C puro, oque tu usou ali pra chamar a função ISR em C diretamente compilado e upado no MCU é cheio de instruçoes vetores e end de memoria, da uma olhada. ali tem atalhos pra memoria que nao estao nesse exemplo. os
define por exemplo. define EEPROM_ATTR acessa um end da memoria do MCU tipo 0x250;
Código: Selecionar todos
#ifdef GCC_BUILD
#define EEPROM_ATTR __attribute__ ((section (".eeprom")))
#define INTERRUPT
#define ENABLE_INTERRUPTS __asm__ __volatile__ ("cli");
#define DISABLE_INTERRUPTS __asm__ __volatile__ ("sei");
void ISR_TimerOverflow(void) __attribute__((interrupt));
void ISR_Timer_Clock(void) __attribute__((interrupt));
#else
#define EEPROM_ATTR
#define INTERRUPT interrupt
#define ENABLE_INTERRUPTS asm cli;
#define DISABLE_INTERRUPTS asm sei;
#pragma CODE_SEG NON_BANKED /* Interrupt section for this module.
Placement will be in NON_BANKED area. */
extern void near _Startup(void); /* Startup routine */
interrupt void UnimplementedISR(void);
interrupt void ISR_VSS_TimerIn(void);
interrupt void ISR_TimerOverflow(void);
interrupt void ISR_Timer_Clock(void);
interrupt void ISR_Inj1_TimerOut(void);
typedef void (*near tIsrFunc)(void);
const tIsrFunc _vect[] @0xFF80 = { /* Interrupt table */
UnimplementedISR, /* vector 63 */
UnimplementedISR, /* vector 62 */
UnimplementedISR, /* vector 61 */
UnimplementedISR, /* vector 60 */
UnimplementedISR, /* vector 59 */
UnimplementedISR, /* vector 58 */
UnimplementedISR, /* vector 57 */
UnimplementedISR, /* vector 56 */
UnimplementedISR, /* vector 55 */
UnimplementedISR, /* vector 54 */
UnimplementedISR, /* vector 53 */
UnimplementedISR, /* vector 52 */
UnimplementedISR, /* vector 51 */
UnimplementedISR, /* vector 50 */
UnimplementedISR, /* vector 49 */
UnimplementedISR, /* vector 48 */
UnimplementedISR, /* vector 47 */
UnimplementedISR, /* vector 46 */
UnimplementedISR, /* vector 45 */
UnimplementedISR, /* vector 44 */
UnimplementedISR, /* vector 43 */
UnimplementedISR, /* vector 42 */
UnimplementedISR, /* vector 41 */
UnimplementedISR, /* vector 40 */
UnimplementedISR, /* vector 39 */
UnimplementedISR, /* vector 38 */
UnimplementedISR, /* vector 37 */
UnimplementedISR, /* vector 36 */
UnimplementedISR, /* vector 35 */
UnimplementedISR, /* vector 34 */
UnimplementedISR, /* vector 33 */
UnimplementedISR, /* vector 32 */
UnimplementedISR, /* vector 31 */
UnimplementedISR, /* vector 30 */
UnimplementedISR, /* vector 29 */
UnimplementedISR, /* vector 28 */
UnimplementedISR, /* vector 27 */
UnimplementedISR, /* vector 26 */
UnimplementedISR, /* vector 25 */
UnimplementedISR, /* vector 24 */
UnimplementedISR, /* vector 23 */
UnimplementedISR, /* vector 22 */
UnimplementedISR, /* vector 21 */
UnimplementedISR, /* vector 20 */
UnimplementedISR, /* vector 19 */
UnimplementedISR, /* vector 18 */
UnimplementedISR, /* vector 17 */
ISR_TimerOverflow, /* vector 16 */
UnimplementedISR, /* vector 15 */
UnimplementedISR, /* vector 14 */
UnimplementedISR, /* vector 13 */
UnimplementedISR, /* vector 12*/
UnimplementedISR, /* vector 11 */
ISR_VSS_TimerIn, /* vector 10 ch 2*/
ISR_Inj1_TimerOut, /* vector 09 ch 1*/
UnimplementedISR, /* vector 08 ch 0*/
ISR_Timer_Clock, /* vector 07 */
UnimplementedISR, /* vector 06 */
UnimplementedISR, /* vector 05 */
UnimplementedISR, /* vector 04 */
UnimplementedISR, /* vector 03 */
UnimplementedISR, /* vector 02 */
UnimplementedISR, /* vector 01 */
_Startup /* Reset vector */
};
#pragma CODE_SEG DEFAULT
#endif
ISR_VSS_TimerIn é a funçao que é chamada toda vez que acontece uma ISR igual teu arduino que tu fez mas sem esses blocos ae. ja vem prontinho.
programaçao de medio nivel é legal, mas tem que estudar e testar bastante. vale apena.
500EF escreveu: ↑24 Mai 2017, 13:38
Por exemplo, estes dias eu o usei para gerar sinais de disparo para testar umas bobinas de ignição na bancada. Se ele ficar muito perto da centelha, trava e você tem que apertar o reset...
Ambiente de desenvolvimento é uma coisa. Ambiente de produção, cheio de ruídos e interferências, temperatura, vibração, o buraco é beeeeeeeeeem mais embaixo. E tenho consciência disso...
EMI é oque mata qualquer projeto... lembro quando fiz o painel prototipo liguei ignição e a interferencia eletromagnetica vinha pelo ar e pelo condutor esses protoboard nao estao preparados pra isso. isolava com papel aluminio criando uma gaiola de faraday, melhorava mas vinha pelo condutor ainda... so criando PCB real pra isso.eu tenho como criar no lab, mas muitas vezes tem que mandar fazer e rezar que tuas tecnicas que estudou vao funcionar. e ai que entra as Versões e Revisões de PCB
Eng eletrica é algo bem complexo especialmente quando se trata desse tema em especial, eu uso o Saturn um CAD que ja te envia todos as formulas prontas. negocio da ate medo so mestrado,doutorado pra entender aquelas formulas. impedancia da trilha, resistencia, capacitancia de trilha, freq, isolamento, é muita regra e muita das vezes as regras nao da pra fazer 100%, é virtualmente impossivel. sem uma quebra de regra ao fazer uma PCB profissional. agora imagina um prototipo board cheio de antenas! resistencias! é natural dar problema, nem esquenta.
oque tu pode fazer é minimizar, limpar o sinal antes de entrar no MCU. existe algumas tecnicas pra isso mas precisa de um PCB pra acoplar o arduino. dae limpa muiiiiiittto o sinal. os fiozinho jumper é um emissor/ receptor de ruidos em potencia.
é por isso que os scope tem as ponta de prova desmontavel, quando queremos verificar um sinal de precisao, tira o born, deixa na agulha, e usar a perninha ground, que encurta o laço da antena ao minimo. o teu venho com isso, acredito que nao tenha usado pq so em PCB se usa. eu ja usei e continuo usando muito... é gritante a reduçao de ruidos fakes
PROecu - Injeções eletronica para monzas.