21.08.2012 Aufrufe

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

Computertechnik mit Mikrocontrollern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

KAPITEL 14. ERSTE EXPERIMENTE 203<br />

an gelben ca. 1,7 Volt und an grünen ca. 1,8 Volt. Mit einem<br />

Draht und Prüfspitzen läßt sich leicht zwischen Leuchtdiode<br />

und dem Pin an ADC3 eine Messverbindung herstellen.<br />

Das folgende Programm nutzt die interne Referenzspannung,<br />

die laut Datenblatt beim ATmega8 zwischen 2,45 und<br />

2,80 Volt liegen kann. Für genaue Messungen muss kalibriert<br />

werden.<br />

/*<br />

** Name: software/dvm/dvm.c<br />

** Funktion: Digital Voltage Meter, interrupt and polling version<br />

** History: 20041002 Hanns-Konrad Unger creation<br />

*/<br />

#include <br />

#include <br />

#include "putbyte_disp.c"<br />

#include "../include/adc.c"<br />

#ifdef __AVR_ATmega8__<br />

#define AREF 25575 // calibrate here, nice are 24552 25575 26598 27621<br />

#else // ATmega48 ...<br />

#define AREF 11000<br />

#endif<br />

static void putstring (unsigned char *p) {while (*p) putbyte (*p++);}<br />

unsigned char display_arr[18] = "\r 2.5600 Volt DC";<br />

// 0123456789012345678<br />

void display() {<br />

volatile unsigned short val; //!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />

val=adc_result[3]*(AREF/0x3ff);<br />

unsigned char i;<br />

for (i=8;i>=5;) {display_arr[i--]=val%10+’0’; val/=10;}<br />

display_arr[3]=val+’0’;<br />

putstring (display_arr);<br />

}<br />

ISR (TIMER2_COMPB_vect) { // timer2<br />

sei();<br />

display();<br />

#if adc_FLAG == ADIF<br />

adc();<br />

#endif<br />

}<br />

main() {<br />

led_init();<br />

led1_on(); led2_on(); led3_on(); // Voltages to measure

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!