memorizzazione interi PIC16
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Cigolino
- Junior Member
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.
- luongo
- Autore della discussione
- Premium Member
- Messaggi: 131
- Ringraziamenti ricevuti 0
se non ho capito male, tu desideri rimappare un numero intero a 10 BIT in un numero Intero a 7 0 8 Bit ? se è cosi è sufficiente fare uno shift di due a destra del numero intero ( o 3 bit se tmappi da 0 a 127).
Infatti se hai un intero (che corrisponde ad una misura a 10 bit) il valore varia da 0 a 1023. e la sua memorizzazione in due Byte è la seguente xxxx xxyy yyyy yyyy dove x=0 y= valore binario memorizzato.
Se tu desideri rimappare i numeri da 0 a 1023 nell'intervallo 0 - 255 (un byte) basta eseguire uno shift a destra di 2 bit. Infatti supponi di avere il numero 1023= 0000 0011 1111 1111 dopo lo shift attieni :
un byte 1111 1111=255; se invece hai il valore a 10 bit pari 511=0000 0001 1111 1111 dopo lo shift di due a destra ottieni 0111 1111=127 (127 è esattamente la metà di 255, come 511 è la meta di 1023).
in effetti lo shift a destra di 1 bit corrisponde alla divisione (decimale) per 2. lo shift di 2 bit alla divisione per 4 e così via.
Spero di aver capito la tua richiesta
Saluti
Si prega Accedi o Crea un account a partecipare alla conversazione.
- gcupini
- Visitatori
gcupini ha scritto: ciao,
se non ho capito male, tu desideri rimappare un numero intero a 10 BIT in un numero Intero a 7 0 8 Bit ? se è cosi è sufficiente fare uno shift di due a destra del numero intero ( o 3 bit se tmappi da 0 a 127).
Infatti se hai un intero (che corrisponde ad una misura a 10 bit) il valore varia da 0 a 1023. e la sua memorizzazione in due Byte è la seguente xxxx xxyy yyyy yyyy dove x=0 y= valore binario memorizzato.
Se tu desideri rimappare i numeri da 0 a 1023 nell'intervallo 0 - 255 (un byte) basta eseguire uno shift a destra di 2 bit. Infatti supponi di avere il numero 1023= 0000 0011 1111 1111 dopo lo shift attieni :
un byte 1111 1111=255; se invece hai il valore a 10 bit pari 511=0000 0001 1111 1111 dopo lo shift di due a destra ottieni 0111 1111=127 (127 è esattamente la metà di 255, come 511 è la meta di 1023).
in effetti lo shift a destra di 1 bit corrisponde alla divisione (decimale) per 2. lo shift di 2 bit alla divisione per 4 e così via.
Spero di aver capito la tua richiesta
Saluti[/quote
Allora su quanto hai detto non ci piove il mio problena è ridurre il numero di byte inviati dall'usart quindi se io da 1023 shifto di tre e ottengo 127 ora io devo codificare due canali quindi a uno sommo 128 e ottengo 255 se è l'altro non sommo nulla e così spedisco un byte
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luongo
- Autore della discussione
- Premium Member
- Messaggi: 131
- Ringraziamenti ricevuti 0
Naturalmente, il discorso di inviare solo il byte più basso non ha senso, su una lettura a fondo scala, si perderebbe parte dell'informazione.
Dividendola invece, si perde in risoluzione, ma come hai detto non importa...
Personalmente, non so andare oltre, quando trovi il modo di gestire la cosa in assembler, spero che la pubblichi così si impara... Ho visto qui sul forum il progetto del Rover, così adesso mi è chiaro anche cosa stai realizzando
Si prega Accedi o Crea un account a partecipare alla conversazione.
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.