cenenzo Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 (endret) Lag et C-program som leser lufttrykket, fra en lufttrykk-sensor, som er koblet til ADC inngang 3, og som skriver ut lufttrykk på PC-skjerm, i hPa. Det brukes en analog lufttrykk-sensor, og elektronikken er laget slik at den dekker et området fra 900 til 1100 hPa. Elektronikken er laget slik at 900 hPa gir 0,0 Volt inn på ADC, og 1100 hPa gir 5,0 Volt inn på ADC. Programmet skal gå i evig løkke. Det er greit at det brukes 8 bit ADC. Det er ønskelig at konverteringstiden er lengst mulig. De som ønsker det, kan sende ut desimalverdien, og bruke 10 bit ADC. Kan noen hjelpe meg med hvordan jeg skal få laget dette C-programmet? dette er iallefall det jeg har, tror ikke det er riktig.. #include <stdio.h> #include <dev/board.h> #include <io.h> /********************* Start paa hovedprogram **************/ int main(void) { unsigned long baud = 115200; unsigned char x; NutRegisterDevice(&DEV_UART, 0, 0); freopen(DEV_UART_NAME, "w", stdout); freopen(DEV_UART_NAME, "r", stdin); _ioctl(_fileno(stdout), UART_SETSPEED, &baud); do { x = ADC & 3x01; // ER DETTE RIKTIG? if(x) { printf("1100 hPa (5V) \n"); } else{ printf("900 hPa (GND) inn\n"); } } while(1); for(;; return 0; } /********************* Slutt paa hovedprogram **************/ Endret 7. mars 2014 av cenenzo Lenke til kommentar
Dipol Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 Du må sette opp registerene for ADC'en til å lese frå pinen. Du bør finne alt du trenger i databladet for ADC'en. Lenke til kommentar
cenenzo Skrevet 7. mars 2014 Forfatter Del Skrevet 7. mars 2014 (endret) Du må sette opp registerene for ADC'en til å lese frå pinen. Du bør finne alt du trenger i databladet for ADC'en. hvordan kan jeg gjøre dette? ser ikke ut som at det er lagt ut noe datablad.. http://www.atmel.com/Images/doc2467.pdf kan dette være noe? http://www.it.hiof.no/datateknikk/time/inputadc.pdf dette er eksempel koden vi fikk.men ser ikke ut som om jeg skjønner så mye av dem. Det jeg trodde var at det jeg hadde gjort over var riktig, men brått ikke... Setter pris på om noen kan veilledet meg gjennom oppg. Endret 7. mars 2014 av cenenzo Lenke til kommentar
Dipol Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 Side 230 på det første dokumentet du linket. ADC pinnene er forresten PF0 til PF7. Lenke til kommentar
cenenzo Skrevet 7. mars 2014 Forfatter Del Skrevet 7. mars 2014 Side 230 på det første dokumentet du linket. ADC pinnene er forresten PF0 til PF7. ADC3 : ACME: 1 , ADEN: 0 , MUX2..0: 011, pinnene PF0 til PF7. hvor fant du dette? Hvordan skal jeg bruke disse ? Tusen takk for at du hjelper meg. Lenke til kommentar
Dipol Skrevet 7. mars 2014 Del Skrevet 7. mars 2014 Side 230 på det første dokumentet du linket. ADC pinnene er forresten PF0 til PF7. ADC3 : ACME: 1 , ADEN: 0 , MUX2..0: 011, pinnene PF0 til PF7. hvor fant du dette? Hvordan skal jeg bruke disse ? Tusen takk for at du hjelper meg. På side 2, på figuren ser du at pinnene PF0 til PF7 er merket med ADC. Ellers så må du bare lese i databladet. Her finner du blant annet: "The ADC is enabled by setting the ADC Enable bit, ADEN in ADCSRA." " After the conversion is complete (ADIF is high), the conversion result can be found in the ADC Result Registers (ADCL, ADCH" " Bit 6 – ADSC: ADC Start Conversion In Single Conversion mode, write this bit to one to start each conversion. In Free Running mode, write this bit to one to start the first conversion." Lenke til kommentar
cenenzo Skrevet 9. mars 2014 Forfatter Del Skrevet 9. mars 2014 (endret) Side 230 på det første dokumentet du linket. ADC pinnene er forresten PF0 til PF7. ADC3 : ACME: 1 , ADEN: 0 , MUX2..0: 011, pinnene PF0 til PF7. hvor fant du dette? Hvordan skal jeg bruke disse ? Tusen takk for at du hjelper meg. På side 2, på figuren ser du at pinnene PF0 til PF7 er merket med ADC. Ellers så må du bare lese i databladet. Her finner du blant annet: "The ADC is enabled by setting the ADC Enable bit, ADEN in ADCSRA." " After the conversion is complete (ADIF is high), the conversion result can be found in the ADC Result Registers (ADCL, ADCH" " Bit 6 – ADSC: ADC Start Conversion In Single Conversion mode, write this bit to one to start each conversion. In Free Running mode, write this bit to one to start the first conversion." #include <dev/board.h> #include <stdio.h> #include <io.h> #include <sys/timer.h> int main (void){ unsigned char les; float lufttrykk; unsigned long baud = 14400; NutRegisterDevice(&DEV_UART, 0, 0); freopen(DEV_UART_NAME, "w", stdout); freopen(DEV_UART_NAME, "r", stdin); ioctl(_fileno(stdout), UART_SETSPEED, &baud); ADMUX = (1 << REFS0) | (1 << ADLAR) | (1 << MUX0); while(1) { ADCSRA = (1 << ADEN) | (1 << ADSC) | (1 << ADIF) | (1 << ADPS2); while (!(ADCSRA & 0x10)); les = ADLAR; lufttrykk =((les*1024)/205); //Det er 205 pHa per volt. printf("\nLufttrykket er: %d pHa", lufttrykk); NutSleep(400); for(;; return 0; } ser dette riktig ut?? Endret 9. mars 2014 av cenenzo Lenke til kommentar
cenenzo Skrevet 9. mars 2014 Forfatter Del Skrevet 9. mars 2014 Side 230 på det første dokumentet du linket. ADC pinnene er forresten PF0 til PF7. hvordan klarte du å finne deg fram gjennom databladet så fort? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå