You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					38 lines
				
				576 B
			
		
		
			
		
	
	
					38 lines
				
				576 B
			| 
								 
											8 years ago
										 
									 | 
							
								#include <stdint.h>
							 | 
						||
| 
								 | 
							
								#include <stdlib.h>
							 | 
						||
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <LUFA/Common/Common.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "clock.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Counted time
							 | 
						||
| 
								 | 
							
								volatile clock_time_t clock_datetime = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Overflow interrupt
							 | 
						||
| 
								 | 
							
								ISR(TIMER1_COMPA_vect, ISR_BLOCK)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									clock_datetime += 1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Initialise the clock
							 | 
						||
| 
								 | 
							
								void clock_init()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									OCR1A  = (((F_CPU / 1024) / 100) - 1);
							 | 
						||
| 
								 | 
							
									TCCR1B = ((1 << WGM12) | (1 << CS12) | (1 << CS10));
							 | 
						||
| 
								 | 
							
									TIMSK1 = (1 << OCIE1A);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Return time
							 | 
						||
| 
								 | 
							
								clock_time_t clock_time()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									clock_time_t time;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									GlobalInterruptDisable();
							 | 
						||
| 
								 | 
							
									time = clock_datetime;
							 | 
						||
| 
								 | 
							
									GlobalInterruptEnable();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return time;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |