Advertisement
Guest User

config_328.h

a guest
Dec 29th, 2020
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 47.16 KB | None | 0 0
  1. /* ************************************************************************
  2.  *
  3.  *   ATmega 328 specific global configuration, setup and settings
  4.  *
  5.  *   (c) 2012-2020 by Markus Reschke
  6.  *   based on code from Markus Frejek and Karl-Heinz Kübbeler
  7.  *
  8.  * ************************************************************************ */
  9.  
  10.  
  11. /* source management */
  12. #define CONFIG_328_H
  13.  
  14.  
  15.  
  16. /* ************************************************************************
  17.  *   display module
  18.  * ************************************************************************ */
  19.  
  20.  
  21. /*
  22.  *  display module / controller
  23.  *
  24.  *  Please uncomment the package matching your LCD/OLED module and adjust
  25.  *  settings. And comment out the default package if not used.
  26.  *
  27.  *  To uncomment, remove the enclosing "#if 0" and "#endif" or put
  28.  *  a "//" in front of both. To comment out, remove the "//" in front
  29.  *  of the "#if 0" and "#endif".
  30.  *
  31.  *  Individual settings can be enabled by removing the leading "//", or
  32.  *  disabled by placing a "//" in front of the setting.
  33.  */
  34.  
  35.  
  36. /*
  37.  *  HD44780
  38.  *  - 4 bit parallel interface
  39.  *  - if you change LCD_DB4/5/6/7 comment out LCD_DB_STD!
  40.  */
  41.  
  42. #if 0
  43. #define LCD_HD44780                     /* display controller HD44780 */
  44. #define LCD_TEXT                        /* character display */
  45. #define LCD_PAR_4                       /* 4 bit parallel interface */
  46. /* control and data lines */
  47. #define LCD_PORT         PORTD          /* port data register */
  48. #define LCD_DDR          DDRD           /* port data direction register */
  49. #define LCD_DB_STD                      /* use standard pins 0-3 for DB4-7 */
  50. #define LCD_DB4          PD0            /* port pin used for DB4 */
  51. #define LCD_DB5          PD1            /* port pin used for DB5 */
  52. #define LCD_DB6          PD2            /* port pin used for DB6 */
  53. #define LCD_DB7          PD3            /* port pin used for DB7 */
  54. #define LCD_RS           PD4            /* port pin used for RS */
  55. #define LCD_EN1          PD5            /* port pin used for E */
  56. /* display settings */
  57. #define LCD_CHAR_X       16             /* characters per line */
  58. #define LCD_CHAR_Y       2              /* number of lines */
  59. /* HD44780 has an internal 5x7 font */
  60. #define FONT_HD44780_INT                /* International font (English) */
  61. //#define FONT_HD44780_WIN1251            /* Cyrillic font (European) */
  62. #endif
  63.  
  64.  
  65.  
  66. /*
  67.  *  HD44780 plus PCF8574 based backpack
  68.  *  - I2C interface using bit-bang I2C
  69.  *  - if you change LCD_DB4/5/6/7 comment out LCD_DB_STD!
  70.  *  - PCF8574T is 0x27, PCF8574AT is 0x3f
  71.  */
  72.  
  73. #if 0
  74. #define LCD_HD44780                     /* display controller HD44780 */
  75. #define LCD_TEXT                        /* character display */
  76. #define LCD_PCF8574                     /* PCF8574 backpack */
  77. #define LCD_I2C_ADDR     0x3f           /* PCF8574's I2C address */
  78. /* control and data lines */
  79. #define LCD_DB_STD                      /* use standard pins 4-7 for DB4-7 */
  80. #define LCD_DB4          PCF8574_P4     /* port pin used for DB4 */
  81. #define LCD_DB5          PCF8574_P5     /* port pin used for DB5 */
  82. #define LCD_DB6          PCF8574_P6     /* port pin used for DB6 */
  83. #define LCD_DB7          PCF8574_P7     /* port pin used for DB7 */
  84. #define LCD_RS           PCF8574_P0     /* port pin used for RS */
  85. #define LCD_RW           PCF8574_P1     /* port pin used for RW */
  86. #define LCD_EN1          PCF8574_P2     /* port pin used for E */
  87. #define LCD_LED          PCF8574_P3     /* port pin used for backlight */
  88. /* display settings */
  89. #define LCD_CHAR_X       16             /* characters per line */
  90. #define LCD_CHAR_Y       2              /* number of lines */
  91. /* HD44780 has an internal 5x7 font */
  92. #define FONT_HD44780_INT                /* International font (English) */
  93. //#define FONT_HD44780_WIN1251             /* Cyrillic font (European) */
  94. /* I2C bus */
  95. #define I2C_BITBANG                     /* bit-bang I2C */
  96. #define I2C_STANDARD_MODE               /* 100kHz bus speed */
  97. #define I2C_PORT         PORTD          /* I2C port data register */
  98. #define I2C_DDR          DDRD           /* I2C port data direction register */
  99. #define I2C_PIN          PIND           /* I2C port input pins register */
  100. #define I2C_SDA          PD0            /* port pin used for SDA */
  101. #define I2C_SCL          PD1            /* port pin used for SCL */
  102. #endif
  103.  
  104.  
  105.  
  106. /*
  107.  *  ILI9163
  108.  *  - 4 wire SPI interface using bit-bang SPI
  109.  */
  110.  
  111. #if 0
  112. #define LCD_ILI9163                     /* display controller ILI9163 */
  113. #define LCD_GRAPHIC                     /* graphic display */
  114. #define LCD_COLOR                       /* color display */
  115. #define LCD_SPI                         /* SPI interface */
  116. /* control and data lines */
  117. #define LCD_PORT         PORTD          /* port data register */
  118. #define LCD_DDR          DDRD           /* port data direction register */
  119. #define LCD_RES          PD4            /* port pin used for /RESX (optional) */
  120. #define LCD_CS           PD5            /* port pin used for /CSX (optional) */
  121. #define LCD_DC           PD3            /* port pin used for D/CX */
  122. #define LCD_SCL          PD2            /* port pin used for SCL */
  123. #define LCD_SDA          PD1            /* port pin used for SDA/SDIO */
  124. /* display settings */
  125. #define LCD_DOTS_X       128            /* number of horizontal dots */
  126. #define LCD_DOTS_Y       128            /* number of vertical dots */
  127. #define LCD_OFFSET_X      32            /* x offset of 32 dots (160-128) */
  128. //#define LCD_FLIP_X                      /* enable horizontal flip */
  129. #define LCD_FLIP_Y                      /* enable vertical flip */
  130. #define LCD_ROTATE                      /* switch X and Y (rotate by 90°) */
  131. #define LCD_BGR                         /* reverse red and blue color channels */
  132. //#define LCD_LATE_ON                     /* turn on LCD after clearing it */
  133. /* font and symbols: horizonally aligned & flipped */
  134. #define FONT_8X8_HF                     /* 8x8 font */
  135. //#define FONT_10X16_HF                   /* 10x16 font */
  136. //#define FONT_8X8_ISO8859_2_HF           /* 8x8 Central European font */
  137. //#define FONT_10X16_ISO8859_2_HF         /* 10x16 Central European font */
  138. //#define FONT_8X16_WIN1251_HF            /* 8x16 cyrillic font */
  139. //#define FONT_8X16ALT_WIN1251_HF         /* 8x16 alternative cyrillic font */
  140. #define SYMBOLS_30X32_HF                /* 30x32 symbols */
  141. /* SPI bus */
  142. #define SPI_BITBANG                     /* bit-bang SPI */
  143. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  144. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  145. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  146. #define SPI_MOSI         LCD_SDA        /* port pin used for MOSI */
  147. #endif
  148.  
  149.  
  150.  
  151. /*
  152.  *  ILI9342
  153.  *  - SPI interface using bit-bang SPI
  154.  */
  155.  
  156. #if 0
  157. #define LCD_ILI9341                     /* display controller ILI9341/ILI9342 */
  158. #define LCD_GRAPHIC                     /* graphic display */
  159. #define LCD_COLOR                       /* color display */
  160. #define LCD_SPI                         /* SPI interface */
  161. /* control and data lines */
  162. #define LCD_PORT         PORTD          /* port data register */
  163. #define LCD_DDR          DDRD           /* port data direction register */
  164. #define LCD_RES          PD4            /* port pin used for /RES (optional) */
  165. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  166. #define LCD_DC           PD3            /* port pin used for D/C */
  167. #define LCD_SCK          PD2            /* port pin used for SCK */
  168. #define LCD_SDI          PD1            /* port pin used for SDI (data input) */
  169. //#define LCD_SDO          PD0            /* port pin used for SDO (data output) */
  170. /* display settings */
  171. #define LCD_DOTS_X       320            /* number of horizontal dots */
  172. #define LCD_DOTS_Y       240            /* number of vertical dots */
  173. //#define LCD_FLIP_X                      /* enable horizontal flip */
  174. //#define LCD_FLIP_Y                      /* enable vertical flip */
  175. //#define LCD_ROTATE                      /* switch X and Y (rotate by 90°) */
  176. //#define LCD_BGR                         /* reverse red and blue color channels */
  177. //#define LCD_EXT_CMD_OFF                 /* extended commands disabled */
  178. /* font and symbols: horizontally aligned & flipped */
  179. #define FONT_16X26_HF                   /* 16x26 font */
  180. //#define FONT_16X26_ISO8859_2_HF         /* 16x26 Central European font */
  181. //#define FONT_16X26_WIN1251_HF           /* 16x26 cyrillic font */
  182. #define SYMBOLS_32X32_HF                /* 32x32 symbols */
  183. /* SPI bus */
  184. #define SPI_BITBANG                     /* bit-bang SPI */
  185. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  186. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  187. #define SPI_SCK          LCD_SCK        /* port pin used for SCK */
  188. #define SPI_MOSI         LCD_SDI        /* port pin used for MOSI */
  189. #endif
  190.  
  191.  
  192.  
  193. /*
  194.  *  PCD8544
  195.  *  - SPI interface using bit-bang SPI
  196.  *  - for a 180° rotated display (LCD_ROT180)
  197.  *    - comment out "_VF" font and "_VFP" symbols
  198.  *    - uncomment "_V_F" font and "_VP_F" symbols
  199.  */
  200.  
  201. #if 0
  202. #define LCD_PCD8544                     /* display controller PCD8544 */
  203. #define LCD_GRAPHIC                     /* graphic display */
  204. #define LCD_SPI                         /* SPI interface */
  205. /* control and data lines */
  206. #define LCD_PORT         PORTD          /* port data register */
  207. #define LCD_DDR          DDRD           /* port data direction register */
  208. #define LCD_RES          PD4            /* port pin used for /RES (optional) */
  209. #define LCD_SCE          PD5            /* port pin used for /SCE (optional) */
  210. #define LCD_DC           PD3            /* port pin used for D/C */
  211. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  212. #define LCD_SDIN         PD1            /* port pin used for SDIN (data input) */
  213. /* display settings */
  214. #define LCD_DOTS_X       84             /* number of horizontal dots */
  215. #define LCD_DOTS_Y       48             /* number of vertical dots */
  216. #define LCD_CONTRAST     66             /* default contrast (1-127) */
  217. /* font and symbols: vertically aligned & flipped */
  218. #define FONT_6X8_VF                     /* 6x8 font */
  219. //#define FONT_6X8_ISO8859_2_VF         /* 6x8 Central Euopean font */
  220. #define SYMBOLS_24X24_VFP               /* 24x24 symbols, vertically aligned & flipped */
  221. //#define LCD_ROT180                      /* rotate output by 180° (not supported yet) */
  222. /* font and symbols: vertically aligned, bank-wise grouping, hor. flipped */
  223. //#define FONT_6X8_V_F                    /* 6x8 font */
  224. //#define FONT_6X8_ISO8859_2_V_F          /* 6x8 Central Euopean font */
  225. //#define SYMBOLS_24X24_VP_F              /* 24x24 symbols */
  226. /* SPI bus */
  227. #define SPI_BITBANG                     /* bit-bang SPI */
  228. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  229. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  230. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  231. #define SPI_MOSI         LCD_SDIN       /* port pin used for MOSI */
  232. #endif
  233.  
  234.  
  235.  
  236. /*
  237.  *  PCF8814
  238.  *  - 3 wire SPI interface using bit-bang SPI
  239.  */
  240.  
  241. #if 0
  242. #define LCD_PCF8814                     /* display controller PCF8814 */
  243. #define LCD_GRAPHIC                     /* graphic display */
  244. #define LCD_SPI                         /* SPI interface */
  245. /* control and data lines */
  246. #define LCD_PORT         PORTD          /* port data register */
  247. #define LCD_DDR          DDRD           /* port data direction register */
  248. #define LCD_RESET        PD4            /* port pin used for /RES */
  249. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  250. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  251. #define LCD_SDIN         PD1            /* port pin used for SDIN (data input) */
  252. /* display settings */
  253. #define LCD_DOTS_X       96             /* number of horizontal dots */
  254. #define LCD_DOTS_Y       65             /* number of vertical dots */
  255. //#define LCD_FLIP_Y                      /* enable vertical flip */
  256. #define LCD_CONTRAST     5              /* default contrast (0-255) */
  257. /* font and symbols: vertically aligned & flipped, page-wise grouping */
  258. #define FONT_6X8_VF                     /* 6x8 font */
  259. //#define FONT_6X8_ISO8859_2_VF             /* 6x8 Central European font */
  260. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  261. /* SPI bus */
  262. #define SPI_BITBANG                     /* bit-bang SPI */
  263. #define SPI_9                           /* support 9 bit frames */
  264. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  265. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  266. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  267. #define SPI_MOSI         LCD_SDIN       /* port pin used for MOSI */
  268. #endif
  269.  
  270.  
  271.  
  272. /*
  273.  *  SH1106
  274.  *  - 4 wire SPI interface using bit-bang SPI
  275.  *  - untested
  276.  */
  277.  
  278. #if 0
  279. #define LCD_SH1106                      /* display controller SH1106 */
  280. #define LCD_GRAPHIC                     /* graphic display */
  281. #define LCD_SPI                         /* SPI interface */
  282. /* control and data lines */
  283. #define LCD_PORT         PORTD          /* port data register */
  284. #define LCD_DDR          DDRD           /* port data direction register */
  285. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  286. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  287. #define LCD_A0           PD3            /* port pin used for A0 */
  288. #define LCD_SCL          PD2            /* port pin used for SCL */
  289. #define LCD_SI           PD1            /* port pin used for SI (data input) */
  290. /* display settings */
  291. #define LCD_DOTS_X       128            /* number of horizontal dots */
  292. #define LCD_DOTS_Y       64             /* number of vertical dots */
  293. #define LCD_OFFSET_X     2              /* enable x offset of 2 or 4 dots */
  294. #define LCD_FLIP_X                      /* enable horizontal flip */
  295. #define LCD_FLIP_Y                      /* enable vertical flip */
  296. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  297. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  298. //#define FONT_6X8_VF                      /* 6x8 font */
  299. #define FONT_8X8_VF                     /* 8x8 font */
  300. //#define FONT_8X16_VFP                   /* 8x16 font */
  301. //#define FONT_6X8_ISO8859_2_VF           /* 6x8 Central European font */
  302. //#define FONT_8X8_ISO8859_2_VF           /* 8x8 Central European font */
  303. //#define FONT_8X12T_ISO8859_2_VFP        /* thin 8x12 Central European font */
  304. //#define FONT_8X16_ISO8859_2_VFP         /* 8x16 Central European font */
  305. //#define FONT_8X8_WIN1251_VF             /* 8x8 cyrillic font */
  306. //#define FONT_8X8ALT_WIN1251_VF          /* 8x8 alternative cyrillic font */
  307. //#define FONT_8X8T_WIN1251_VF            /* thin 8x8 cyrillic font */
  308. //#define FONT_8X12T_WIN1251_VFP          /* thin 8x12 cyrillic font */
  309. //#define FONT_8X16_WIN1251_VFP           /* 8x16 cyrillic font */
  310. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  311. /* SPI bus */
  312. #define SPI_BITBANG                     /* bit-bang SPI */
  313. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  314. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  315. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  316. #define SPI_MOSI         LCD_SI         /* port pin used for MOSI */
  317. #endif
  318.  
  319.  
  320.  
  321. /*
  322.  *  SH1106
  323.  *  - 3 wire SPI interface using bit-bang SPI
  324.  *  - untested
  325.  */
  326.  
  327. #if 0
  328. #define LCD_SH1106                      /* display controller SH1106 */
  329. #define LCD_GRAPHIC                     /* graphic display */
  330. #define LCD_SPI                         /* SPI interface */
  331. /* control and data lines */
  332. #define LCD_PORT         PORTD          /* port data register */
  333. #define LCD_DDR          DDRD           /* port data direction register */
  334. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  335. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  336. #define LCD_SCL          PD2            /* port pin used for SCL */
  337. #define LCD_SI           PD1            /* port pin used for SI (data input) */
  338. /* display settings */
  339. #define LCD_DOTS_X       128            /* number of horizontal dots */
  340. #define LCD_DOTS_Y       64             /* number of vertical dots */
  341. #define LCD_OFFSET_X     2              /* enable x offset of 2 or 4 dots */
  342. #define LCD_FLIP_X                      /* enable horizontal flip */
  343. #define LCD_FLIP_Y                      /* enable vertical flip */
  344. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  345. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  346. #define FONT_8X8_VF                     /* 8x8 font */
  347. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  348. /* SPI bus */
  349. #define SPI_BITBANG                     /* bit-bang SPI */
  350. #define SPI_9                           /* support 9 bit frames */
  351. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  352. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  353. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  354. #define SPI_MOSI         LCD_SI         /* port pin used for MOSI */
  355. #endif
  356.  
  357.  
  358.  
  359. /*
  360.  *  SH1106
  361.  *  - I2C interface using bit-bang I2C
  362.  */
  363.  
  364. #if 0
  365. #define LCD_SH1106                      /* display controller SH1106 */
  366. #define LCD_GRAPHIC                     /* graphic display */
  367. #define LCD_I2C                         /* I2C interface */
  368. #define LCD_I2C_ADDR     0x3c           /* SH1106's I2C address */
  369. /* control lines */
  370. #define LCD_PORT         PORTD          /* port data register */
  371. #define LCD_DDR          DDRD           /* port data direction register */
  372. //#define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  373. /* display settings */
  374. #define LCD_DOTS_X       128            /* number of horizontal dots */
  375. #define LCD_DOTS_Y       64             /* number of vertical dots */
  376. #define LCD_OFFSET_X     2              /* enable x offset of 2 or 4 dots */
  377. #define LCD_FLIP_X                      /* enable horizontal flip */
  378. #define LCD_FLIP_Y                      /* enable vertical flip */
  379. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  380. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  381. #define FONT_8X8_VF                     /* 8x8 font */
  382. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  383. /* I2C bus */
  384. #define I2C_BITBANG                     /* bit-bang I2C */
  385. #define I2C_FAST_MODE                   /* 400kHz bus speed */
  386. #define I2C_PORT         PORTD          /* I2C port data register */
  387. #define I2C_DDR          DDRD           /* I2C port data direction register */
  388. #define I2C_PIN          PIND           /* I2C port input pins register */
  389. #define I2C_SDA          PD0            /* port pin used for SDA */
  390. #define I2C_SCL          PD1            /* port pin used for SCL */
  391. #endif
  392.  
  393.  
  394.  
  395. /*
  396.  *  SSD1306
  397.  *  - 4 wire SPI interface using bit-bang SPI
  398.  */
  399.  
  400. #if 0
  401. #define LCD_SSD1306                     /* display controller SSD1306 */
  402. #define LCD_GRAPHIC                     /* graphic display */
  403. #define LCD_SPI                         /* SPI interface */
  404. /* control and data lines */
  405. #define LCD_PORT         PORTD          /* port data register */
  406. #define LCD_DDR          DDRD           /* port data direction register */
  407. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  408. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  409. #define LCD_DC           PD3            /* port pin used for D/C */
  410. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  411. #define LCD_SDIN         PD1            /* port pin used for SDIN (data input) */
  412. /* display settings */
  413. #define LCD_DOTS_X       128            /* number of horizontal dots */
  414. #define LCD_DOTS_Y       64             /* number of vertical dots */
  415. #define LCD_FLIP_X                      /* enable horizontal flip */
  416. #define LCD_FLIP_Y                      /* enable vertical flip */
  417. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  418. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  419. //#define FONT_6X8_VF                      /* 6x8 font */
  420. #define FONT_8X8_VF                     /* 8x8 font */
  421. //#define FONT_8X16_VFP                   /* 8x16 font */
  422. //#define FONT_6X8_ISO8859_2_VF           /* 6x8 Central European font */
  423. //#define FONT_8X8_ISO8859_2_VF           /* 8x8 Central European font */
  424. //#define FONT_8X12T_ISO8859_2_VFP        /* thin 8x12 Central European font */
  425. //#define FONT_8X16_ISO8859_2_VFP         /* 8x16 Central European font */
  426. //#define FONT_8X8_WIN1251_VF             /* 8x8 cyrillic font */
  427. //#define FONT_8X8ALT_WIN1251_VF          /* 8x8 alternative cyrillic font */
  428. //#define FONT_8X8T_WIN1251_VF            /* thin 8x8 cyrillic font */
  429. //#define FONT_8X12T_WIN1251_VFP          /* thin 8x12 cyrillic font */
  430. //#define FONT_8X16_WIN1251_VFP           /* 8x16 cyrillic font */
  431. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  432. /* SPI bus */
  433. #define SPI_BITBANG                     /* bit-bang SPI */
  434. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  435. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  436. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  437. #define SPI_MOSI         LCD_SDIN       /* port pin used for MOSI */
  438. #endif
  439.  
  440.  
  441.  
  442. /*
  443.  *  SSD1306
  444.  *  - 3 wire SPI interface using bit-bang SPI
  445.  */
  446.  
  447. #if 0
  448. #define LCD_SSD1306                     /* display controller SSD1306 */
  449. #define LCD_GRAPHIC                     /* graphic display */
  450. #define LCD_SPI                         /* SPI interface */
  451. /* control and data lines */
  452. #define LCD_PORT         PORTD          /* port data register */
  453. #define LCD_DDR          DDRD           /* port data direction register */
  454. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  455. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  456. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  457. #define LCD_SDIN         PD1            /* port pin used for SDIN (data input) */
  458. /* display settings */
  459. #define LCD_DOTS_X       128            /* number of horizontal dots */
  460. #define LCD_DOTS_Y       64             /* number of vertical dots */
  461. #define LCD_FLIP_X                      /* enable horizontal flip */
  462. #define LCD_FLIP_Y                      /* enable vertical flip */
  463. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  464. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  465. #define FONT_8X8_VF                     /* 8x8 font */
  466. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  467. /* SPI bus */
  468. #define SPI_BITBANG                     /* bit-bang SPI */
  469. #define SPI_9                           /* support 9 bit frames */
  470. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  471. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  472. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  473. #define SPI_MOSI         LCD_SDIN       /* port pin used for MOSI */
  474. #endif
  475.  
  476.  
  477.  
  478. /*
  479.  *  SSD1306
  480.  *  - I2C interface using bit-bang I2C
  481.  */
  482.  
  483. #if 0
  484. #define LCD_SSD1306                     /* display controller SSD1306 */
  485. #define LCD_GRAPHIC                     /* graphic display */
  486. #define LCD_I2C                         /* I2C interface */
  487. #define LCD_I2C_ADDR     0x3c           /* SSD1306's I2C address */
  488. /* control lines */
  489. #define LCD_PORT         PORTD          /* port data register */
  490. #define LCD_DDR          DDRD           /* port data direction register */
  491. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  492. /* display settings */
  493. #define LCD_DOTS_X       128            /* number of horizontal dots */
  494. #define LCD_DOTS_Y       64             /* number of vertical dots */
  495. #define LCD_FLIP_X                      /* enable horizontal flip */
  496. #define LCD_FLIP_Y                      /* enable vertical flip */
  497. #define LCD_CONTRAST     127            /* default contrast (0-255) */
  498. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  499. #define FONT_8X8_VF                     /* 8x8 font */
  500. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  501. /* I2C bus */
  502. #define I2C_BITBANG                     /* bit-bang I2C */
  503. #define I2C_FAST_MODE                   /* 400kHz bus speed */
  504. #define I2C_PORT         PORTD          /* I2C port data register */
  505. #define I2C_DDR          DDRD           /* I2C port data direction register */
  506. #define I2C_PIN          PIND           /* I2C port input pins register */
  507. #define I2C_SDA          PD0            /* port pin used for SDA */
  508. #define I2C_SCL          PD1            /* port pin used for SCL */
  509. #endif
  510.  
  511.  
  512.  
  513. /*
  514.  *  ST7036
  515.  *  - 4 bit parallel interface
  516.  *  - enable LCD_DB_STD when using port pins 0-3 for LCD_DB4/5/6/7
  517.  *  - untested!!!
  518.  */
  519.  
  520. #if 0
  521. #define LCD_ST7036                      /* display controller ST7036 */
  522. #define LCD_TEXT                        /* character display */
  523. #define LCD_PAR_4                       /* 4 bit parallel interface */
  524. /* control and data lines */
  525. #define LCD_PORT         PORTD          /* port data register */
  526. #define LCD_DDR          DDRD           /* port data direction register */
  527. //#define LCD_DB_STD                      /* use standard pins 0-3 for DB4-7 */
  528. #define LCD_DB4          PD0            /* port pin used for DB4 */
  529. #define LCD_DB5          PD1            /* port pin used for DB5 */
  530. #define LCD_DB6          PD2            /* port pin used for DB6 */
  531. #define LCD_DB7          PD3            /* port pin used for DB7 */
  532. #define LCD_RS           PD4            /* port pin used for RS */
  533. #define LCD_EN           PD5            /* port pin used for E */
  534. //#define LCD_RW           ???            /* port pin used for R/W (optional) */
  535. //#define LCD_RESET        ???            /* port pin used for XRESET (optional) */
  536. /* display settings */
  537. #define LCD_CHAR_X       16             /* characters per line */
  538. #define LCD_CHAR_Y       3              /* number of lines */
  539. #define LCD_EXTENDED_CMD                /* extended instruction set (EXT pin high) */
  540. #define LCD_CONTRAST     32             /* default contrast (0-63) */
  541. /* ST7036 has internal 5x8 font */
  542. #define FONT_ST7036                     /* 5x8 font */
  543. #endif
  544.  
  545.  
  546.  
  547. /*
  548.  *  ST7036
  549.  *  - 4 wire SPI interface using bit-bang SPI
  550.  *  - untested!!!
  551.  */
  552.  
  553. #if 0
  554. #define LCD_ST7036                      /* display controller ST7036 */
  555. #define LCD_TEXT                        /* character display */
  556. #define LCD_SPI                         /* SPI interface */
  557. /* control and data lines */
  558. #define LCD_PORT         PORTD          /* port data register */
  559. #define LCD_DDR          DDRD           /* port data direction register */
  560. #define LCD_RESET        PD4            /* port pin used for XRESET (optional) */
  561. #define LCD_CS           PD5            /* port pin used for CSB (optional) */
  562. #define LCD_RS           PD3            /* port pin used for RS */
  563. #define LCD_SCL          PD2            /* port pin used for SCL */
  564. #define LCD_SI           PD1            /* port pin used for SI (data input) */
  565. /* display settings */
  566. #define LCD_CHAR_X       16             /* characters per line */
  567. #define LCD_CHAR_Y       3              /* number of lines */
  568. #define LCD_EXTENDED_CMD                /* extended instruction set (EXT pin high) */
  569. #define LCD_CONTRAST     32             /* default contrast (0-63) */
  570. /* ST7036 has internal 5x8 font */
  571. #define FONT_ST7036                     /* 5x8 font */
  572. /* SPI bus */
  573. #define SPI_BITBANG                     /* bit-bang SPI */
  574. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  575. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  576. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  577. #define SPI_MOSI         LCD_SI         /* port pin used for MOSI */
  578. #endif
  579.  
  580.  
  581.  
  582. /*
  583.  *  ST7565R
  584.  *  - SPI interface using bit-bang SPI
  585.  *  - settings for Electronic Assembly EA DOGM/DOGL128-6
  586.  *  - uses LCD_CS to support rotary encoder in parallel at PD2/3
  587.  */
  588.  
  589. //#if 0
  590. #define LCD_ST7565R                     /* display controller ST7565R */
  591. #define LCD_GRAPHIC                     /* graphic display */
  592. #define LCD_SPI                         /* SPI interface */
  593. /* control and data lines */
  594. #define LCD_PORT         PORTD          /* port data register */
  595. #define LCD_DDR          DDRD           /* port data direction register */
  596. #define LCD_RESET        PD0            /* port pin used for /RES (optional) */
  597. #define LCD_CS           PD5            /* port pin used for /CS1 (optional) */
  598. #define LCD_A0           PD1            /* port pin used for A0 */
  599. #define LCD_SCL          PD2            /* port pin used for SCL */
  600. #define LCD_SI           PD3            /* port pin used for SI (data input) */
  601. /* display settings */
  602. #define LCD_DOTS_X       128            /* number of horizontal dots */
  603. #define LCD_DOTS_Y       64             /* number of vertical dots */
  604. //#define LCD_OFFSET_X                    /* enable x offset of 4 dots */
  605. //#define LCD_FLIP_X                      /* enable horizontal flip */
  606. //#define LCD_FLIP_Y                      /* enable vertical flip */
  607. #define LCD_START_Y      0              /* start line (0-63) */
  608. #define LCD_CONTRAST     11             /* default contrast (0-63) */
  609. /* font and symbols: vertically aligned & flipped, bank-wise grouping */
  610. #define FONT_6X8_VF                      /* 6x8 font */
  611. //#define FONT_8X8_VF                     /* 8x8 font */
  612. //#define FONT_8X16_VFP                   /* 8x16 font */
  613. //#define FONT_6X8_ISO8859_2_VF           /* 6x8 Central European font */
  614. //#define FONT_8X8_ISO8859_2_VF           /* 8x8 Central European font */
  615. //#define FONT_8X12T_ISO8859_2_VFP        /* thin 8x12 Central European font */
  616. //#define FONT_8X16_ISO8859_2_VFP         /* 8x16 Central European font */
  617. //#define FONT_8X8_WIN1251_VF             /* 8x8 cyrillic font */
  618. //#define FONT_8X8ALT_WIN1251_VF          /* 8x8 alternative cyrillic font */
  619. //#define FONT_8X8T_WIN1251_VF            /* thin 8x8 cyrillic font */
  620. //#define FONT_8X12T_WIN1251_VFP          /* thin 8x12 cyrillic font */
  621. //#define FONT_8X16_WIN1251_VFP           /* 8x16 cyrillic font */
  622. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  623. /* SPI bus */
  624. #define SPI_BITBANG                     /* bit-bang SPI */
  625. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  626. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  627. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  628. #define SPI_MOSI         LCD_SI         /* port pin used for MOSI */
  629. //#endif
  630.  
  631.  
  632.  
  633. /*
  634.  *  ST7735
  635.  *  - 4 wire SPI interface using bit-bang SPI
  636.  */
  637.  
  638. #if 0
  639. #define LCD_ST7735                      /* display controller ST7735 */
  640. #define LCD_GRAPHIC                     /* graphic display */
  641. #define LCD_COLOR                       /* color display */
  642. #define LCD_SPI                         /* SPI interface */
  643. /* control and data lines */
  644. #define LCD_PORT         PORTD          /* port data register */
  645. #define LCD_DDR          DDRD           /* port data direction register */
  646. #define LCD_RES          PD4            /* port pin used for /RESX (optional) */
  647. #define LCD_CS           PD5            /* port pin used for /CSX (optional) */
  648. #define LCD_DC           PD3            /* port pin used for D/CX */
  649. #define LCD_SCL          PD2            /* port pin used for SCL */
  650. #define LCD_SDA          PD1            /* port pin used for SDA */
  651. /* display settings */
  652. #define LCD_DOTS_X       128            /* number of horizontal dots */
  653. #define LCD_DOTS_Y       160            /* number of vertical dots */
  654. //#define LCD_OFFSET_X     4               /* enable x offset of 2 or 4 dots */
  655. //#define LCD_OFFSET_Y     2               /* enable y offset of 1 or 2 dots */
  656. //#define LCD_FLIP_X                      /* enable horizontal flip */
  657. #define LCD_FLIP_Y                      /* enable vertical flip */
  658. #define LCD_ROTATE                      /* switch X and Y (rotate by 90°) */
  659. //#define LCD_BGR                         /* reverse red and blue color channels */
  660. //#define LCD_LATE_ON                     /* turn on LCD after clearing it */
  661. /* font and symbols: horizontally aligned & flipped */
  662. #define FONT_10X16_HF                   /* 10x16 font */
  663. //#define FONT_6X8_ISO8859_2_HF           /* 6x8 Central European font */
  664. //#define FONT_8X8_ISO8859_2_HF           /* 8x8 Central European font */
  665. //#define FONT_10X16_ISO8859_2_HF         /* 10x16 Central European font */
  666. //#define FONT_8X16_WIN1251_HF            /* 8x16 cyrillic font */
  667. //#define FONT_8X16ALT_WIN1251_HF         /* 8x16 alternative cyrillic font */
  668. #define SYMBOLS_30X32_HF                /* 30x32 symbols */
  669. /* SPI bus */
  670. #define SPI_BITBANG                     /* bit-bang SPI */
  671. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  672. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  673. #define SPI_SCK          LCD_SCL        /* port pin used for SCK */
  674. #define SPI_MOSI         LCD_SDA        /* port pin used for MOSI */
  675. #endif
  676.  
  677.  
  678.  
  679. /*
  680.  *  ST7920
  681.  *  - SPI interface using bit-bang SPI
  682.  *  - for a 180° rotated display (LCD_ROT180)
  683.  *    - comment out "_H" font and symbols
  684.  *    - uncomment "_HF" font and symbols
  685.  */
  686.  
  687. #if 0
  688. #define LCD_ST7920                      /* display controller ST7920 */
  689. #define LCD_GRAPHIC                     /* graphic display */
  690. #define LCD_SPI                         /* SPI interface */
  691. /* control and data lines */
  692. #define LCD_PORT         PORTD          /* port data register */
  693. #define LCD_DDR          DDRD           /* port data direction register */
  694. #define LCD_RESET        PD4            /* port pin used for /RESET (optional) */
  695. #define LCD_CS           PD5            /* port pin used for CS (optional) */
  696. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  697. #define LCD_SID          PD1            /* port pin used for SID (data input) */
  698. /* display settings */
  699. #define LCD_DOTS_X       128            /* number of horizontal dots */
  700. #define LCD_DOTS_Y       64             /* number of vertical dots */
  701. /* font and symbols: horizonally aligned */
  702. #define FONT_8X8_H                      /* 8x8 font  */
  703. //#define FONT_8X8_ISO8859_2_H            /* 8x8 Central European font */
  704. #define SYMBOLS_24X24_H                 /* 24x24 symbols */
  705. //#define LCD_ROT180                      /* rotate output by 180° */
  706. /* font and symbols: horizonally aligned & flipped */
  707. //#define FONT_8X8_HF                     /* 8x8 font */
  708. //#define FONT_8X8_ISO8859_2_HF           /* 8x8 Central European font */
  709. //#define SYMBOLS_24X24_HF                /* 24x24 symbols */
  710. /* SPI bus */
  711. #define SPI_BITBANG                     /* bit-bang SPI */
  712. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  713. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  714. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  715. #define SPI_MOSI         LCD_SID        /* port pin used for MOSI */
  716. #endif
  717.  
  718.  
  719.  
  720. /*
  721.  *  ST7920
  722.  *  - 4 bit parallel interface
  723.  *  - if you change LCD_DB4/5/6/7 comment out LCD_DB_STD!
  724.  *  - for a 180° rotated display (LCD_ROT180)
  725.  *    - comment out "_H" font and symbol
  726.  *    - uncomment "_HF" font and symbol
  727.  */
  728.  
  729. #if 0
  730. #define LCD_ST7920                      /* display controller ST7920 */
  731. #define LCD_GRAPHIC                     /* graphic display */
  732. #define LCD_PAR_4                       /* 4 bit parallel interface */
  733. /* control and data lines */
  734. #define LCD_PORT         PORTD          /* port data register */
  735. #define LCD_DDR          DDRD           /* port data direction register */
  736. #define LCD_DB_STD                      /* use standard pins 0-3 for DB4-7 */
  737. #define LCD_DB4          PD0            /* port pin used for DB4 */
  738. #define LCD_DB5          PD1            /* port pin used for DB5 */
  739. #define LCD_DB6          PD2            /* port pin used for DB6 */
  740. #define LCD_DB7          PD3            /* port pin used for DB7 */
  741. #define LCD_RS           PD4            /* port pin used for RS */
  742. #define LCD_EN           PD5            /* port pin used for E */
  743. //#define LCD_RW           PD?            /* port pin used for RW (optional) */
  744. //#define LCD_RESET        PD?            /* port pin used for /RESET (optional) */
  745. /* display settings */
  746. #define LCD_DOTS_X       128            /* number of horizontal dots */
  747. #define LCD_DOTS_Y       64             /* number of vertical dots */
  748. /* font and symbols: horizonally aligned */
  749. #define FONT_8X8_H                      /* 8x8 font */
  750. #define SYMBOLS_24X24_H                 /* 24x24 symbols */
  751. //#define LCD_ROT180                      /* rotate output by 180° */
  752. /* font and symbols: horizonally aligned & flipped */
  753. //#define FONT_8X8_HF                     /* 8x8 font */
  754. //#define SYMBOLS_24X24_HF                /* 24x24 symbols */
  755. #endif
  756.  
  757.  
  758.  
  759. /*
  760.  *  STE2007
  761.  *  - 3 wire SPI interface using bit-bang SPI
  762.  */
  763.  
  764. #if 0
  765. #define LCD_STE2007                     /* display controller STE2007 */
  766. #define LCD_GRAPHIC                     /* graphic display */
  767. #define LCD_SPI                         /* SPI interface */
  768. /* control and data lines */
  769. #define LCD_PORT         PORTD          /* port data register */
  770. #define LCD_DDR          DDRD           /* port data direction register */
  771. #define LCD_RESET        PD4            /* port pin used for /RES (optional) */
  772. #define LCD_CS           PD5            /* port pin used for /CS (optional) */
  773. #define LCD_SCLK         PD2            /* port pin used for SCLK */
  774. #define LCD_SDIN         PD1            /* port pin used for SDIN (data input) */
  775. /* display settings */
  776. #define LCD_DOTS_X       96             /* number of horizontal dots */
  777. #define LCD_DOTS_Y       68             /* number of vertical dots */
  778. //#define LCD_FLIP_X                      /* enable horizontal flip */
  779. //#define LCD_FLIP_Y                      /* enable vertical flip */
  780. #define LCD_CONTRAST     16             /* default contrast (0-31) */
  781. /* font and symbols: vertically aligned & flipped */
  782. #define FONT_6X8_VF                     /* 6x8 font */
  783. //#define FONT_6X8_ISO8859_2_VF             /* 6x8 Central European font */
  784. #define SYMBOLS_24X24_VFP               /* 24x24 symbols */
  785. /* SPI bus */
  786. #define SPI_BITBANG                     /* bit-bang SPI */
  787. #define SPI_9                           /* support 9 bit frames */
  788. #define SPI_PORT         LCD_PORT       /* SPI port data register */
  789. #define SPI_DDR          LCD_DDR        /* SPI port data direction register */
  790. #define SPI_SCK          LCD_SCLK       /* port pin used for SCK */
  791. #define SPI_MOSI         LCD_SDIN       /* port pin used for MOSI */
  792. #endif
  793.  
  794.  
  795.  
  796. /*
  797.  *  VT100 serial terminal, TTL serial
  798.  */
  799.  
  800. #if 0
  801. #define LCD_VT100                       /* pseudo display VT100 */
  802. #define LCD_TEXT                        /* character display */
  803. #define LCD_COLOR                       /* color display */
  804. #define LCD_CHAR_X       40             /* characters per line */
  805. #define LCD_CHAR_Y       24             /* number of lines */
  806. #define SERIAL_BITBANG                  /* bit-bang serial */
  807. //#define SERIAL_HARDWARE                 /* hardware serial */
  808. #endif
  809.  
  810.  
  811.  
  812. /*
  813.  *  check if a LCD module is specified
  814.  */
  815.  
  816. #if !defined(LCD_TEXT) && !defined(LCD_GRAPHIC)
  817.   #error <<< No LCD module specified! >>>
  818. #endif
  819.  
  820.  
  821.  
  822. /* ************************************************************************
  823.  *   port and pin assignments
  824.  * ************************************************************************ */
  825.  
  826.  
  827. /*
  828.  *  test pins / probes:
  829.  *  - Must be an ADC port
  830.  *  - Lower 3 pins of the port must be used for probes.
  831.  *  - Please don't change the definitions of TP1, TP2 and TP3!
  832.  *  - Don't share this port with POWER_CTRL or TEST_BUTTON!
  833.  */
  834.  
  835. #define ADC_PORT         PORTC     /* port data register */
  836. #define ADC_DDR          DDRC      /* port data direction register */
  837. #define ADC_PIN          PINC      /* port input pins register */
  838. #define TP1              PC0       /* test pin / probe #1 */
  839. #define TP2              PC1       /* test pin / probe #2 */
  840. #define TP3              PC2       /* test pin / probe #3 */
  841.  
  842. #define TP_ZENER         PC3       /* test pin for 10:1 voltage divider */
  843. #define TP_REF           PC4       /* test pin for 2.5V reference and relay */
  844. #define TP_BAT           PC5       /* test pin for battery (4:1 voltage divider) */
  845.  
  846.  
  847. /*
  848.  *  probe resistors
  849.  *  - For PWM/squarewave output via probe #2 R_RL_2 has to be PB2/OC1B.
  850.  *  - Don't share this port with POWER_CTRL or TEST_BUTTON!
  851.  */
  852.  
  853. #define R_PORT           PORTB     /* port data register */
  854. #define R_DDR            DDRB      /* port data direction register */
  855. #define R_RL_1           PB0       /* Rl (680R) for test pin #1 */
  856. #define R_RH_1           PB1       /* Rh (470k) for test pin #1 */
  857. #define R_RL_2           PB2       /* Rl (680R) for test pin #2 */
  858. #define R_RH_2           PB3       /* Rh (470k) for test pin #2 */
  859. #define R_RL_3           PB4       /* Rl (680R) for test pin #3 */
  860. #define R_RH_3           PB5       /* Rh (470k) for test pin #3 */
  861.  
  862.  
  863. /*
  864.  *  dedicated signal output via OC1B
  865.  *  - don't change this!
  866.  */
  867.  
  868. #define SIGNAL_PORT      PORTB     /* port data register */
  869. #define SIGNAL_DDR       DDRB      /* port data direction register */
  870. #define SIGNAL_OUT       PB2       /* MCU's OC1B pin */
  871.  
  872.  
  873. /*
  874.  *  power control
  875.  *  - can't be same port as ADC_PORT or R_PORT
  876.  */
  877.  
  878. #define POWER_PORT       PORTD     /* port data register */
  879. #define POWER_DDR        DDRD      /* port data direction register */
  880. #define POWER_CTRL       PD6       /* control pin (1: on / 0: off) */
  881.  
  882.  
  883. /*
  884.  *  test push button
  885.  *  - can't be same port as ADC_PORT or R_PORT
  886.  */
  887.  
  888. #define BUTTON_PORT      PORTD     /* port data register */
  889. #define BUTTON_DDR       DDRD      /* port data direction register */
  890. #define BUTTON_PIN       PIND      /* port input pins register */
  891. #define TEST_BUTTON      PD7       /* test/start push button (low active) */
  892.  
  893.  
  894. /*
  895.  *  rotary encoder
  896.  */
  897.  
  898. #define ENCODER_PORT     PORTD     /* port data register */
  899. #define ENCODER_DDR      DDRD      /* port data direction register */
  900. #define ENCODER_PIN      PIND      /* port input pins register */
  901. #define ENCODER_A        PD3       /* rotary encoder A signal */
  902. #define ENCODER_B        PD2       /* rotary encoder B signal */
  903.  
  904.  
  905. /*
  906.  *  increase/decrease push buttons
  907.  */
  908.  
  909. #define KEY_PORT         PORTD     /* port data register */
  910. #define KEY_DDR          DDRD      /* port data direction register */
  911. #define KEY_PIN          PIND      /* port input pins register */
  912. #define KEY_INC          PD2       /* increase push button (low active) */
  913. #define KEY_DEC          PD3       /* decrease push button (low active) */
  914.  
  915.  
  916. /*
  917.  *  frequency counter
  918.  *  - input must be pin PD4/T0
  919.  */
  920.  
  921. #define COUNTER_PORT     PORTD     /* port data register */
  922. #define COUNTER_DDR      DDRD      /* port data direction register */
  923. #define COUNTER_IN       PD4       /* signal input T0 */
  924.  
  925.  
  926. /*
  927.  *  IR detector/decoder
  928.  *  - fixed module connected to dedicated I/O pin
  929.  */
  930.  
  931. #define IR_PORT          PORTC     /* port data register */
  932. #define IR_DDR           DDRC      /* port data direction register */
  933. #define IR_PIN           PINC      /* port input pins register */
  934. #define IR_DATA          PC6       /* data signal */
  935.  
  936.  
  937. /*
  938.  *  SPI
  939.  *  - hardware SPI uses
  940.  *    SCK PB5, MOSI PB3, MISO PB4 and /SS PB2
  941.  *  - could be already set in display section
  942.  *  - unused signals can be ignored
  943.  *  - /SS is set to output mode for hardware SPI but not used
  944.  */
  945.  
  946. /* for bit-bang and hardware SPI */
  947. #ifndef SPI_PORT
  948. #define SPI_PORT         PORTB     /* port data register */
  949. #define SPI_DDR          DDRB      /* port data direction register */
  950. #define SPI_PIN          PINB      /* port input pins register */
  951. #define SPI_SCK          PB5       /* pin for SCK */
  952. #define SPI_MOSI         PB3       /* pin for MOSI */
  953. #define SPI_MISO         PB4       /* pin for MISO */
  954. #define SPI_SS           PB2       /* pin for /SS */
  955. #endif
  956.  
  957.  
  958. /*
  959.  *  I2C
  960.  *  - hardware I2C (TWI) uses
  961.  *    SDA PC4 and SCL PC5
  962.  *  - could be already set in display section
  963.  */
  964.  
  965. /* for bit-bang I2C */
  966. #ifndef I2C_PORT
  967. #define I2C_PORT         PORTC     /* port data register */
  968. #define I2C_DDR          DDRC      /* port data direction register */
  969. #define I2C_PIN          PINC      /* port input pins register */
  970. #define I2C_SDA          PC4       /* pin for SDA */
  971. #define I2C_SCL          PC5       /* pin for SCL */
  972. #endif
  973.  
  974.  
  975. /*
  976.  *  TTL serial interface
  977.  *  - hardware USART uses
  978.  *    USART0: Rx PD0 and Tx PD1
  979.  */
  980.  
  981. /* for hardware RS232 */
  982. #define SERIAL_USART     0         /* use USART0 */
  983. /* for bit-bang RS232 */
  984. #define SERIAL_PORT      PORTD     /* port data register */
  985. #define SERIAL_DDR       DDRD      /* port data direction register */
  986. #define SERIAL_PIN       PIND      /* port input pins register */
  987. #define SERIAL_TX        PD1       /* pin for Tx (transmit) */
  988. #define SERIAL_RX        PD0       /* pin for Rx (receive) */
  989. #define SERIAL_PCINT     16        /* PCINT# for Rx pin */
  990.  
  991.  
  992. /*
  993.  *  OneWire
  994.  *  - dedicated I/O pin
  995.  */
  996.  
  997. #define ONEWIRE_PORT     PORTC     /* port data register */
  998. #define ONEWIRE_DDR      DDRC      /* port data direction register */
  999. #define ONEWIRE_PIN      PINC      /* port input pins register */
  1000. #define ONEWIRE_DQ       PC6       /* DQ (data line) */
  1001.  
  1002.  
  1003.  
  1004. /* ************************************************************************
  1005.  *   internal stuff
  1006.  * ************************************************************************ */
  1007.  
  1008.  
  1009. /* ADC reference selection: AVcc */
  1010. #define ADC_REF_VCC           (1 << REFS0)
  1011.  
  1012. /* ADC reference selection: internal 1.1V bandgap */
  1013. #define ADC_REF_BANDGAP       ((1 << REFS1) | (1 << REFS0))
  1014.  
  1015. /* ADC reference selection: filter mask for register bits */
  1016. #define ADC_REF_MASK          ((1 << REFS1) | (1 << REFS0))
  1017.  
  1018. /* ADC MUX channel: internal 1.1V bandgap reference */
  1019. #define ADC_CHAN_BANDGAP      0x0e      /* 1110 */
  1020.  
  1021. /* ADC MUX channel: filter mask for register bits */
  1022. #define ADC_CHAN_MASK         0b00001111     /* MUX0-3 */
  1023.  
  1024.  
  1025.  
  1026. /* ************************************************************************
  1027.  *   MCU specific setup to support different AVRs
  1028.  * ************************************************************************ */
  1029.  
  1030.  
  1031. /*
  1032.  *  ATmega 328/328P
  1033.  */
  1034.  
  1035. #if defined(__AVR_ATmega328__)
  1036.  
  1037.   /* estimated internal resistance of port to GND (in 0.1 Ohms) */
  1038.   #define R_MCU_LOW           200
  1039.  
  1040.   /* estimated internal resistance of port to VCC (in 0.1 Ohms) */
  1041.   #define R_MCU_HIGH          220
  1042.  
  1043.   /* voltage offset of MCU's analog comparator (in mV): -50 up to 50 */
  1044.   #define COMPARATOR_OFFSET   0
  1045.  
  1046.   /* this MCU has 32kB Flash, 1kB EEPROM and 2kB RAM (enable extra features) */
  1047.   #define RES_FLASH           32
  1048.   #define RES_EEPROM          1
  1049.   #define RES_RAM             2
  1050.  
  1051.  
  1052. /*
  1053.  *  missing or unsupported MCU
  1054.  */
  1055.  
  1056. #else
  1057.   #error <<< No or wrong MCU type selected! >>>
  1058. #endif
  1059.  
  1060.  
  1061.  
  1062. /* ************************************************************************
  1063.  *   EOF
  1064.  * ************************************************************************ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement