p18f2550 uso dei delay10kTCYx()
12 Anni 1 Mese fa - 12 Anni 1 Mese fa #1
da Tecnica
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
p18f2550 uso dei delay10kTCYx() è stato creato da Tecnica
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
12 Anni 1 Mese fa #2
da Mauro Laurenti
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Risposta da Mauro Laurenti al topic Re: p18f2550 uso dei delay10kTCYx()
Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Mauro Laurenti
- Moderator
Riduci
Di più
12 Anni 1 Mese fa #3
da Tecnica
Risposta da Tecnica al topic Re: p18f2550 uso dei delay10kTCYx()
Grazie per la risposta..... ma alla fine sono riuscito con Delay10KTCYx() la libreria delayMs non c'è l'ho.....
lavoro con C18.... adesso da un paio di giorni sto cercando di creare un lampeggio tramite gli interrupt su timer0.... ma non riesco ora vi posto il codice e ditemi dove sbaglio...
Grazie.
#include <p18f2550.h>
#include <delays.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
//PLLDIV1= divisione PLL
//Impostazione per bassa priorità
void Low_Int_Event (void);
#pragma code low_vector=0x18
void low_interrupt (void){
//salto per la gestione dell'interrupt a bassa priorità
_asm GOTO Low_Int_Event _endasm;
}
#pragma code
#pragma interruptlow Low_Int_Event
//Funzione per la gestione dell'interrupt a bassa priorità
void Low_Int_Event (void){
// controllo che l'interrupt sia stato generato dal timer0
if(INTCONbits.TMR0IF==1){
PORTBbits.RB2=~PORTBbits.RB2;
INTCONbits.TMR0IF=0;
}
}
void main (void){
//Abilitazione oscilatore interno
OSCTUNEbits.INTSRC=1;
OSCTUNEbits.TUN4=0;
OSCTUNEbits.TUN3=1;
OSCTUNEbits.TUN2=1;
OSCTUNEbits.TUN1=1;
OSCTUNEbits.TUN0=1;
OSCCONbits.IRCF2=0;
OSCCONbits.IRCF1=0;
OSCCONbits.IRCF0=1;
OSCCONbits.IOFS=1;
OSCCONbits.SCS1=0;
OSCCONbits.SCS0=0;
//Abilitazione TIMER0
T0CONbits.TMR0ON=1; //abilito il timer0
T0CONbits.T08BIT=0; // lo configuro a 16 bit
T0CONbits.T0CS=0; //clock interno
T0CONbits.T0SE=0;
T0CONbits.PSA=0; // assegno il prescaler al timer0
T0CONbits.T0PS2=1; //valore di prescaler 1:32
T0CONbits.T0PS1=1; //valore di prescaler 1:32
T0CONbits.T0PS0=1; //valore di prescaler 1:32
TMR0L=01100111; // sistema abilitato a bassa priorità
TMR0H=01101001; // sistema non abilitato all'alta priorità
INTCONbits.TMR0IE=1; //interruzioni abilitate
INTCONbits.TMR0IF=1; // abilito la visualizzazione dell'evento sul timer1
INTCON2bits.TMR0IP=0; // abilito per bassa priorità
// Imposto PORTA tutti ingressi
TRISA = 0b11111111;
ADCON1= 0b11111111;//Imposto come 1/0 tutti i pin del lato A, avrei potuto anche impostarne uno solo.
// Imposto PORTB tutti ingressi
TRISB = 0b11111000;
// Imposto PORTC tutti ingressi
TRISC = 0b11111111;
//Dico al Pin RA0 che il suo stato se premuto è uguale a 1 cosi il Pin del LED RB0 si attiva
if(PORTAbits.RA0==1){
PORTBbits.RB0=0;
}
else {PORTBbits.RB0=1;
}
if(PORTAbits.RA1==1){
PORTBbits.RB1=0;
}
else{PORTBbits.RB1=1;}
while (1){
}
lavoro con C18.... adesso da un paio di giorni sto cercando di creare un lampeggio tramite gli interrupt su timer0.... ma non riesco ora vi posto il codice e ditemi dove sbaglio...
Grazie.
#include <p18f2550.h>
#include <delays.h>
#pragma config FOSC = HSPLL_HS
#pragma config IESO= ON
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HSPLL_HS Impostato per lavorare ad alta frequenza CON PLL ATTIVATO
//PLL = attivato la divisione
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
//PLLDIV1= divisione PLL
//Impostazione per bassa priorità
void Low_Int_Event (void);
#pragma code low_vector=0x18
void low_interrupt (void){
//salto per la gestione dell'interrupt a bassa priorità
_asm GOTO Low_Int_Event _endasm;
}
#pragma code
#pragma interruptlow Low_Int_Event
//Funzione per la gestione dell'interrupt a bassa priorità
void Low_Int_Event (void){
// controllo che l'interrupt sia stato generato dal timer0
if(INTCONbits.TMR0IF==1){
PORTBbits.RB2=~PORTBbits.RB2;
INTCONbits.TMR0IF=0;
}
}
void main (void){
//Abilitazione oscilatore interno
OSCTUNEbits.INTSRC=1;
OSCTUNEbits.TUN4=0;
OSCTUNEbits.TUN3=1;
OSCTUNEbits.TUN2=1;
OSCTUNEbits.TUN1=1;
OSCTUNEbits.TUN0=1;
OSCCONbits.IRCF2=0;
OSCCONbits.IRCF1=0;
OSCCONbits.IRCF0=1;
OSCCONbits.IOFS=1;
OSCCONbits.SCS1=0;
OSCCONbits.SCS0=0;
//Abilitazione TIMER0
T0CONbits.TMR0ON=1; //abilito il timer0
T0CONbits.T08BIT=0; // lo configuro a 16 bit
T0CONbits.T0CS=0; //clock interno
T0CONbits.T0SE=0;
T0CONbits.PSA=0; // assegno il prescaler al timer0
T0CONbits.T0PS2=1; //valore di prescaler 1:32
T0CONbits.T0PS1=1; //valore di prescaler 1:32
T0CONbits.T0PS0=1; //valore di prescaler 1:32
TMR0L=01100111; // sistema abilitato a bassa priorità
TMR0H=01101001; // sistema non abilitato all'alta priorità
INTCONbits.TMR0IE=1; //interruzioni abilitate
INTCONbits.TMR0IF=1; // abilito la visualizzazione dell'evento sul timer1
INTCON2bits.TMR0IP=0; // abilito per bassa priorità
// Imposto PORTA tutti ingressi
TRISA = 0b11111111;
ADCON1= 0b11111111;//Imposto come 1/0 tutti i pin del lato A, avrei potuto anche impostarne uno solo.
// Imposto PORTB tutti ingressi
TRISB = 0b11111000;
// Imposto PORTC tutti ingressi
TRISC = 0b11111111;
//Dico al Pin RA0 che il suo stato se premuto è uguale a 1 cosi il Pin del LED RB0 si attiva
if(PORTAbits.RA0==1){
PORTBbits.RB0=0;
}
else {PORTBbits.RB0=1;
}
if(PORTAbits.RA1==1){
PORTBbits.RB1=0;
}
else{PORTBbits.RB1=1;}
while (1){
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Tecnica
- Autore della discussione
- Visitatori
12 Anni 1 Mese fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: p18f2550 uso dei delay10kTCYx()
Ciao,
fai riferimento al seguente Thread .
Per la libreria Delay puoi far uso della Libreria per C18 .
Saluti,
Mauro
fai riferimento al seguente Thread .
Per la libreria Delay puoi far uso della Libreria per C18 .
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024