Strumenti Utente

Strumenti Sito


simon

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisioneEntrambe le parti successive la revisione
simon [2021/01/11 18:11] – [Software] adminsimon [2021/01/11 18:23] – [Software] admin
Linea 247: Linea 247:
 Il programma che caricheremo nel microcontrollore non usa nessuna delle funzioni di Arduino ma opera direttamente sui registri dell'ATtiny13A. Questa soluzione migliora nettamente le prestazioni e permette di ridurre la dimensione del programma compilato (quello che caricheremo occupa praticamente tutta la memoria disponibile) ma complica la scrittura del programma e lo rende incompatibile con altri tipi di microcontrollore. Il programma che caricheremo nel microcontrollore non usa nessuna delle funzioni di Arduino ma opera direttamente sui registri dell'ATtiny13A. Questa soluzione migliora nettamente le prestazioni e permette di ridurre la dimensione del programma compilato (quello che caricheremo occupa praticamente tutta la memoria disponibile) ma complica la scrittura del programma e lo rende incompatibile con altri tipi di microcontrollore.
  
-Il programma non è spiegato nel dettaglio ma commenti sono sufficienti a capire come funziona il codice ma bisogna:+Il programma non è spiegato nel dettaglio ma dai commenti si capisce come funziona
 + 
 +Prerequisiti:
   * sapere come funzionano gli [[wpi>Operazione_bit_a_bit|operatori bitwise]], il [[wp>Mask_(computing)|bit masking]], lo shift a destra (>>) e sinistra (<<)   * sapere come funzionano gli [[wpi>Operazione_bit_a_bit|operatori bitwise]], il [[wp>Mask_(computing)|bit masking]], lo shift a destra (>>) e sinistra (<<)
   * essere in grado di trovare le informazioni nel datasheet di un microcontrollore, in particolare la parte che riguarda i registri, il nome dei bit nei registri e la funzione svolta (in questo caso è utile il sommario a pagina 158 del datasheet dell'ATtiny13A)   * essere in grado di trovare le informazioni nel datasheet di un microcontrollore, in particolare la parte che riguarda i registri, il nome dei bit nei registri e la funzione svolta (in questo caso è utile il sommario a pagina 158 del datasheet dell'ATtiny13A)
 +  * saper programmare in C
  
-Un minmo di background di programmazione in C è altrettanto indispensabile, ma non è sufficiente. E' facile infatti imbattersi in istruzioni come questa:+Il codice non è banale! E' facile imbattersi in istruzioni come questa:
     while (ADCSRA & (1 << ADSC));     while (ADCSRA & (1 << ADSC));
 che si interpreta così: che si interpreta così:
-  * ADSC è un bit del registro ADCSRA è corrisponde al numero 6 (cioè il secondo bit più significativo((è definito in una macro, vedi [[https://github.com/vancegroup-mirrors/avr-libc/blob/master/avr-libc/include/avr/iotn13.h|qui]] ad esempio)) )+  * ADSC è un bit del registro ADCSRA corrisponde al numero 6cioè il secondo bit più significativo((è definito in una macro, vedi [[https://github.com/vancegroup-mirrors/avr-libc/blob/master/avr-libc/include/avr/iotn13.h|qui]] ad esempio))
   * 1 << ADSC corrisponde a 01000000   * 1 << ADSC corrisponde a 01000000
-  * ADCSRA (ADC Control and Status Register A) è uno dei registro a 8 bit che gestisce il convertitore analogico-digitale (vedere il datasheet) +  * ADCSRA (ADC Control and Status Register A) è uno dei registro a 8 bit che gestisce il convertitore analogico-digitalequando la conversione analogico digitale termina il bit ADSC del registro ADCSRA passa a 0 
-  * quando la conversione analogico digitale termina il bit ADSC del registro ADCSRA passa a 0 +  * allora l'operatore & (AND bitwiserestituisce 00000000 e termina il ciclo while
-  * allora l'operatore AND bitwise restituisce 00000000 e termina il ciclo while, che serviva ad attendere il completamento della conversione+
  
-Come si vede bisogna conoscere i registri dell'ATtiny13A (le informazioni si trovano sul datasheet) e saper operare con i bit.+Insomma per capire cosa succede in questa istruzione, che serve ad attendere il termine della conversione analogico-digitale dell'ADC, bisogna conoscere i registri dell'ATtiny13A (le informazioni si trovano sul datasheet) e saper operare con i bit (bit-shift, operatori bitwise).
  
 <code C> <code C>
simon.txt · Ultima modifica: 2023/10/27 18:02 da admin