28/12/11 10:17
el cuba libre
ciao
premetto che gran parte del codice è stata scritta dal mio professore e io devo modificare il codice che lui ha scritto di modo io possa decidere la frequenza prima di entrare nel for.
è il primo programma che mi trovo a dover scrivere per microcontrollori, in questo caso parliamo di un AVR butterfly.
ho studiato studiato i datasheets e la use guide della butterfly, li ho capiti abbastanza ma sono bloccato con il codice da scrivere. leggendo la user guide ho visto che il pin che mi dice se il joystick è premuto oppure no è il PB4, o almeno cosi ho capito!
codice:
il programma stampa 1000 su l'LCD della butterfly, io a questo punto con il joystick devo essere in grado di modificare questo valore, per esempio se pigio su si deve devo stampara 1010, se pigio giù 9090 e cosi via,solo che non riesco a capire come viene mosso il joystick, premendolo non succede assolutamente niente e non riesco a capire perché.
ci sto smattando( oltretutto il rumorino che emette quando lo provo non è rilassante XD)
grazie
premetto che gran parte del codice è stata scritta dal mio professore e io devo modificare il codice che lui ha scritto di modo io possa decidere la frequenza prima di entrare nel for.
è il primo programma che mi trovo a dover scrivere per microcontrollori, in questo caso parliamo di un AVR butterfly.
ho studiato studiato i datasheets e la use guide della butterfly, li ho capiti abbastanza ma sono bloccato con il codice da scrivere. leggendo la user guide ho visto che il pin che mi dice se il joystick è premuto oppure no è il PB4, o almeno cosi ho capito!
codice:
#include "avr/io.h" // include le define delle periferiche AVR #include "BFinit.h" // routine di inizializzazione della Butterfly #include "conversion.h" // routine di conversione da numero a stringa #include "LCD_simple.h" // gestione del display della Butterfly #include "avr/interrupt.h" // avrlib define per usare gli interrupt int main( void ) { uint16_t f; // frequenza in Hz char str[5]; BFinit(); // inizializzazione Butterfly LCD_Init(); // iniz. display TCCR1A = 0x40; // iniz. timer per generare onda quadra TCCR1B = 0x09; DDRB |= (1<<5); // il pin 5 della porta B è un'uscita OCR1A = 1136; // imposta la freq iniziale sul timer sei(); // abilita il flag globale degli interrupt (global interrupt enable nella CPU) vedi cli(); DDRB |=(0<<4);//ingresso,mette a 0 il pin 4 che dovrebbe essere il pin per la pressione del joystick PORTB |=(1<<4);// attiva la r di pull UP f=10000; ByteTo2Char(f/1000, str ); ByteTo2Char((f%1000)/10, str+2 ); str[4]=0; LCD_puts(str,0);//stampa mille a video. for(;;) // ciclo infinito: per sempre fai quel simpatico fischetto che solo tu sai fare { while(PB4!=1)// quando percepisce che il tasto è premuto {// non esegue il programma fino alla possima commutazione di stato for( f=440; f<20000; f+=100 ) { uint16_t ocr = (uint16_t)((uint32_t)(F_CPU)/(2*f)); OCR1A = ocr; Delay(100); ByteTo2Char(f/1000, str ); ByteTo2Char((f%1000)/10, str+2 ); str[4]=0; LCD_puts( str, 0 ); } } } }
il programma stampa 1000 su l'LCD della butterfly, io a questo punto con il joystick devo essere in grado di modificare questo valore, per esempio se pigio su si deve devo stampara 1010, se pigio giù 9090 e cosi via,solo che non riesco a capire come viene mosso il joystick, premendolo non succede assolutamente niente e non riesco a capire perché.
ci sto smattando( oltretutto il rumorino che emette quando lo provo non è rilassante XD)
grazie
Ultima modifica effettuata da el cuba libre 28/12/11 10:19
aaa