View difference between Paste ID: wnVJWGFH and zVV9eHW6
SHOW: | | - or go back to the newest paste.
1
#include <stdio.h>
2
#include <stdint.h>
3
#include <ctype.h> 
4
#include <avr/io.h>		    // include I/O definitions (port names, pin names, etc)
5
#include <avr/interrupt.h>	// include interrupt support
6
#define USART_BAUDRATE 9600
7
#define F_CPU 8000000
8
#define MYUBRR F_CPU/16/USART_BAUDRATE-1
9
static volatile unsigned char temp; //so it is global, because we can not return from interrupt
10
11
int printCHAR(char character, FILE *stream)
12
{
13
   while ((UCSR0A & (1 << UDRE)) == 0) {};
14
15
   UDR0 = character;
16
17
   return 0;
18
}
19
20
FILE uart_str = FDEV_SETUP_STREAM(printCHAR, NULL, _FDEV_SETUP_RW);
21
22
23
void adc_init(void) // Function to initialise the ADC feature
24
{
25
	ADCSRA=0X00; // Clear previous ADC results and status flags
26
	ADMUX |= (1 << ADLAR) | (1 << REFS0);
27
	ADCSRA |= (1 << ADSC) | (1 << ADEN) | (1 << ADPS1) | (1 << ADPS2)|(1<<ADIE); //interrpts now enabled
28
}
29
30
31
32
33
/*unsigned char adc_start(unsigned char channel) // Function to perform an ADC conversion, Takes 0-8 as input
34
// to select which input to convert
35
{
36
	unsigned char i;
37
	ADCH=0x00; // Clear the previous result
38
39
	i=channel&0x07; // Decide which line to perform ADC conversion on
40
	ADMUX=i|0x60; // Enter which line to perform in the ADC control register
41
	ADCSRA|=1<<ADSC;
42
  
43
	while(ADCSRA & (1<<ADSC));  // wait for conv. to complete
44
	unsigned char temp=ADCH; //unsigned int temp=ADC;   for 10 bits
45
	return temp;
46
}
47
*/
48
ISR(ADC_vect){
49
// NOT USING ADC CHANNEL SELECTOR FOR NOW
50
//
51
//
52
//		unsigned char i;
53
//	ADCH=0x00; // Clear the previous result
54
//	i=channel&0x07; // Decide which line to perform ADC conversion on
55
//	ADMUX=i|0x60; // Enter which line to perform in the ADC control register
56
 // wait for conv. to complete
57
	temp = ADCH; //unsigned int temp=ADC;   for 10 bits
58
	printf("read: %d \n\r", temp);
59
	ADCSRA|=1<<ADSC;
60
}
61
62
int main (void)
63
{
64
   
65
   UCSR0B |= (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry
66
   UCSR0C |= (1 << UCSZ0) | (1 << UCSZ1); // Use 8-bit character sizes
67
   UBRR0H = (MYUBRR >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
68
   UBRR0L = MYUBRR; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
69
   stdout = &uart_str; 
70
   printf("Hello World\n\r"); 
71
   uint8_t result=0;
72
   adc_init();
73
   sei();//global interrupts enable
74
75
   while(1){
76
   }
77
   
78
79
}