[C][ASM] Programmazione PIC 16F84A
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: [C][ASM] Programmazione PIC 16F84A
Non sono sicuro di aver capito la domanda, se non ricordo male ricaricando il TMR0 si perde il conteggio del prescaler (riparte da zero). Che io sappia non c'è soluzione, o si usa il TMR0 in modo "one shoot", oppure, se serve produrre un tempo periodico preciso, lo si lascia andare in "free running" come un normalissimo contatore, eventualmente si usa un quarzo di frequenza adeguata (es 4.096MHz).
-
gila75
- Imperturbabile Insigne

- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [C][ASM] Programmazione PIC 16F84A
Se non ricordo male testi il bit in polling di tmr0 e di conseguenza si aggiunge un clock o altrimenti interrupt del tmr0.
Logicamente dipende da ciò che devi fare.
Al limite tieni scarso il timer (per conpensare i vari test (btfsc...se non ricordo ora) ) e poi compensi con dei nop.
Ho tutti i programmi\esempi su un'altro pc purtroppo !!!
Logicamente dipende da ciò che devi fare.
Al limite tieni scarso il timer (per conpensare i vari test (btfsc...se non ricordo ora) ) e poi compensi con dei nop.
Ho tutti i programmi\esempi su un'altro pc purtroppo !!!
-
gila75
- Imperturbabile Insigne

- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [C][ASM] Programmazione PIC 16F84A
@Ubuntu: ho riguardato un po' gli appunti...non mi ricordo una mazza di asm...comunque
Ho rivisto un mio vecchio progetto: un radar e usavo timer1 per il conteggio del tempo tra l'impulso di andata e ritorno.
Testavo il bit del timer.
Riflettendo però non corretto ciò che hai supposto: anche se testi
TIMER ON
TEST_TIMER
non alteri nulla, il timer è un modulo hardware e continua per i fatti suoi.
Per assurdo tu potresti far partire il timer, poi fare un loop via software di ritardo, ma il timer conterà sempre e comunque.
Io attivavo il timer quando il partiva l'impulso e si fermava quando ritornava, poi mi smazzavo i calcoli
sulla velocità del suono e risalivo alla distanza.
Quindi col timer anche se testi non hai problemi. Logico l'interrupt sarebbe meglio, ma quello viene più in la.
Se t'interessa ecco il risultato (mi faccio pubblicità
)
www.youtube.com/watch?v=O8HBpK6vbdQ
Ho rivisto un mio vecchio progetto: un radar e usavo timer1 per il conteggio del tempo tra l'impulso di andata e ritorno.
Testavo il bit del timer.
Riflettendo però non corretto ciò che hai supposto: anche se testi
TIMER ON
TEST_TIMER
non alteri nulla, il timer è un modulo hardware e continua per i fatti suoi.
Per assurdo tu potresti far partire il timer, poi fare un loop via software di ritardo, ma il timer conterà sempre e comunque.
Io attivavo il timer quando il partiva l'impulso e si fermava quando ritornava, poi mi smazzavo i calcoli
sulla velocità del suono e risalivo alla distanza.
Quindi col timer anche se testi non hai problemi. Logico l'interrupt sarebbe meglio, ma quello viene più in la.
Se t'interessa ecco il risultato (mi faccio pubblicità
www.youtube.com/watch?v=O8HBpK6vbdQ
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
Ho sperimentato col timer e dovrebbe andare. Nel codice che riporto ci sono un paio di errori (wait undefined) e non re-imposto il prescaler-
Codice: Seleziona tutto
;-----------------------------------------------------------------------
; DEFINIZIONI
;-----------------------------------------------------------------------
PROCESSOR p16f84a ;clock 4 Mhz
RADIX DEC
INCLUDE "p16f84a.inc"
__CONFIG 11101010b
#define Bank0 bcf STATUS,RP0
#define Bank1 bsf STATUS,RP0
#define COUNT1 0Ch
#define COUNT2 0Dh
#define COUNT3 0Eh
#define COUNT4 0Fh
#define COUNT5 10h
#define COUNT6 11h
#define COUNT7 12h
#define COUNT8 13h
#define COUNT9 14h
#define COUNT10 15h
;-----------------------------------------------------------------------
; PROGRAMMA
;-----------------------------------------------------------------------
ORG 0
goto inizio
;----------INTERRUPT HANDLER (se usato)
ORG 4
... ;qui vanno le eventuali istruzioni
... ;per la gestione degli interrupt
;----------PREDISPOSIZIONE HARDWARE
inizio Bank1 ;attiva il banco 1
clrf TRISB ;Predispone porta B come uscite
bsf OPTION_REG,PS0 ;Imposta il prescalare a 128
bsf OPTION_REG,PS1
bsf OPTION_REG,PS2
bcf OPTION_REG,PSA ;Assegna il prescalare a TIMER0
bcf OPTION_REG,T0CS ;Seleziona il quarzo come fonte di clock
Bank0 ;attiva il banco 0
;----------CICLO PRINCIPALE DEL PROGRAMMA
mainloop
movlw 0x01 ;RB0 = H
movwf PORTB
movlw 20
movwf COUNT1
asp call wait
decfsz COUNT1,1
goto asp
movlw 0x00
movwf PORTB
movlw 20
movwf COUNT1
as call wait
decfsz COUNT1,1
goto as
goto mainloop
END
;attende circa 50 ms
wait
movlw 61
movwf TMR0
redo btfsc INTCON,T0IF
goto exit
goto redo
exit return
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: [C][ASM] Programmazione PIC 16F84A
Urge impostare l'editor per evitare le tabulazioni e sanitizzare il sorgente 
Qualche semplificazione (compila, ma non testato per mancanza hardware
):
In particolare rivisti i "configuration bits" (oscillatore XT per quarzo 4MHz e non HS) e aggiunto il clear del flag timeout.
Qualche semplificazione (compila, ma non testato per mancanza hardware
Codice: Seleziona tutto
;------- DEFINIZIONI -----------------------------------------------------------
PROCESSOR p16f84a
RADIX DEC
INCLUDE "p16f84a.inc"
__CONFIG 11111111111001b ; no code protect, no pwrt, no wdt, XT oscill.
;------- PREDISPOSIZIONE HARDWARE ----------------------------------------------
ORG 0 ; codice inizia all'indirizzo 0
bsf STATUS,RP0 ; attiva il banco 1
clrf TRISB ; porta B tutte uscite
bcf OPTION_REG,T0CS ; timer mode (quarzo/4 = 1MHz)
bcf OPTION_REG,PSA ; prescalar assegnato a TIMER0
bsf OPTION_REG,PS0 ; prescalar divide per 256 (3906.25Hz = 256us)
bsf OPTION_REG,PS1
bsf OPTION_REG,PS2
bcf STATUS,RP0 ; attiva il banco 0
;------- CICLO PRINCIPALE DEL PROGRAMMA ----------------------------------------
loop
bsf PORTB,0 ; PORTB,0 = 1
call wait50ms
bcf PORTB,0 ; PORTB,0 = 0
call wait50ms
goto loop
;------- Attende 49.92 ms ---------------------------------------------------
wait50ms
bcf INTCON,T0IF ; azzero flag timeout
movlw 61 ; 256 - (50 ms / 0.256 ms)
movwf TMR0
btfss INTCON,T0IF ; se non timeout
goto $-1 ; indietro di una istruzione
return ; altrimenti ritorna
;-------------------------------------------------------------------------------
END
Ultima modifica di Claudio_F il lunedì 18 gennaio 2016, 20:03, modificato 1 volta in totale.
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
Nemmeno io ho l'hardware,uso PicSimLab che non è il massimo ma funziona. Adesso lo provo e vedo,ma almeno è ben ordinato e fatto bene.
Thanks
Thanks
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
Funziona bene il codice adesso. Ho provato a fare un timer che conta da 9 a 0 e visualizza le cifre su un display a sette segmenti.
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
Usare float su un PIC16F84A......
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- M_A_W_ 1968
- Scoppiettante Seguace

- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: [C][ASM] Programmazione PIC 16F84A
...comporta ipso facto la crocefissione in sala mensa con somminstrazione di 128 scudisciate e clisterone purificatore da litri 8.ubuntumate [url=http://forum.ubuntu-it.org/viewtopic.php?p=4849533#p4849533][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Usare float su un PIC16F84A......
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
M_A_W_ 1968 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4849535#p4849535][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:...comporta ipso facto la crocefissione in sala mensa con somminstrazione di 128 scudisciate e clisterone purificatore da litri 8.ubuntumate [url=http://forum.ubuntu-it.org/viewtopic.php?p=4849533#p4849533][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Usare float su un PIC16F84A......
Venerdì l'insegnante riceverà una pena esemplare
EDIT: ah! Non dimentichiamo poi la pena che le spetta per aver scelto di programmare in C una MCU con RAM < 512 byte ed E2PROM < 4K
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: [C][ASM] Programmazione PIC 16F84A
Calcolo reale che ho dovuto fare con un PIC (con N da 1200 a 42800):ubuntumate [url=http://forum.ubuntu-it.org/viewtopic.php?p=4849533#p4849533][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Usare float su un PIC16F84A......
Codice: Seleziona tutto
1 60
R = --- * ----------------
2 N * 7e-6
Codice: Seleziona tutto
4285714
R = -----------
N
- ubuntumate
- Entusiasta Emergente

- Messaggi: 1180
- Iscrizione: giovedì 28 maggio 2015, 18:18
- Distribuzione: Windows 7
- Sesso: Maschile
- Località: Milano
Re: [C][ASM] Programmazione PIC 16F84A
Non ho capito @Claudio
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
ACM/IEEE Code of ethics.
ACM/IEEE Code of ethics.
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: [C][ASM] Programmazione PIC 16F84A
Altro esempio: l'ADC dei PIC è un convertitore a 10 bit (la tensione letta viene suddivisa in 1024 step). Posso ottenere il valore di tensione con:
dove N è il valore restituito dall' ADC tra 0 e 1023 e Vrif è la tensione di riferimento del converitore, diciamo i soliti 5V. Ora, Vrif/1024 è pari a 0.0048828125, quindi la nostra tensione "float" si ottiene con:
MA, posso usare la sola aritmetica intera se ad esempio moltiplico quel 0.004... per un valore abbastanza grande, diciamo 65536, considerandone il solo valore intero, e alla fine divido il risultato di nuovo per quel 65536 (sedici shift a destra):
Il valore V che ottengo è la parte intera del float della prima formula. Se mi sevono anche dei decimali, ad esempio tre, basta moltiplicare per 1000:
Ad esempio, con N = 850 (tensione 4.15 volt):
Si ottiene 4150, che sono appunto 4.15V espressi con un numero intero le cui tre cifre meno significative rappresentano i decimali.
Codice: Seleziona tutto
V = N * (Vrif/1024)Codice: Seleziona tutto
V = N * 0.0048828125Codice: Seleziona tutto
V = int(N * int(65536*Vrif/1024) / 65536)Codice: Seleziona tutto
V = int(N * int(1000*65536*Vrif/1024) / 65536)Codice: Seleziona tutto
V = (N * 320000) >> 16-
gila75
- Imperturbabile Insigne

- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [C][ASM] Programmazione PIC 16F84A
Mai usati nemmeno i float in asm
Se per esempio devo fare 47/3=15.66
Posso fare benissimo 470/3=156 e poi tener conto e diventa 15.6
Con il radar e i vari calcoli avevo fatto così. In fase di stampa su lcd correggevo
Non usavo ai tempi(per ignoranza mia) gli shift come detto da Claudio
Se per esempio devo fare 47/3=15.66
Posso fare benissimo 470/3=156 e poi tener conto e diventa 15.6
Con il radar e i vari calcoli avevo fatto così. In fase di stampa su lcd correggevo
Non usavo ai tempi(per ignoranza mia) gli shift come detto da Claudio
Ultima modifica di gila75 il giovedì 4 febbraio 2016, 12:33, modificato 2 volte in totale.
- Claudio_F
- Entusiasta Emergente

- Messaggi: 1463
- Iscrizione: lunedì 28 maggio 2012, 18:49
- Desktop: Mate/Gnome
- Distribuzione: Ubu22.04
Re: [C][ASM] Programmazione PIC 16F84A
Beh, gli shift servono per far "tornare i conti", ma lavorando in asm molti shift si semplificano o diventano virtuali, ad esempio invece di shiftare a destra 16 volte un numero a 32 bit, basta copiare il byte 2 nel byte 0, il byte 3 nel byte 1, e azzerare i due più significativi, o, ancora più spiccio, si prendono come risultato direttamente i due byte più significativi.
- M_A_W_ 1968
- Scoppiettante Seguace

- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: [C][ASM] Programmazione PIC 16F84A
Vediamo un altro esempio, estremamente semplificato ma enormemente efficace dal punto di vista didattico, che serve ad insegnare come si ragiona in termini di codesign e cosa distingue definitivamente l'approccio amatoriale da quello professionale.
Consideriamo il più banale dei sensori di temperatura a stato solido, il vetusto LM35DZ con output in DC da 10mV/°C nel range 0÷5V, per la più stupida delle applicazioni: la misura di temperature in ambienti chiusi abitabili, con la precisione di ±1°C.
Naturalmente nessun progettista industriale considererebbe l'idea di connettere direttamente l'uscita del sensore all'ingresso dell'ADC integrato (in questo caso consideriamo un 8 bit), a maggior ragione se il sensore è cablato esternamente alla scheda. Si usa come minimo un opamp, anche mediocre, come buffer, o in casi più seri un INA. Se si parla di opamp è meglio che sia moderno, quindi full swing, in grado di fornire in output i medesimi 5V dell'alimentazione in saturazione, a meno di pochissimi mV di caduta. Ma anche se così non fosse, si impiega il più classico dei rimedi: sovralimentazione di +1,2V rispetto all'ADC Vref, per compensare il dropout in saturazione, in modo da sfruttare al massimo il range. E naturalmente ampio uso di condensatori di diverse tipologie (poliestere metallizzato, tantalio, elettrolitici in alluminio) in parallelo tra massa e segnale, oltre agli usuali device di protezione da EMI e sovratensioni permanenti, irradiate, indotte e condotte (diodi volano veloci, zenamic, transil, transzorb e affini).
A proposito di range, per l'applicazione in questione, un range 0÷50°C sarebbe già assolutamente esorbitante: d'altro canto, l'ADC integrato ha un passo di quantizzazione pari a 5'000 / 256 = 19,53mV/bit, quasi doppio rispetto ai 10mv/°C del sensore e quindi alla precisione di 1°C richiesta. Il che porta immediatamente all'esigenza di amplificare il segnale, invece di limitarsi ad un buffering. Un tipico fattore di amplificazione è pari a circa 4, anche se vi sarebbe molto più margine, ma consideriamolo sensato per questioni di rumore e immunità EMI.
Fissato dunque il guadagno del buffer di ingresso pari a 4, si ha: 19,53[mV/bit] / (4 * 10[mV/°C]) = 0,48828125[°C/bit].
Eseguendo il banale calcolo inverso, impostando come target 0,5°C/bit, ne deriva un guadagno G = 3,90625, facilmente ottenibile con una appropriata combinazione di resistori a strato metallico serie E96 e un trimmer multigiri in cermet di piccolo valore, se parliamo di applicazioni industriali: oppure si approssima grezzamente il guadagno a 4,0 usando comunissimi resistori al 5%, come avviene quasi sempre negli apparati consumer.
La conseguenza immediata di tutto ciò (due minuti di riflessione e una manciatina di componenti il cui costo industriale difficilmente raggiunge la soglia di un paio di euro) è che il firmware può semplicemente permettersi di dimezzare con uno shift il valore letto dall'ADC e inviare al display la temperatura convertita in BCD. In realtà, per mantenere intatto anche il bit meno significativo della misura, è preferibile operare su due byte e moltiplicare per cinque (sommando al valore originale il medesimo valore shiftato due volte a sinistra), il che è esattamente equivalente alla divisione per due in ambito fixed point, con uno spostamento della virgola.
Nel frattempo il classico dilettante allo sbaraglio ha invece prontamente "risolto" il problema linkando la libreria floating point e inserendo moltiplicazioni e chiamate alla funzione logaritmo per determinare il numero delle cifre prima della stampa, sprecando così un 45% della preziosa memoria di programma on chip, dopo avere causato thread di cinque o sei pagine perché ovviamente "non gli tornano i conti", "non visualizza i decimali", "la temperatura è sbagliata".

Consideriamo il più banale dei sensori di temperatura a stato solido, il vetusto LM35DZ con output in DC da 10mV/°C nel range 0÷5V, per la più stupida delle applicazioni: la misura di temperature in ambienti chiusi abitabili, con la precisione di ±1°C.
Naturalmente nessun progettista industriale considererebbe l'idea di connettere direttamente l'uscita del sensore all'ingresso dell'ADC integrato (in questo caso consideriamo un 8 bit), a maggior ragione se il sensore è cablato esternamente alla scheda. Si usa come minimo un opamp, anche mediocre, come buffer, o in casi più seri un INA. Se si parla di opamp è meglio che sia moderno, quindi full swing, in grado di fornire in output i medesimi 5V dell'alimentazione in saturazione, a meno di pochissimi mV di caduta. Ma anche se così non fosse, si impiega il più classico dei rimedi: sovralimentazione di +1,2V rispetto all'ADC Vref, per compensare il dropout in saturazione, in modo da sfruttare al massimo il range. E naturalmente ampio uso di condensatori di diverse tipologie (poliestere metallizzato, tantalio, elettrolitici in alluminio) in parallelo tra massa e segnale, oltre agli usuali device di protezione da EMI e sovratensioni permanenti, irradiate, indotte e condotte (diodi volano veloci, zenamic, transil, transzorb e affini).
A proposito di range, per l'applicazione in questione, un range 0÷50°C sarebbe già assolutamente esorbitante: d'altro canto, l'ADC integrato ha un passo di quantizzazione pari a 5'000 / 256 = 19,53mV/bit, quasi doppio rispetto ai 10mv/°C del sensore e quindi alla precisione di 1°C richiesta. Il che porta immediatamente all'esigenza di amplificare il segnale, invece di limitarsi ad un buffering. Un tipico fattore di amplificazione è pari a circa 4, anche se vi sarebbe molto più margine, ma consideriamolo sensato per questioni di rumore e immunità EMI.
Fissato dunque il guadagno del buffer di ingresso pari a 4, si ha: 19,53[mV/bit] / (4 * 10[mV/°C]) = 0,48828125[°C/bit].
Eseguendo il banale calcolo inverso, impostando come target 0,5°C/bit, ne deriva un guadagno G = 3,90625, facilmente ottenibile con una appropriata combinazione di resistori a strato metallico serie E96 e un trimmer multigiri in cermet di piccolo valore, se parliamo di applicazioni industriali: oppure si approssima grezzamente il guadagno a 4,0 usando comunissimi resistori al 5%, come avviene quasi sempre negli apparati consumer.
La conseguenza immediata di tutto ciò (due minuti di riflessione e una manciatina di componenti il cui costo industriale difficilmente raggiunge la soglia di un paio di euro) è che il firmware può semplicemente permettersi di dimezzare con uno shift il valore letto dall'ADC e inviare al display la temperatura convertita in BCD. In realtà, per mantenere intatto anche il bit meno significativo della misura, è preferibile operare su due byte e moltiplicare per cinque (sommando al valore originale il medesimo valore shiftato due volte a sinistra), il che è esattamente equivalente alla divisione per due in ambito fixed point, con uno spostamento della virgola.
Nel frattempo il classico dilettante allo sbaraglio ha invece prontamente "risolto" il problema linkando la libreria floating point e inserendo moltiplicazioni e chiamate alla funzione logaritmo per determinare il numero delle cifre prima della stampa, sprecando così un 45% della preziosa memoria di programma on chip, dopo avere causato thread di cinque o sei pagine perché ovviamente "non gli tornano i conti", "non visualizza i decimali", "la temperatura è sbagliata".
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
- vbextreme
- Entusiasta Emergente

- Messaggi: 1214
- Iscrizione: domenica 12 gennaio 2014, 14:06
- Desktop: lxde
- Distribuzione: xubuntu 14.10
Re: [C][ASM] Programmazione PIC 16F84A
[@MAW$ guarda che bel cielo che c'è fuori\n]
Se si ha ad esempio un atmega328p e poca esperienza di elettronica si collega direttamente l'uscita del lm35 al pin analogico, oppure se si ha nel cassetto una resistenza da 2k(come da datasheet) la si mette in serie.
Infine si imposta AREF a quello interno da 1.1v cosi si potranno leggere temperature tra lo 0 e i 110°C.
Naturalmente non dovrà mai e poi mai essere visto da @MAW...
[/@MAW]
Se si ha ad esempio un atmega328p e poca esperienza di elettronica si collega direttamente l'uscita del lm35 al pin analogico, oppure se si ha nel cassetto una resistenza da 2k(come da datasheet) la si mette in serie.
Infine si imposta AREF a quello interno da 1.1v cosi si potranno leggere temperature tra lo 0 e i 110°C.
Naturalmente non dovrà mai e poi mai essere visto da @MAW...
[/@MAW]
-
gila75
- Imperturbabile Insigne

- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [C][ASM] Programmazione PIC 16F84A
M_A_W hai ragionissima, ma si sincero: secondo te un hobbista, anche se talentuoso può sapere certe cose?
Ammiro molto di più il classico hobbista sopra citato che in qualche modo riesce a tira fuori qualcosa di funzionante, che studenti
d'ingegneria che dopo anni non sanno fare nulla...e fidati che ne ho incontrati su altri forum.
con questo non sto inneggiando a fare le cose un tot al kg...
Avevo fatto esperimenti con la sonda di temperatura, ma non ricordo se avevo usato un oamp...forse un lm358 si adesso che mi fai venire in mente,
ma non ricordo.
Ammiro molto di più il classico hobbista sopra citato che in qualche modo riesce a tira fuori qualcosa di funzionante, che studenti
d'ingegneria che dopo anni non sanno fare nulla...e fidati che ne ho incontrati su altri forum.
con questo non sto inneggiando a fare le cose un tot al kg...
Avevo fatto esperimenti con la sonda di temperatura, ma non ricordo se avevo usato un oamp...forse un lm358 si adesso che mi fai venire in mente,
ma non ricordo.
- M_A_W_ 1968
- Scoppiettante Seguace

- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: [C][ASM] Programmazione PIC 16F84A
Certo che sì. E' sufficiente che abbia frequentato le scuole dell'obbligo con profitto e che abbia letto almeno un paio di questi testi (sezione "Firmware, applicazioni e patatine fritte").gila75 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4850082#p4850082][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:M_A_W hai ragionissima, ma si sincero: secondo te un hobbista, anche se talentuoso può sapere certe cose?
Poi voglio vedere come i vari geni affrontano lo step successivo: LM35CAZ, in grado di misurare anche temperature negative, ma solo con una appropriata polarizzazione per lo shift nel range 0÷+5V...
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
-
gila75
- Imperturbabile Insigne

- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [C][ASM] Programmazione PIC 16F84A
ok...recepito.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 1 ospite