Skip to content

Commit

Permalink
Added support for ATmega644PA and ATmega1284P
Browse files Browse the repository at this point in the history
  • Loading branch information
alexreinert committed Jun 2, 2018
1 parent 5a65319 commit 5d92d90
Show file tree
Hide file tree
Showing 11 changed files with 446 additions and 5 deletions.
4 changes: 4 additions & 0 deletions Activity.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@ class Idle {

template <class Hal>
static void powerSave (__attribute__((unused)) Hal& hal) {
#if defined __AVR_ATmega644P__ || defined (__AVR_ATmega1284P__)
LowPower.idle(SLEEP_FOREVER,ADC_OFF,ENABLETIMER2==false?TIMER2_OFF:TIMER2_ON,TIMER1_ON,TIMER0_OFF,SPI_ON,USART1_OFF,USART0_ON,TWI_OFF);
#else
LowPower.idle(SLEEP_FOREVER,ADC_OFF,ENABLETIMER2==false?TIMER2_OFF:TIMER2_ON,TIMER1_ON,TIMER0_OFF,SPI_ON,USART0_ON,TWI_OFF);
#endif
}

};
Expand Down
6 changes: 5 additions & 1 deletion BatterySensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

#include <avr/power.h>

#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)
#define ADMUX_VCCWRT1V1 (_BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1))
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
#define ADMUX_VCCWRT1V1 (_BV(MUX5) | _BV(MUX0))
Expand Down Expand Up @@ -45,7 +45,11 @@ class NoBattery {
#define ADMUX_REF_RESV ((1 << REFS1)|(0 << REFS0))
#define ADMUX_REF_VBG ((1 << REFS1)|(1 << REFS0))

#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)
#define ADMUX_ADC_VBG ((1 << MUX4)|(1 << MUX3)|(1 << MUX2)|(1 << MUX1)|(0 << MUX0))
#else
#define ADMUX_ADC_VBG ((1 << MUX3)|(1 << MUX2)|(1 << MUX1)|(0 << MUX0))
#endif

#endif

Expand Down
7 changes: 7 additions & 0 deletions Device.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,17 @@
#include "Led.h"
#include "Activity.h"

#if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__)
#define OTA_CONFIG_START 0xffe0 // start address of 16 byte config data in bootloader
#define OTA_MODEL_START 0xfff0 // start address of 2 byte model id in bootloader
#define OTA_SERIAL_START 0xfff2 // start address of 10 byte serial number in bootloader
#define OTA_HMID_START 0xfffc // start address of 3 byte device id in bootloader
#else
#define OTA_CONFIG_START 0x7fe0 // start address of 16 byte config data in bootloader
#define OTA_MODEL_START 0x7ff0 // start address of 2 byte model id in bootloader
#define OTA_SERIAL_START 0x7ff2 // start address of 10 byte serial number in bootloader
#define OTA_HMID_START 0x7ffc // start address of 3 byte device id in bootloader
#endif

namespace as {

Expand Down
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@ C++ implementation of the AskSin protocol
- easy configuration of the device channels by using templates
- direct eeprom access for the channel data
- AES signature support
- for ATMega328, [ATMega32](https://github.com/eaconner/ATmega32-Arduino), [STM32F1](http:https://dan.drown.org/stm32duino/package_STM32duino_index.json)
- Supported MCU:
- ATMega328
- [ATMega32](https://github.com/eaconner/ATmega32-Arduino)
- [ATMega644](https://github.com/MCUdude/MightyCore) (Bobuino Pinout is highly suggested)
- [ATMega1284](https://github.com/MCUdude/MightyCore) (No OTA Bootloader support, yet)
- [STM32F1](http:https://dan.drown.org/stm32duino/package_STM32duino_index.json)

## Required additional Arduino libraries:
- [EnableInterrupt](https://github.com/GreyGnome/EnableInterrupt)
- For ATMega644 and ATMega1284 the PR #49 needs to be included
- [Low-Power](https://github.com/rocketscream/Low-Power.git)

- For ATMega644 and ATMega1284 the PR #57 needs to be included

## Optional required Sensor Libraries
- [Sensor Base Library](https://github.com/adafruit/Adafruit_Sensor)
Expand Down
237 changes: 237 additions & 0 deletions bootloader/avr/Bootloader-OTA-atmega644.hex
Original file line number Diff line number Diff line change
@@ -0,0 +1,237 @@
:10F000000C941E790C94EF7A0C9430790C9430792E
:10F010000C9430790C9430790C9430790C943079CC
:10F020000C9430790C9430790C9430790C943079BC
:10F030000C9430790C9430790C9430790C943079AC
:10F040000C9430790C9430790C941C7B0C943079AE
:10F050000C94947D0C94C27D0C9430790C9430798E
:10F060000C9430790C9430790C9430790C9430797C
:10F070002E007061676553697A6520616E64206255
:10F080006C6F636B506F73206469666665720A000B
:10F09000546F206D616E79206461746120666F72B7
:10F0A000207061676553697A650A00626C6F636BF3
:10F0B0004C656E2064696666657220706167655391
:10F0C000697A650A0057726F6E67204D73674964ED
:10F0D000210A0052657472616E736D69742C20721E
:10F0E00065666C617368210A00476F74206F7468ED
:10F0F0006572206D7367547970650A0052656365A7
:10F10000697665206669726D776172650A00476F7E
:10F1100074204342206D73670A005761697420664A
:10F120006F72204342206D73670A00545820626F4B
:10F130006F746C6F616465722073657175656E6361
:10F14000650A0054696D656F75740A0053746172C5
:10F1500074204170700A00426F6F746C6F61646557
:10F16000722073656C66557064617465210A004392
:10F170005243206661696C2C205265626F6F740A7D
:10F1800000435243204F4B0A00706167654164643D
:10F1900072206578636565647320666C61736820AE
:10F1A0006D656D6F72790A005377697463682074B6
:10F1B0006F203130306B206D6F64650A000A417337
:10F1C0006B53696E204F544120426F6F746C6F61B6
:10F1D0006465722056302E372E300A0A0053776944
:10F1E00074636820746F2031306B206D6F64650A22
:10F1F000000B08105B11F81547191D1A1C1BC71CC2
:10F20000001DB221B623EA002E012E0206030D04D2
:10F21000E905CA063D070C0B060D210E650F5010BF
:10F22000C811931203153416011730181819161B3C
:10F23000432156250026112D353EC30011241FBE43
:10F24000CFEFD0E1DEBFCDBF21E0A0E0B1E001C053
:10F250001D92A13DB207E1F70E944E7E0C94F47E10
:10F260000C94007898E09B01660F771F87FD616022
:10F2700037FF04C021E2622720E17227880F9150F6
:10F2800091F7CB0108959FB7F89485B7282F216097
:10F2900025BF826085BF9FBF85B5826085BD16BCD6
:10F2A000EEE6F0E080818160808381E08DBB82E0CA
:10F2B0008093690008950F931F93CF93DF9361307C
:10F2C0002FEE72078105910540F089E891EFDF91FB
:10F2D000CF911F910F910C943F7EF894F999FECF36
:10F2E0008B0123E0FB0120935700E89507B600FC53
:10F2F000FDCF9A013395DA01C1E0A8014A1B5B0BEF
:10F30000DC91FA01EA0FFB1F11961C911197012F56
:10F3100010E0102F00270D0F111D0801C09357009A
:10F32000E89511241296A217B30751F725E0FB01C7
:10F3300020935700E89507B600FCFDCF81E180934C
:10F340005700E8957894DF91CF911F910F91089520
:10F35000CF93DF93809102018823B1F1F89410924A
:10F36000020140919501409359019091960186E7E1
:10F37000892780935A01E6E9F1E0CBE5D1E0A1E5E8
:10F38000B1E022E080E0241790F491919452308112
:10F390009327999339EF320F333030F43C9181E069
:10F3A000931380E0931303C02F5F1196ECCF30E0EE
:10F3B000F901E75AFE4FD901AB56BE4F2C919091FF
:10F3C0005B01922790837894DF91CF910895DC01BF
:10F3D00011968C91119796E7982711969C93119707
:10F3E00012962C91129782E03C91E82FF0E0EA0F00
:10F3F000FB1F831730F494523081932790838F5FE3
:10F40000F3CF808182278083F89460E0CD010E9451
:10F41000A97C78940895CF93DF93CDB7DEB72B976F
:10F420000FB6F894DEBF0FBECDBFFC018AE0898322
:10F4300081818A8380E88B8382E08C83A6E5B1E0BA
:10F440008C918D8311968C9111978E8312968C914D
:10F450008F83848188878581898786818A876B8766
:10F46000CE0101960E94E7792B960FB6F894DEBF85
:10F470000FBECDBFDF91CF910895CF93DF93C0E052
:10F48000D0E06FEF7FEFFE0184910E943279BC01E2
:10F490002196CE3FFFEEDF07B1F780E00E94327980
:10F4A000BC0180E00E943279AC01FE0125913491CB
:10F4B00081E04217530709F080E0DF91CF91089572
:10F4C000611103C0FC01228125FD0C940B7A089583
:10F4D000CF93DF93CDB7DEB765970FB6F894DEBF55
:10F4E0000FBECDBF8BE291EF0E943F7E84E1898306
:10F4F0001A821B8280E18C83E6E5F1E080818D83B6
:10F5000081818E8382818F83188619861A861B8655
:10F51000E8E4F1E080818C8781818D8782818E870C
:10F5200083818F878481888B8581898B86818A8B73
:10F5300087818B8B80858C8B81858D8BCE0101960D
:10F540000E94E77965960FB6F894DEBF0FBECDBF77
:10F55000DF91CF910895FC0190E0941701F1289A72
:10F5600020E030E02E173F0749F0AFECB7E01197ED
:10F57000F1F700C000002F5F3F4FF4CF289820E044
:10F5800030E02617370749F0AFECB7E01197F1F7F5
:10F5900000C000002F5F3F4FF4CF9F5FDECF089584
:10F5A0000E943D7A882321F081E891EF0C943F7E00
:10F5B00041E061E070E080ED97E00E94AB7A8FE679
:10F5C00091EF0E943F7EA8959EE088E10FB6F894E7
:10F5D000A895809360000FBE90936000FFCF1F92AC
:10F5E0000F920FB60F9211242F933F934F935F9377
:10F5F0006F937F938F939F93AF93BF93EF93FF93FB
:10F60000F89485E991E00E94DD7C882319F081E07F
:10F61000809302017894FF91EF91BF91AF919F91F8
:10F620008F917F916F915F914F913F912F910F90AB
:10F630000FBE0F901F9018951F920F920FB60F924A
:10F6400011248F939F9316BC80910001909101012A
:10F65000019690930101809300019F918F910F90EB
:10F660000FBE0F901F901895ECEFFFEE85919491CF
:10F670008131974499F487E591EF0E943F7E8FEFA7
:10F6800099EF0197F1F700C000004AE062E370E0F3
:10F6900082E390E00E94AB7A0E94807F8CE491EF3D
:10F6A0000E943F7EEFEFF9EF3197F1F700C00000C5
:10F6B0005D982898F89485B7982F916095BF8D7FB5
:10F6C00085BFE0E0F0E00994809100019091010194
:10F6D0008133954740F083E491EF0E943F7E0E9482
:10F6E000D07A0C94347B08958AE191EF0E943F7E9A
:10F6F00010920101109200010E94647B0E94A8797F
:10F700008823D1F380915C018B3C49F48EE091EF2A
:10F710000E943F7E60E089E591E00C94607A60E8A9
:10F7200089E591E00E940B7AE7CFCF93DF93CDB7C5
:10F73000DEB7DA950FB6F894DEBF0FBECDBFE0900E
:10F740005A0110920101109200018CEF90EF0E947B
:10F750003F7E812C912C540100E010E0F12C0E949E
:10F76000647B0E94A8798823D1F380915C018A3C54
:10F7700019F089EE90EF32C080915A01E81210C062
:10F78000F1100EC081149104A104B10449F021E0EC
:10F79000821A9108A108B10883ED90EF0E943F7E84
:10F7A00080915A018E1550F485E78E1520F48FE76D
:10F7B0008E0D843718F485EC90EF4AC0F1101EC00E
:10F7C0008091630190E0982F882720916401820F37
:10F7D000911D8115914029F08BEA90EF0E943F7EA8
:10F7E000BECF0091590110E00B501109A80165E648
:10F7F00071E0CE0101960E94EB7E1DC0409159013F
:10F8000050E0495051096A01C00ED11E81E0C8166E
:10F81000D80618F080E990EF1BC063E671E081E044
:10F8200090E08C0F9D1F800F911F0E94EB7E21E0C6
:10F830008601F21294CF80915B01803219F0FF248F
:10F84000F3948DCF011581E0180729F082E790EF3E
:10F850000E943F7E83CF80E790EF0E943F7E289AF0
:10F860009A2D892D782D6627AE014F5F5F4F0E943C
:10F870005B792FEF821A920AA20AB20A1092010152
:10F88000109200012898E0905A0160E089E591E02B
:10F890000E94607A63CF8EBD0DB407FEFDCF8EB59A
:10F8A00008952C982E99FECF0E944B7C2C9A089597
:10F8B000FF920F931F93CF93DF93F62E072F142FF2
:10F8C0002C982E99FECF80640E944B7CCF2DD02F98
:10F8D000CE01810F911D8C01C017D10721F08991B4
:10F8E0000E944B7CF9CF2C9ADF91CF911F910F9101
:10F8F000FF900895FF920F931F93CF93DF93F82EFD
:10F90000092F142F2C982E99FECF862F806C0E94E1
:10F910004B7CCF2DD02FCE01810F911D8C01C017B4
:10F92000D10729F080E00E944B7C8993F8CF2C9A74
:10F93000DF91CF911F910F91FF9008952C982E99F0
:10F94000FECF862B0E944B7C80E00E944B7C2C9A41
:10F950000895CF93DF93EC0186E30E94517C8AE304
:10F960000E94517C8BE30E94517C8FEC97E00197C1
:10F97000F1F700C0000048814F5FBE018FE30E9495
:10F98000587C8AE30E94517C85E30E94517CC8EC3C
:10F9900060EC85E30E949E7C8D3061F060EC85E335
:10F9A0000E949E7C833131F49AE19A95F1F700C070
:10F9B000C15071F7DF91CF910895CF93DF93EC01A0
:10F9C00060EC8BE30E949E7C982F9F7749F087FD27
:10F9D00007C060E88FE30E949E7C88838D3310F01F
:10F9E000188217C0482F6FE3CE0101960E947A7CDF
:10F9F00060E88FE30E949E7C60E88FE30E949E7C1B
:10FA0000982F9F7790935501881F8827881F809390
:10FA100053018AE30E94517C86E30E94517C84E377
:10FA20000E94517C8CE30E94517C8881DF91CF91B0
:10FA30000895CF93C62F2C982E99FECF0E944B7C11
:10FA40008C2F0E944B7C2C9ACF9108950F931F937B
:10FA5000CF93DF93182FF894249A259A2698279A03
:10FA600052982C9A2F9A2D9880E58CBD2C9A80E57F
:10FA70008A95F1F72C9890E59A95F1F72C9AE8E79A
:10FA8000EA95F1F780E30E94517C87EC90E00197C2
:10FA9000F1F700C00000C7E0D2EFFE01319664919B
:10FAA000FE0184910E94197D2296F2EFCB33DF078D
:10FAB000A1F711110AC083E30E94517C8FE39FE1FB
:10FAC0000197F1F700C0000010C0C1EFD1EF07E0CF
:10FAD00012EFFE0131966491FE0184910E94197D1E
:10FAE00022960C171D07A9F7E6CF84E30E94517CEC
:10FAF00060EC85E30E949E7C8D30B9F760EC8EE36C
:10FB00000E94197D84E30E94517C8CE30E94517C09
:10FB10008FE697E10197F1F700C000007894DF913C
:10FB2000CF911F910F9108951F920F920FB60F92D0
:10FB300011242F938F939F93EF93FF938091C00095
:10FB40009091C6008871E0910501EF5FEF712091FF
:10FB50000401E21739F0E0930501F0E0E85FFE4FA1
:10FB6000908301C082E090910301892B809303016F
:10FB7000FF91EF919F918F912F910F900FBE0F905A
:10FB80001F9018951F920F920FB60F9211248F930A
:10FB90009F93EF93FF93909107018091060198172F
:10FBA00069F0E0910601EF5FEF71E0930601F0E08C
:10FBB000E85DFE4F80818093C60005C08091C10042
:10FBC0008F7D8093C100FF91EF919F918F910F9056
:10FBD0000FBE0F901F90189510920701109206010A
:10FBE000109205011092040197FF04C022E02093B7
:10FBF000C0009F779093C5008093C40088E98093EC
:10FC0000C10086E08093C200089590910501809123
:10FC10000401981781F0E0910401EF5FEF71E09328
:10FC20000401F0E0E85FFE4F8081909103011092A3
:10FC3000030190E0089580E091E00895909107011C
:10FC40009F5F9F71209106019217E1F3E92FF0E089
:10FC5000E85DFE4F8083909307018091C100806230
:10FC60008093C1000895CF93DF93EC01899188239D
:10FC700019F00E941E7EFACFDF91CF910895CF93A5
:10FC8000DF93FC018491EF012196882321F00E94EB
:10FC90001E7EFE01F7CFDF91CF910895C4B7C3FB5D
:10FCA000CC27C0F914BEA8950FB6F894A8958091FA
:10FCB0006000886180936000109260000FBE5598CC
:10FCC0005D9A2AE12A95F1F700C0209A4D9B33C036
:10FCD000C11131C040E06CE271E08CE291E00E9421
:10FCE000AB7A8FEF94E32CE0815090402040E1F715
:10FCF00000C0000047E066E970E086E990E00E94FD
:10FD0000AB7A8FEF94E32CE0815090402040E1F7F4
:10FD100000C0000040E06CE271E08CE291E00E94E3
:10FD2000AB7A8FEF99E628E1815090402040E1F7CF
:10FD300000C0000007C041E068EC70E089E190E09D
:10FD40000E94AB7A0E9443798DED91EF0E943F7E35
:10FD500080E00E94267D88E090E00E94EC7D8DEBA3
:10FD600091EF0E943F7E4D9B07C0C11105C00E94CC
:10FD70003D7A81110E94347B41E068EC70E089E1BA
:10FD800090E00E94AB7A43E050E06CEF7FEF86E5B5
:10FD900091E00E94E27E4AE050E062EF7FEF88E46B
:10FDA00091E00E94E27E0E94687A0E94747B88EA59
:10FDB00091EF0E943F7E81E00E94267D0E94747B2D
:10FDC0000E94957BFB01DC0102C005900D92415021
:10FDD0005040D8F70895FB01DC0102C001900D925C
:0CFDE00041505040D8F70895F894FFCF30
:10FF0000F894289A80E090E063E071E0A5E0AC010D
:10FF10005051FA0160935700E89507B600FCFDCFF9
:10FF20009C013395FC01C591D491FC01F0510E0167
:10FF300070935700E895112402968217930791F762
:10FF4000FA01A0935700E89507B600FCFDCFC90160
:10FF500021153F40E1F6E0E0FFEE83E0809357009B
:10FF6000E89507B600FCFDCF81E180935700E89546
:10FF700028989EE088E10FB6F894A89580936000D9
:08FF80000FBE90936000FFCF5B
:02FFF000000A05
:0AFFF200484D527941424344454610
:03FFFC0012345666
:040000030000F00009
:00000001FF
2 changes: 1 addition & 1 deletion bootloader/avr/flash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ if [ ! -f $BOOTLOADER ]; then
fi

# Int. RC 8MHz, Brown-out detection disabled
avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m
avrdude -p m328p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0xFF:m -U lock:w:0xFF:m
avrdude -p m328p -P usb -c usbasp -V -U flash:w:$BOOTLOADER

24 changes: 24 additions & 0 deletions bootloader/avr/flash644.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

BOOTLOADER=$1

AVRDUDE=`which avrdude`

if [ ! -f $AVRDUDE ]; then
echo Error can not find avrdude
exit 5
fi

if [ "$BOOTLOADER" == "" ]; then
echo Usage: flash.sh bootloader.hex
exit 5
fi
if [ ! -f $BOOTLOADER ]; then
echo Error $BOOTLOADER missing
exit 5
fi

# Int. RC 8MHz, Brown-out detection disabled
avrdude -p m644p -P usb -c usbasp -B 10 -U lfuse:w:0xE2:m -U hfuse:w:0xD2:m -U efuse:w:0xFF:m -U lock:w:0xFF:m
avrdude -p m644p -P usb -c usbasp -V -U flash:w:$BOOTLOADER

2 changes: 1 addition & 1 deletion bootloader/avr/makeota.html

Large diffs are not rendered by default.

Loading

0 comments on commit 5d92d90

Please sign in to comment.