Doohan Inserito: 21 maggio 2010 Segnala Inserito: 21 maggio 2010 Ciao, ho un problemino con un "nuovo" pic....Sono i primi tentativi con un PIC16F886, qualcosa non mi torna!! PROCESSOR 16F886 RADIX DEC INCLUDE "P16F886.INC" ; ERRORLEVEL -202 ; ERRORLEVEL -203 ; ERRORLEVEL -207 ; ERRORLEVEL -302 __config _CONFIG1,0010001111100100B __config _CONFIG2,0011111111111111B ;-------------------------------- REGISTRI SU BANCO 0 -------------------------------- Count0 equ 20h;riservato per delay software Count1 equ 21h;riservato per delay software LCDTemp equ 22h;... AUX equ 23h;... ;------------------------------------------------------------------------------------- ORG 00h ;Punto di inizio del programma al reset della CPU goto Start ;------------------------------------- INTERRUPTS ------------------------------------ ORG 04h nop retfie ;----------------------------------- FINE INTERRUPTS ---------------------------------- ;----------------------------- INIZIO PROGRAMMA AL RESET ------------------------------ Start bsf STATUS,RP0;Seleziona Banco 1 bsf OSCCON,6 bsf OSCCON,5;Oscillatore a 4MHz bcf OSCCON,4 movlw B'00000000';Prescaler che divide di 2 volte il clock su Fosc/4, destinazione Timer0, Pull-up abilitati su PortA movwf OPTION_REG ;-------------------------------- DEFINIZIONE PIN I\O --------------------------------- ;PORTA movlw B'00000000' movwf TRISA ;PORTB movlw B'00000000' movwf TRISB ;PORTC movlw B'00001000' movwf TRISC ;PORTE movlw B'00000000' movwf TRISE bsf STATUS,RP1 bcf STATUS,RP1;Seleziona Banco 1 ;-------------------------------- PROGRAMMA PRINCIPALE --------------------------------- bcf STATUS,RP0;Seleziona Banco 0 clrf PORTA clrf PORTB clrf PORTC clrf PORTE clrf AUX bsf PORTB,0 bsf PORTB,1 bsf PORTB,2 bsf PORTB,3 bsf PORTB,4 bsf PORTB,5 bsf PORTB,6 bsf PORTB,7 MainLoop bsf PORTC,2 call Tempo bcf PORTC,2 call Tempo goto MainLoop ;---------------------------------- FINE DEL PROGRAMMA --------------------------------- ;------------------------------------- SUBROUTINES ------------------------------------- Tempo ;Delay software di 0,1 secondi .... return ;---------------------------------- FINE SUBROUTINES --------------------------------- END Il lampeggio di MainLoop su PORTC,2 lo fa correttamentela cosa strana sono i comandi: bsf PORTB,0 bsf PORTB,1 bsf PORTB,2 bsf PORTB,3 bsf PORTB,4 bsf PORTB,5 bsf PORTB,6 bsf PORTB,7Io mi trovo a 5V solo i pin 6 e 7, gli altri sono a massa!! se invece sostituisco gli 8 bsf ... con le segunti istruzionimovlw B'11111111'movwf PORTBtutti i pin della porta B sono a Vcc...Qualcuno sa spiegarmi l'arcano??
giacomo56 Inserita: 21 maggio 2010 Segnala Inserita: 21 maggio 2010 Se non ci sono errori nel programma, è probabile che dipenda da cosa hai collegato alla porta B. Nell'eseguire l'istruzione bsf PORTB,7 il pic legge le tensioni su tutti i piedini, modifica il bit 7 e poi riscrive il byte così modificato sulla porta B. Se per esempio sul pin 0 la tensione è troppo bassa la interpreta come valore basso (anche se l'avevamo messo a 1) e dopo l'istruzione bsf PORTB, 7 ti ritrovi il pin 0 basso.Ciao
Doohan Inserita: 21 maggio 2010 Autore Segnala Inserita: 21 maggio 2010 giacomo56+21/05/2010, 14:12--> (giacomo56 @ 21/05/2010, 14:12) Grazie per la risposta ma non è così semplice: i pin sono scollegati, li vado solo a misurare con il tester ma 6 su 8 li trovo a massa invece che a Vcc...se invece usomovlw B'11111111'movwf PORTBfunziona correttamente.In rete ho trovato questo:http://www.microchip.com/forums/tm.aspx?m=...=1&key=
giacomo56 Inserita: 21 maggio 2010 Segnala Inserita: 21 maggio 2010 Si, allora il problema è un altro. I PIC16F non hanno i registri LAT. Ho visto che sulla porta B ci sono gli ingressi analogici, disabilitali.Ciao.
Doohan Inserita: 21 maggio 2010 Autore Segnala Inserita: 21 maggio 2010 giacomo56+21/05/2010, 14:56--> (giacomo56 @ 21/05/2010, 14:56) Quella degli ingressi analogici potrebbe essere....ho guardato il DS.. in effetti i pin "cattivi" sono quelli dove posso avere anche ingressi analogici e al reset i pin vengono configurati come ingressi analogici...resterebbe la stranezza del compostamento diverso tra il BSF sul singolo bit della porta B e la scrittura con il movlw --> movwf
giacomo56 Inserita: 21 maggio 2010 Segnala Inserita: 21 maggio 2010 Probabilmente legge gli ingressi analogici!
kappa47 Inserita: 24 maggio 2010 Segnala Inserita: 24 maggio 2010 Prova ad inserire una “nop” dopo ogni “bsf PORTB,x”.Bye.
accacca Inserita: 24 maggio 2010 Segnala Inserita: 24 maggio 2010 Sono ignorante e non so valutare se questo può esserti d'aiutoti lascio lo stesso il linkhttp://www.edaboard.com/ftopic160293.html
Doohan Inserita: 24 maggio 2010 Autore Segnala Inserita: 24 maggio 2010 Grazie a tutti ragazzi, risolto disabilitando gli ingressi analogici di ANSELH Ciao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora