mirror of
https://codeberg.org/scip/attinycore-makefile-tests.git
synced 2025-12-18 03:30:57 +01:00
add
This commit is contained in:
@@ -33,21 +33,26 @@
|
||||
ACSR1A |= _BV(ACD1); \
|
||||
CCP = 0xD8; \
|
||||
WDTCSR = _BV(WDIE) | SLEEP_DURATION_BITS; \
|
||||
CCP = 0xD8; \
|
||||
CLKPR = (_BV(CLKPS0) | _BV(CLKPS1));
|
||||
|
||||
// FIXME: check!
|
||||
// PRR = 0xFF;
|
||||
|
||||
|
||||
// go into sleep mode and wake up after wtd timeout
|
||||
// also disable SPI
|
||||
// go into sleep mode
|
||||
// disable ADC
|
||||
// wait a little for the last serial out (if any) to flush
|
||||
// disable SPI
|
||||
// set all bits in power reduction register to one (shutdown everything)
|
||||
// actually sleep
|
||||
// wake up after WDT timeout
|
||||
// wait a little
|
||||
// re-enable SPI
|
||||
#define sleep_enter() \
|
||||
adc_disable(); \
|
||||
delay(10); \
|
||||
SPCR &= ~_BV(SPE); \
|
||||
sleep_enable(); \
|
||||
PRR = 0xFF; \
|
||||
sleep_mode(); \
|
||||
sleep_disable(); \
|
||||
PRR = 0x00; \
|
||||
delay(10); \
|
||||
SPCR = (1<<SPE)
|
||||
|
||||
// nothing extra to do on wake up, just wake up
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#define VCC_8441_H
|
||||
|
||||
// disable ADC globally
|
||||
#define adc_disable() ADCSRA &= ~(1<<ADEN)
|
||||
#define adc_disable() ADCSRA &= ~(1<<ADEN);
|
||||
|
||||
// enable
|
||||
#define adc_enable() ADCSRA = (1<<ADEN); _delay_ms(10);
|
||||
@@ -39,9 +39,14 @@
|
||||
ADCSRA |= _BV( ADSC ); \
|
||||
while( ( (ADCSRA & (1<<ADSC)) != 0 ) );
|
||||
|
||||
// return measured voltage
|
||||
// >> 1.1 * 1024 / 225 #=> 5.006222222222223
|
||||
// >> 1.1 * 1024 / 341 #=> 3.3032258064516133
|
||||
/* return measured voltage, adc value between 1-1023
|
||||
Calculate like:
|
||||
|
||||
>> 1.1 * 1024 / 225 #=> 5.006222222222223
|
||||
>> 1.1 * 1024 / 341 #=> 3.3032258064516133
|
||||
*/
|
||||
#define adc_get_adcw() ADCW;
|
||||
|
||||
#define adc_get_vcc() 1.1 * 1024 / ADCW;
|
||||
|
||||
#endif
|
||||
|
||||
70
mylibs/data2wire.h
Normal file
70
mylibs/data2wire.h
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
from PCP pcp/libpcp/util.c.
|
||||
|
||||
Convert byte arrays from big endian to numbers and vice versa. Do
|
||||
not take care about host endianess. In Rob Pikes' words:
|
||||
https://commandcenter.blogspot.de/2012/04/byte-order-fallacy.html
|
||||
*/
|
||||
|
||||
#ifndef DATA2WIRE_H
|
||||
#define DATA2WIRE_H
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
|
||||
inline uint64_t wire_to_data64(uint8_t *data) {
|
||||
uint64_t i =
|
||||
((uint64_t)data[7]<<0) |
|
||||
((uint64_t)data[6]<<8) |
|
||||
((uint64_t)data[5]<<16) |
|
||||
((uint64_t)data[4]<<24) |
|
||||
((uint64_t)data[3]<<32) |
|
||||
((uint64_t)data[2]<<40) |
|
||||
((uint64_t)data[1]<<48) |
|
||||
((uint64_t)data[0]<<56);
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
inline uint32_t wire_to_data32(uint8_t *data) {
|
||||
uint32_t i =
|
||||
((uint32_t)data[3]<<0) |
|
||||
((uint32_t)data[2]<<8) |
|
||||
((uint32_t)data[1]<<16) |
|
||||
((uint32_t)data[0]<<24);
|
||||
return i;
|
||||
}
|
||||
|
||||
inline uint16_t wire_to_data16(uint8_t *data) {
|
||||
uint16_t i =
|
||||
((uint16_t)data[1]<<0) |
|
||||
((uint16_t)data[0]<<8);
|
||||
return i;
|
||||
}
|
||||
|
||||
inline void data64_to_wire(uint64_t i, uint8_t *data) {
|
||||
data[0] = (i >> 56) & 0xFF;
|
||||
data[1] = (i >> 48) & 0xFF;
|
||||
data[2] = (i >> 40) & 0xFF;
|
||||
data[3] = (i >> 32) & 0xFF;
|
||||
data[4] = (i >> 24) & 0xFF;
|
||||
data[5] = (i >> 16) & 0xFF;
|
||||
data[6] = (i >> 8) & 0xFF;
|
||||
data[7] = i & 0xFF;
|
||||
}
|
||||
|
||||
inline void data32_to_wire(uint32_t i, uint8_t *data) {
|
||||
data[0] = (i >> 24) & 0xFF;
|
||||
data[1] = (i >> 16) & 0xFF;
|
||||
data[2] = (i >> 8) & 0xFF;
|
||||
data[3] = i & 0xFF;
|
||||
}
|
||||
|
||||
inline void data16_to_wire(uint16_t i, uint8_t *data) {
|
||||
data[0] = (i >> 8) & 0xFF;
|
||||
data[1] = i & 0xFF;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user