Newsgroup: it.hobby.elettronica.digitale
Titolo: Odiato PIC16F631

Qualche anima pia che segue questo NG ha mai usato la porta A del pic
16F631 come ingresso?....sono 2 giorni che sto diventando matto
cercando di leggere gli ingressi RA0..RA2.
L'unico che si riesce a leggere è RA2 negli altri 2 leggo sempre zero
quando ho il pullup a +5.
Facendo una misura con il tester vedo che effettivamente sui pin RA0 e
RA1 ho zero volt ma non per via di un errore circuitale è proprio il
pic che ha i pin che sono a zero anzichè in alta impedenza come
dovrebbero essere.
La cosa che mi lascia molto perplesso è che con il simulatore, dando
gli stimoli esterni sui suddetti pin, il programma funziona
correttamente leggendoli mentre non funziona quando lo scarico nel
pic.....ho tralasciato qualcosa per caso?

 ho tralasciato qualcosa per caso?
Di passare agli AVR? ;-)

Enrico ha scritto:

Hai settato i registri relativi al comparatore interno? (escludendolo)
Guarda caso RA0 e RA1 sono gli ingressi del comparatore ed RA2 è l'uscita
Emanuele
-- 
YOUR ELECTRONICS OPEN SOURCE * 
http://dev.emcelettronica.com

Enrico ha scritto:

AN0 e An1 del 16F631 sono input per il convertitore A/D o 
per i comparatori...
Guarda sul datasheet come fare a rendere i pin degli I/O 
digitali.
Tutti i Pic, o quasi, hanno di default i pin analogici 
settati come tali e devono essere cambiati per l'uso come 
I/O digitali; questo anche dopo un reset.
ciao
Angelo

 pic.....ho tralasciato qualcosa per caso?
E' tipico di qualche periferica che tiene sotto controllo il pin.
Controlla bene il datasheet: per ogni pin c'è uno schema logico dal quale
capisci bene quali periferiche insistono sul pin stesso.


No, non li ho settati esplicitamente, comunque da simulatore il
registro CM1CON0 è tutto a zero, quindi il comparatore sulla porta A
dovrebbe essere disattivato.
Il punto è che il simulatore simula quello che non accade nella
realtà, ma che simulatore è?

 ha scritto:

Si, lo programmo correttamente con l'ICD2 non originale (almeno non mi
da errori, se poi mi programma anche un bit che non dovrebbe questo
non lo so).
Il datasheet l'ho controllato e tra l'altro c'è un altra cosa che non
capisco: a pagina 27 del datasheet reperibile qui
http://ww1.microchip.com/downloads/en/DeviceDoc/41262D.pdf
 esiste un
registro chiamato ANSEL ebbene sembra che nel simulatore non esista
nemmeno.

On 1 Ago, 17:10, "marcoangelo.r"

Effettivamente vedo a pagina 14 del datasheet che ra0 e ra1 sono gli
ingressi del AD.....la cosa bella è che ho appena aperto il file
16F631.h del CCS e nelle prime righe c'è scritto "I/O: 18   Analog
Pins: 0" .....mi sa che ho trovato il problema (o uno dei problemi)

 nemmeno.
Non esiste perche' non dovrebbe essere implementato nel 631; 
se cambi micro lo trovi implementato, ad esempio nel 866... 
il datasheet si riferisce a diversi micro ed e' evidente che 
per qualche ragione, leggi errore, non hanno specificato che 
ANSEL non e' presente nel 631.
Gia' che ci siamo, un ulteriore consiglio; quando qualcosa 
non funziona a dovere, dopo la programmazione, rileggi il 
micro e controlla che i fuses corrispondano alle tue 
impostazioni.
Molto spesso, per imperizia o per errore, i fuses non 
vengono programmati e il micro non e' in condizione di 
funzionare o funziona in maniera random
ciao
Angelo

 Angelo
Capisco, effettivamente un errore ci può stare benissimo. Certo è che
nella versione sucessiva del datasheet che avevo linkato prima
http://ww1.microchip.com/downloads/en/DeviceDoc/41262E.pdf
  il
registro ANSEL è ancora scritto in bella mostra a pag27 "FIGURE 2-4:
PIC16F631 SPECIAL FUNCTION REGISTERS".
Ed io ad ora non capisco perchè simulo un funzionamento e ne ottengo
un'altro del tutto inatteso; per quanto riguarda i fuses, sono
programmati correttamente dato che dopo tutto questo incasinamento ho
ridotto il programma a 5 righe di codice (un ciclo while con
all'interno la lettura della porta A e il corrispondente output su un
display a 7 segmenti sulla porta B) e l'unico fuses attivo è quello
dell'oscillatore interno (e il programma per girare gira, solo che non
mi legge quei due pin che sembrano sempre a zero).
In origine i pin A0 e A1 erano connessi ad un encoder e programmati
per funzionare come "interrupt on change"...ovviamente non funzionava
nulla, finchè ho ho tolto l'encoder per poi ridurre il tutto a
input_a() e il funzionamento è analogo.

 Di passare agli AVR? ;-)
Azz fai il moalizzatore su come scrivere, su come quotare, e poi dai 
l'esempio su come si fa off-topic? vedi l'oggetto del messaggio ed impara 
che si risponde seguendo al richiesta dell'autore del messaggio. 

enzo:

Negli ultimi 10 giorni hai scritto solo tre post per menarlo a me.
Impara a contribuire in modo più utile o almeno divertente.

 ha scritto:
Sei poi riuscito a far funzionare i pin Ra0-Ra1?
ciao
Angelo

 Impara a contribuire in modo più utile o almeno divertente.
Tu come contribuisci? dicendo di passare agli AVR? vai a rompere il cazzo da 
altre parti come piu' volte consigliato, non contribuisci in niente le tue 
risposte sono sempre sintesi di grossa spocchiosita' e di stronzaggine, mi 
ricordi un'altro grande stronzo di questi news, ovvero simone bern 

 simone bern
Bòòòni... State bbòòòni :-)
Il Bertolazzi ogni tanto si inalbera, ma se non è un top poster poco ci 
manca, quindi penso abbia i suoi diritti... Giusto per dire: qualche 
tempo fa mi sono preso una cazziata sul quoting e tutto sommato mi rendo 
conto che adesso che ci sto attento quoto meglio.
Per il resto, sai su, ognuno è fatto a modo suo! Valà che quando 'sto 
caldo maledetto passa saremo tutti più tranquilli ;-)


Chi vuole insegnare a postare deve anche saperlo fare, se sbaglia e ci si fa 
notare l'errore deve accetare come hanno fatto tutti finora senza rispondere 
come ha fatto.
Non e' possibile che qualcuno chiede qualcosa sui Pic e lui subito propone 
gli AVR, ma sembra logico che qualcuno abbia una scheda con un Pic 16F631 
magari e' gia' avanti con il firmware e cambi idea sul uso dei Pic perche' 
l'ha consigliato il Bertolazzi? se il topic chiedeva consigli sul micro da 
usare allora la sua risposta avrebbe avuto senso. 

Per Bertolazzi prima che arrivi dicendo che ho cambiato nik, non e' per 
nascondermi sono sempre lo stesso, leggendo diverse risposte e vedendo che 
qualcuno altro usa il mio stesso news "news.cu.mi" non vorrei essere confuso 
con lui. 

 simone bern
la bellezza è negli occhi di chi guarda...
saluti,
simone.bern

On 4 Ago, 16:47, "marcoangelo.r"

Ti ringrazio dell'interessamento,..la risposta è ovviamente NO!
riesco a farli funzionare come uscite ma non come ingressi, ho provato
a guardare anche il codice in assembler e tutto mi sembra a posto:
ho un trisa 0xff  quindi tutti ingressi e puntualmente i pin A0-A1 se
ne vanno a 0V quando hanno un pullpu a +5V con 10K.
Stavo meditando di "cestinare" il 631 e montare il 677 che ha anche il
convertitore analogico e quindi il fantomatico registro "ANSEL",
chissà, magari funziona questo pic!..Scherzi a parte, eliminando
l'ipotesi del pic guasto (ne ho sostituiti 3) praticamente non so dove
andare a parare dato che temo di aver guardato tutto eppure anche se
setto la porta A come tutti ingressi ho sempre quei benedetti pin che
fanno da uscita.
Comunque vi farò sapere a giorni qualcosa di più (ovvero se prendo a
martellate anche il pic 16F677 :-) ).
A proposito, a voi mediamente quanto volte vi riesce di riprogrammare
un pic prima della corruzione della memoria? sono solamente io il
"fortunato" che arriverà ad una ventina al massimo?
Grazie 1000 per i vostri consigli !


Effettivamente era da un pò di tempo che ci stavo pensando, ma ho già
una demoboard x un NXP ARM una macchina carina.....anche se seguendo
questo ng mi pare di capire che gli ARM della ATMEL non sono niente
male in quanto a periferiche a bordo/prestazioni.

 una demoboard x un NXP ARM una macchina carina....
Senza dubbio. E' il futuro. Non perder tempo con le generazioni intermedie.
Come vedi dalle risposte sempre piccate di taluni elementi, al momento gli
AVR sono il presente già "fin troppo" consolidato, altre architetture sono
irrimediabilmente morte e sepolte: perciò le code di paglia prendono fuoco
in modo così violento.

 caldo maledetto passa saremo tutti più tranquilli ;-)
Vedo che concludi la tua frase con lo stesso "emoticon" con cui ho concluso
la mia battuta che ha dato la stura ad un falò di code di paglia e ad una
maldestra provocazione fatta da un povero imbecille che, citando l'oggetto
del thread, dimenticava di leggerlo.
Lo ricordo: "Odiato PIC16F631"

 "fortunato" che arriverà ad una ventina al massimo?
Anche se non ho mai contato con precisione il numero di 
riprogrammazioni, sono sicuro che durante una seduta di 
debug con Icd2, in un pomeriggio di lavoro si supera il 
numero di una ventina di programmazioni, e con lo stesso 
micro lavoro per diversi giorni...
Hai provato ad eseguire una cancellazione totale quando il 
micro non si riprogramma?
ciao
Angelo


 l'ha consigliato il Bertolazzi? 
Io l'ho fatto :D
Anche se Bertolazzi ancora non c'era sul NG  :)
Marco / iw2nzm

 ha scritto:

Allora è forse colpa mia?    ;-)))
Mi assumo tutte le mie responsabilità.  :-P
--
ciao
  Stefano

 Mi assumo tutte le mie responsabilità.  :-P
Invece di star qui a cazzeggiare, rispondi un po' all'immunità delle
trasmissioni differenziali sull'altro NG.

trasmissioni differenziali sull'altro NG.
Ma se stavate parlando di abbonamenti rai e di mogli insoddisfatte,
roba da   it.elettronici.frustrati
Comunque mi è sfuggito il thread che dici.
--
ciao
  Stefano

 Comunque mi è sfuggito il thread che dici.
E' il terzo sopra a quello del canone e si chiama "trasmissione
differenziale" e poi, andiamo, credo che i thread che ho aperto si contino
ancora sulle dita di una mano.


Non ho detto che i Pic sono migliori degli AVR, questo topic in origine 
chiedeva perche' il Pic16F631 avesse problemi con la porta A, prima 
Bertolazzi poi mi ci metto anche io abbiamo parlato di altro.
Tu hai risolto il problema del Tiny2313? tanto ormai il topic originario e' 
andato a farsi benedire :) 

 questo topic in origine 
era ed è intitolato "Odiato PIC16F631", titolo che ritengo scherzoso.
Ho fatto, di conserva, una battuta segnalandola come tale, vi ha preso
fuoco la coda di paglia e tu sei passato direttamente agli insulti.
Tutto qui.

 andato a farsi benedire :) 
Ni... sto giusto scrivendo un update nel thread relativo!
Marco / iw2nzm

 "fortunato" che arriverà ad una ventina al massimo?
microchip dice 100'000 volte (la flash): vedi tu.
saluti

 microchip dice 100'000 volte (la flash): vedi tu.
Credo dipenda parecchio anche dal programmatore.

 "fortunato" che arriverà ad una ventina al massimo?
Mai corrotta la memoria di un PIC in vita mia. Qualcuno è stato scritto 
anche 1500 volte (a occhio e croce)
(programmatore MPLAB ICD2 originale)
Ciao
CG 

 "fortunato" che arriverà ad una ventina al massimo?
Non le ho mai contate, ma in lunghe sessioni di test è capitato di 
programmare un pic (della serie 18) anche ogni 5 minuti... direi che in 
totale sono arrivato sicuramente a qualche centinaia di volte, senza mai 
avere corruzioni, se non sporadiche (dovute magari al cavo di collegamento 
che non faceva bene contatto da un lato).
Ciao 


Ti ringrazio per le risposte che hai dato anche se devo dire che il
tuo post attira l'attenzione non per i contenuti ma per il modo in cui
hai scritto: neanche fossi tu quello a dover essere "incazzato" perchè
il 631 non funziona pr un problema HW o SW!.
Ripeto, che errori SW non dovrebbero essercene dato che il simulatore
con gli stimoli (a partire da t=0 metto un uno su ra0 e ra1) fa
funzionare correttamente il programma che mi legge questi due pin e mi
attiva sue uscite su port_c; non appena scarico il prog nel pic dove è
abilitato solamente l'oscillatore interno, tutti i fuses off, ra0 e
ra1 sono a ZERO VOLT quando hanno un pullup a +5; il pullup l'ho
controllato tagliando la pista e mettendomi con il tester; eventuali
corti tra pin e il pezzo di pista tagliata sono da escludere.
Ciao
PS:
Microchip ne scrive molte di cose, e il numero magico di 100.000
scritture che vedi scritto su ogni loro datasheet è solamente riferito
alla memoria flash e come tale solo nel caso in cui i dati siano
scritti in modo casuale all'interno della flash, cosa che in fase di
debug non avviene. Di solito solo le flash destinate ad uso di memoria
di massa contengono "un'intelligenza" che permette la scrittura nella
flash in modo ottimizzato, altrimenti una cella flash la scrivi al
massimo un migliaio di volte (anche questo un valore piuttosto
ottimistico, fortemente influenzato da fattori ambientali uno tra
tutti la temperatura)


Ti ringrazio, ho provato anche a configurare direttamente il
convertitore AD ma il compilatore mi dice che "la periferica non è
presente" o un errore simile, ora non ricordo la frase esatta.
Prendo al volo il tuo suggerimento per il "ticket", vediamo un pò cosa
mi dicono.
Ciao!

 tutti la temperatura)
Fonte?

 il 631 non funziona pr un problema HW o SW!.
forse hai ragione; sono stato un po' stronzo perche' leggendo il
documento ho trovato subito la tabella e ti ho identificato come il
solito niubbo che chiede l' aiutino invece di sbattersi.
spero di essermi sbagliato.
saluti

 Fonte?
Fonte: corso di microelettronica.

 Fonte: corso di microelettronica.
Ah, beh, allora...
Scherzi, vero?


No, perchè?
OK OK..... forse ho esagerato a scrivere 1000 volte: facciamo qualche
migliaio di volte, va meglio ora? ripeto che mi baso su quanto mi è
stato riferito (non ho idea in quale testo sia scritta la trattazione
del numero massimo delle scritture nelle flash).
Se vuoi verificare di persona non hai che da fare una prova: ti prendi
il tuo bel micro preferito ( mi pare un AVR, no?) e fai un ciclo che
scrive sempre lo stesso dato (per andare sul sicuro meglio se un array
di tutti i valori tra 0 e 255, così hai anche una casistica + ampia)
nella flash e poi lo rileggi finchè non trovi un dato diverso da
quello scritto e fai un output via seriale: sacrifichi un micro però
almeno puoi dire con certezza quante scritture sopporta la flash.
In poco tempo potrai smentirmi :)
Ciao!

No, perchè?
Guardando a pag.1 del datasheet di un µC AVR dice:
-Write/Erase Cycles:10,000 Flash/100,000 EEPROM
http://www.atmel.com/dyn/resources/prod_documents/doc2549.pdf
poi qualche µC più vecchio effettivamente garantiva solo 1000 cicli sulla flash,
ma non l'ho mai verificato sul campo.
--
ciao
  Stefano

se il 631 è simile al 628A devi settare il registro del comparatore
(come scritto nel datasheet) per usare i pin digitali) al valore
CMCOM=0x07 (sul 16f628A, nn so se il 631 ha lo stesso) altrimenti dei
default i piedini che hai detto sono sono  sotto diretto controll odel
comparatore.
se il valore nn è giusdto guarda il datashhet dove espongono tutte le
caratteristiche delle porte. e c'è un pezzo di codice dove dicono come
settare la porta A come digitale.