summaryrefslogtreecommitdiff
path: root/ferment.c
diff options
context:
space:
mode:
Diffstat (limited to 'ferment.c')
-rw-r--r--ferment.c130
1 files changed, 0 insertions, 130 deletions
diff --git a/ferment.c b/ferment.c
deleted file mode 100644
index 1d282d2..0000000
--- a/ferment.c
+++ /dev/null
@@ -1,130 +0,0 @@
-//#define F_CPU 7372800UL
-#include <stdint.h>
-#include <string.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <avr/sleep.h>
-#include <avr/pgmspace.h>
-#include <avr/eeprom.h>
-#include <util/delay.h>
-
-#include "serial.h"
-#include "stdio.h"
-#include "pid.h"
-
-/* port D
- *
- * 4 1- (NMOS, inverted)
- * 5 1+ (PMOS)
- * 6 2- (NMOS, inverted)
- * 7 2+ (PMOS)
- *
- */
-
-#define D_1_MINUS (1 << 4)
-#define D_1_PLUS (1 << 5)
-#define D_2_MINUS (1 << 6)
-#define D_2_PLUS (1 << 7)
-
-const int target_temp = 30;
-volatile uint16_t adc_res;
-volatile uint8_t adc_new;
-
-struct PID_DATA pid_data;
-
-/* Turns the H-bridge off, putting the output
- * into high impedance mode. */
-static void bridge_off(void)
-{
- PORTD |= D_1_MINUS | D_2_MINUS;
- PORTD &= ~(D_1_PLUS | D_2_PLUS);
-}
-
-/* Turns the H-bridge on, setting 1+ 2- */
-static void bridge_on_heat(void)
-{
- bridge_off();
- _delay_ms(100);
- PORTD |= D_1_PLUS;
- PORTD &= ~D_2_MINUS;
-}
-
-/* Turns the H-bridge on, setting 1- 2+ */
-static void bridge_on_cool(void)
-{
- bridge_off();
- _delay_ms(100);
- PORTD |= D_2_PLUS;
- PORTD &= ~D_1_MINUS;
-}
-
-/* Initializes the output port needed for the H-bridge */
-static void bridge_init(void)
-{
- bridge_off();
- DDRD |= D_1_PLUS | D_1_MINUS | D_2_PLUS | D_2_MINUS;
-}
-
-/* initializes ADC */
-static void adc_init(void)
-{
- adc_new = 0;
- ADMUX = (1 << REFS1) | (1 << REFS0);
- /* select channel x (0 for now) */
- ADMUX |= 0x0;
- ADCSRA = (1 << ADEN) | (1 << ADIE) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
-}
-
-/* reads ADC */
-static void start_temp_conv(void)
-{
- ADCSRA |= (1<<ADSC);
-}
-
-/* ADC completion interrupt */
-ISR(ADC_vect)
-{
- adc_res = ADCW;
- adc_new = 1;
-}
-
-/* ADC results to temperature conversion routine */
-int adc_to_centigrade(uint16_t adc_val) {
- return 0;
-}
-
-/* Initializes TIMER1 */
-static void timer_init(void)
-{
- TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10);
- OCR1A = 7200;
- TIMSK|=(1<<OCIE1A);
-}
-
-ISR(TIMER1_COMPA_vect)
-{
- serial_send("*\r\n", 3, 1);
- start_temp_conv();
-}
-
-int main(void)
-{
- char params[12];
-
- serial_init();
- adc_init();
- timer_init();
- bridge_init();
-
- sei();
-
- bridge_on_cool();
- while (1) {
- if (adc_new) {
- sprintf(params, "%u\r\n", adc_res);
- serial_send(params, strlen(params), 1);
- adc_new = 0;
- }
- _delay_ms(100);
- }
-}