diff options
Diffstat (limited to 'software')
| -rw-r--r-- | software/main.c | 38 |
1 files changed, 35 insertions, 3 deletions
diff --git a/software/main.c b/software/main.c index 9e2cb5d..b791647 100644 --- a/software/main.c +++ b/software/main.c | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | #include <avr/io.h> | 3 | #include <avr/io.h> |
| 4 | #include <avr/interrupt.h> | 4 | #include <avr/interrupt.h> |
| 5 | #include <util/delay.h> | 5 | #include <util/delay.h> |
| 6 | #include <avr/sleep.h> | ||
| 6 | 7 | ||
| 7 | #include "inc/int/dcf77.h" | 8 | #include "inc/int/dcf77.h" |
| 8 | 9 | ||
| @@ -75,7 +76,14 @@ int main(void) | |||
| 75 | 76 | ||
| 76 | // MCU Control Register (controls CPU-behaviours like interrupts & sleepmode) | 77 | // MCU Control Register (controls CPU-behaviours like interrupts & sleepmode) |
| 77 | // MCUCR |= ~(1<<ISC01) | (1<<ISC00); // any logical change generates interrupt | 78 | // MCUCR |= ~(1<<ISC01) | (1<<ISC00); // any logical change generates interrupt |
| 79 | |||
| 80 | // set sleep mode to power-down... | ||
| 81 | // MCUCR &= ~(1<<SM0); | ||
| 82 | // MCUCR |= (1<<SM1); | ||
| 83 | set_sleep_mode(SLEEP_MODE_PWR_DOWN); | ||
| 84 | |||
| 78 | PCMSK |= (1<<PCINT0); | 85 | PCMSK |= (1<<PCINT0); |
| 86 | |||
| 79 | // INT0_CONTROL = INT0_RISING_EDGE; // going to toggle int0-behaviour | 87 | // INT0_CONTROL = INT0_RISING_EDGE; // going to toggle int0-behaviour |
| 80 | 88 | ||
| 81 | TCCR0A |= (1 << WGM01); // CTC mode | 89 | TCCR0A |= (1 << WGM01); // CTC mode |
| @@ -89,6 +97,8 @@ int main(void) | |||
| 89 | // OCR0A = CTC_MATCH_OVERFLOW; | 97 | // OCR0A = CTC_MATCH_OVERFLOW; |
| 90 | TIMSK |= (1 << OCIE0A); // if you want interrupt | 98 | TIMSK |= (1 << OCIE0A); // if you want interrupt |
| 91 | 99 | ||
| 100 | sleep_enable(); | ||
| 101 | sleep_bod_disable(); | ||
| 92 | sei(); | 102 | sei(); |
| 93 | 103 | ||
| 94 | for(uint8_t i=0; i<16; i++) | 104 | for(uint8_t i=0; i<16; i++) |
| @@ -97,16 +107,38 @@ int main(void) | |||
| 97 | _delay_ms(5); | 107 | _delay_ms(5); |
| 98 | } | 108 | } |
| 99 | 109 | ||
| 110 | |||
| 111 | char lastsec = 0; | ||
| 100 | while (1) | 112 | while (1) |
| 101 | { | 113 | { |
| 102 | //print_data(lastinterval<<1 | (PINB & PB0)); | 114 | //print_data(lastinterval<<1 | (PINB & PB0)); |
| 115 | if(lastsec != t_current.s) | ||
| 116 | { | ||
| 117 | //for (uint8_t i = 16; i > 0; i--) | ||
| 118 | // { | ||
| 119 | print_data( | ||
| 120 | ~( | ||
| 121 | (uint16_t) 0 | ||
| 122 | // | ((uint16_t) (PINB & 0x0001))<<15 | ||
| 123 | | t_current.h<<10 | ||
| 124 | | t_current.m<<5 | ||
| 125 | | t_current.s>>1) | ||
| 126 | ); | ||
| 127 | _delay_us(50); | ||
| 128 | // } | ||
| 129 | lastsec = t_current.s; | ||
| 130 | } | ||
| 103 | 131 | ||
| 104 | print_data( | 132 | print_data( |
| 105 | (uint16_t) 0 | 133 | (uint16_t) 0 |
| 106 | | ((uint16_t) (PINB & 0x0001))<<15 | 134 | // | ((uint16_t) (PINB & 0x0001))<<15 |
| 107 | | t_current.h<<8 | 135 | | t_current.h<<10 |
| 108 | | t_current.m | 136 | | t_current.m<<5 |
| 137 | | t_current.s>>1 | ||
| 109 | ); | 138 | ); |
| 139 | sleep_cpu(); | ||
| 140 | |||
| 141 | |||
| 110 | // print_data(interval | ((PINB & PB0) == 1 ? 2 : 0)); | 142 | // print_data(interval | ((PINB & PB0) == 1 ? 2 : 0)); |
| 111 | //print_data(PINB); | 143 | //print_data(PINB); |
| 112 | } | 144 | } |
