2 Copyright (C) 2012 jaseg <s@jaseg.de>
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 version 3 as published by the Free Software Foundation.
11 void ${init_function()} (void){
12 % if device["pwm"].get(member["port"]+str(member["pin"])):
13 ${device["pwm"].get(member["port"]+str(member["pin"]))[1]}
15 % if device["adc"].get(member["port"]+str(member["pin"])):
16 ADMUX |= REFS0 | ADLAR;
17 ADCSRA |= ADEN | device["adc"]["prescaler_bits"];
21 //${modulevar("state", None, "B", callbacks=(True, True))}
22 void callback_set_${modulevar("state")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
23 PORT${member["port"]} &= ~(1<<${member["pin"]});
25 PORT${member["port"]} |= (1<<${member["pin"]});
30 void callback_get_${modulevar("state")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
33 uart_putc(!!(PIN${member["port"]} & (1<<${member["pin"]})));
36 //${modulevar("direction", None, "B", callbacks=(True, True))}
37 void callback_set_${modulevar("direction")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
38 DDR${member["port"]} &= ~(1<<${member["pin"]});
40 DDR${member["port"]} |= (1<<${member["pin"]});
45 void callback_get_${modulevar("direction")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
48 uart_putc(!!(DDR${member["port"]} & (1<<${member["pin"]})));
51 % if device["adc"].get(member["port"]+str(member["pin"])):
52 //${modulevar("analog", None, "B", callbacks=(True, True))}
53 void callback_get_${modulevar("analog")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
56 #if defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__)
58 ADMUX |= ${device["adc"].get(member["port"]+str(member["pin"]))};
59 #elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__)
62 ADMUX |= ${device["adc"].get(member["port"]+str(member["pin"]))}&0x1F;
63 ADCSRB |= ${device["adc"].get(member["port"]+str(member["pin"]))}&0x20>>2;
65 while(!(ADCSRA&(1<<ADIF))); //wait for conversion to finish
67 ADCSRA |= (1<<ADIF); //reset the interrupt flag
71 % if device["pwm"].get(member["port"]+str(member["pin"])):
72 //${modulevar("pwm", None, "B", callbacks=(True, True))}
73 void callback_set_${modulevar("pwm")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
74 OCR${device["pwm"].get(member["port"]+str(member["pin"]))[0]} = args[0];
79 void callback_get_${modulevar("pwm")} (uint16_t payload_offset, uint16_t argsize, uint8_t* args){
82 putc_escaped(OCR${device["pwm"].get(member["port"]+str(member["pin"]))[0]});