vitor_neves88 Posted July 7, 2006 at 12:54 AM Report Share #36723 Posted July 7, 2006 at 12:54 AM Pessoal necessito de ajuda, estou a trabalhar com o pic 18f458 e a utilizar o software PICC para criar o codigo, e pretendo criar 2 sinais PWM para controlar servos, logo necessito de estar a reenviar o sinal PWM com um periocidade de 20ms! Para isso estava a pensar utilizar os interrupts do pic mais propriamente o int_timer2 para enviar os sinais, mas não estou a conseguir criar com a periocidade correcta!!! Outro problema é saber se é possivel passar variaveis para dentro da função da interrupção. Link to comment Share on other sites More sharing options...
Narchotyck_Killer Posted July 7, 2006 at 03:35 PM Report Share #36840 Posted July 7, 2006 at 03:35 PM Pelo que vi, esse pic tem 5 saídas pwm. nao sei s tens experiência em pics e o pwm, mas funciona assim: utilizas o timer2 como base-tempo (rergula portanto o prescaller) o PR2 define a condição para fazer reset ao timer, e portanto, o numero PR2 * o período do prescaller (que é tempo de cada instrução * o valor do prescaller) menos 1 no final(tal como descrito na datasheet da uC, o periodo=[(PR2) + 1] * 4 * 1/Fosc * (TMR2 Prescale Value) consulta a datasheet k é bastante clara. Quanto aos argumentos para o interrupt: não compreendo o que keres fazer com isso. um interrupt corresponde a um salto da execução,para um certo endereco da tabela de vectores (não sei se ja alguma vez brincaste com os ISR dos pcs) sem qualquer aviso. Portanto quando dizes passar argumentos para um interrupt, referes-te ao cpu enviar argumentos para o interrupt? isso nao é possivel. se te referes a seres tu, numa outra rotina, a chamar o interrupt, o melhor é utilizares um endereço estático para troca de dados. espero ter ajudado 🙂 [ ] Link to comment Share on other sites More sharing options...
caprr Posted July 27, 2006 at 11:44 PM Report Share #40660 Posted July 27, 2006 at 11:44 PM no caso da passagem de argumentos para dentro do ISR, embora não seja mto correcto usa uma variável global... Link to comment Share on other sites More sharing options...
Trifasico Posted July 28, 2006 at 06:16 PM Report Share #40772 Posted July 28, 2006 at 06:16 PM lol, em termos de programação não se deve usar usar as variaveis globais, mas nas interrupções deve-se usar variaveis globais. Pela simples razão de se realizar o minimo de instruções possiveis. Parece que não mas a passagem de uma variavel na função, ainda são umas quantas instruções, e como vai à pilha ainda pior. Abraço Link to comment Share on other sites More sharing options...
Narchotyck_Killer Posted September 13, 2006 at 02:13 PM Report Share #50266 Posted September 13, 2006 at 02:13 PM epa, que eu saiba os pics de 8/16 bits nao têm stack para passagem de argumentos como na arquitectura x86 a que todos estamos habituados. Têm stack,sim, mas apenas para os calls/returns nunca programei pics em C,p isso nao faco a minima ideia de como é feita a passagem de argumentos. em termos de variáveis globais e locais nos pics,é praticamente a mesma coisa. num pc, uma variável local é uma variável alocada no stack, abaixo do endereço de regresso. ora nos pics nao existe stack, logo nao existe o mesmo conceito de variavel. qualquer menemónicas que o compilador inclua nesse sentido, será apenas p compatibilidade com o ansi, e p detectar erros (como utilizar variáveis declaradas localmente numa funcao, e utiliza-las numa outra por lapso) uma vez que os pics têm bancos de dados que podem ser acedidos a qualquer momento. O que pode acontecer é alguma optimizacao no sentido de dar preferencia a uma funcao utilizar endereços do mesmo banco,p n ter que o mudar. saudacoes! 😛 Link to comment Share on other sites More sharing options...
NuGuN Posted September 13, 2006 at 08:53 PM Report Share #50368 Posted September 13, 2006 at 08:53 PM Agora um pouco fora do tema da thread... ....nunca programei pics em C.... Então eu que programas os PIC's? Cumps Link to comment Share on other sites More sharing options...
Narchotyck_Killer Posted September 30, 2006 at 02:55 PM Report Share #54029 Posted September 30, 2006 at 02:55 PM Programo-os em assembly. Nos microcontroladores,ja k ha mt pouco espaço para o código,nada melhor k sermos nos a programar em assembly, do que escrever em C,k dpx pode não ter "aquela" combinação óptima de código,k é mais facil aproximarmo-nos em assembly. [ ] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now