Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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:
Codice sorgente - presumibilmente C++
#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
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 il 28/12/2011 alle 11:19
lo so perfettamente, ma dato che nessuno risponde sull'altro forum e ho aspettato 2 giorni prima di postarlo qui, non avevo altre soluzioni! - el cuba libre - 29/12/11 18:05