|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*!
- * \file hal.h
- *
- * Copyright (C) 2020 Choutouridis Christos (http://www.houtouridis.net)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- #ifndef DRIVERS_HAL_H_
- #define DRIVERS_HAL_H_
-
- #include <thermostat_shield.h>
- #include <alcd.h>
- #include <jiffies.h>
- #include <onewire_uart.h>
- #include <deque08.h>
- #include <thermostat.h>
- #include <stdio.h>
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
- int hal_hw_init (void);
-
- /*
- * ========== LCD ===========
- */
- void lcd_init (void);
- void lcd_enable (uint8_t en) ;
- int lcd_putchar (char c);
- int lcd_puts (const char *s);
-
- /*
- * ========== Led interface ==========
- */
- void led_red (uint8_t en);
- void led_green (uint8_t en);
-
-
- /*
- * ========= Relay ===========
- */
- void relay(uint8_t on);
-
- /*
- * ========= Temperature ===========
- */
- // OneWire commands
- #define SKIPROM 0xCC // Skip ROM matching transition
- #define STARTCONV 0x44 // Tells device to take a temperature reading and put it on the scratchpad
- #define COPYSCRATCH 0x48 // Copy EEPROM
- #define READSCRATCH 0xBE // Read EEPROM
- #define WRITESCRATCH 0x4E // Write to EEPROM
- #define RECALLSCRATCH 0xB8 // Reload from last known
- #define READPOWERSUPPLY 0xB4 // Determine if device needs parasite power
- #define ALARMSEARCH 0xEC // Query bus for devices with an alarm condition
-
- // Device resolution
- #define TEMP_9_BIT 0x1F // 9 bit
- #define TEMP_10_BIT 0x3F // 10 bit
- #define TEMP_11_BIT 0x5F // 11 bit
- #define TEMP_12_BIT 0x7F // 12 bit
- #define IS_TEMP_RESOLUTION(x) \
- ((x == TEMP_9_BIT) || (x == TEMP_10_BIT) || (x == TEMP_11_BIT) || (x == TEMP_12_BIT))
-
- int temp_init (uint8_t resolution);
- float temp_read (void);
-
- /*
- * ========= Proximity ===========
- */
- #define PROX_TIME_MAX 25 // [msec]
- #define PROX_READINGS 7 // How many readings for averaging
- #define PROX_MAX_DISTANSE 450 // [cm]
-
- typedef struct {
- float_t readings[7];
- int iter;
- } proximity_t;
-
- void proximity_init (proximity_t* p);
- float_t proximity (proximity_t* p);
-
-
- /*
- * Public data types / classes
- */
- extern alcd_t alcd;
- extern ow_uart_t ow;
- extern proximity_t prox;
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* DRIVERS_HAL_H_ */
|