diff options
author | Leo C | 2015-06-11 17:43:28 +0200 |
---|---|---|
committer | Leo C | 2015-06-11 17:43:28 +0200 |
commit | 1157e75889d3d6d23d1e2514f401cd5b354bd149 (patch) | |
tree | edad2bcaddaec49a18a1b4bac2b813ce9e5a36bf /avr/main.c | |
parent | 8506d791786eea8ee55db5418a8f646bb2dd3a6d (diff) | |
parent | 057817cb1dc71416bc798b5cd592acfcea87efaa (diff) | |
download | z180-stamp-1157e75889d3d6d23d1e2514f401cd5b354bd149.zip |
Merge branch 'master' into cmdline_edit
Diffstat (limited to 'avr/main.c')
-rw-r--r-- | avr/main.c | 80 |
1 files changed, 52 insertions, 28 deletions
@@ -1,15 +1,18 @@ /* + * (C) Copyright 2014 Leo C. <erbl259-lmu@yahoo.de> + * + * SPDX-License-Identifier: GPL-2.0+ */ #include "common.h" - #include <avr/interrupt.h> +#include <avr/wdt.h> #include <stdlib.h> #include <stdio.h> #include "config.h" -#include "debug.h" +#include "ff.h" #include "z80-if.h" #include "i2c.h" #include "con-utils.h" @@ -18,14 +21,14 @@ #include "cli.h" #include "env.h" #include "z180-serv.h" -#include "spi.h" #include "gpio.h" +#include "time.h" +#include "rtc.h" +#include "debug.h" -static uint8_t mcusr; +uint8_t mcusr __attribute__ ((section (".noinit"))); -/*--------------------------------------------------------------------------*/ #if DEBUG - __attribute__ ((naked)) __attribute__ ((section (".init3"))) void preset_ram (void) { @@ -33,6 +36,21 @@ void preset_ram (void) *p = 0xdd; } +#endif + +__attribute__ ((naked)) __attribute__ ((section (".init3"))) +void get_mcusr (void) +{ + /* save and clear reset reason(s) */ + /* TODO: move to init section? */ + mcusr = MCUSR; + MCUSR = 0; + + wdt_disable(); +} + +/*--------------------------------------------------------------------------*/ +#if DEBUG static const FLASH char * const FLASH rreasons[] = { FSTR("Power on"), @@ -74,13 +92,6 @@ ISR(INT6_vect) static void setup_avr(void) { - /* save and clear reset reason(s) */ - /* TODO: move to init section? */ - mcusr = MCUSR; - MCUSR = 0; - - /* WD */ - /* CPU */ /* Disable JTAG Interface regardless of the JTAGEN fuse setting. */ @@ -110,13 +121,6 @@ void setup_avr(void) TCCR3B = (0b01<<WGM32)|(0b001<<CS30); /* CTC Mode, Prescaler 1 */ TIMSK3 = _BV(OCIE3A); /* Enable TC2.oca interrupt */ - /* SPI as master */ - PRR0 &= ~_BV(PRSPI); - SPI_DDR = (SPI_DDR & ~_BV(SPI_MISO)) - | _BV(SPI_MOSI) | _BV(SPI_SCK) | _BV(SPI_SS); - SPI_PORT = (SPI_PORT & ~(_BV(SPI_MOSI) | _BV(SPI_SCK))) - | _BV(SPI_SS); - /* INT5, INT6: falling edge */ EICRB = (EICRB & ~((0b11 << ISC50) | (0b11 << ISC60))) | (0b10 << ISC50) | (0b10 << ISC60); @@ -132,6 +136,27 @@ int reset_reason_is_power_on(void) return (mcusr & _BV(PORF)) != 0; } +static +void setup_system_time(void) +{ + struct tm rtc_time; + + rtc_get(&rtc_time); + rtc_time.tm_isdst = 0; + set_system_time(mk_gmtime(&rtc_time) ); +} + + + +static void setup_fatfs(void) +{ + static FATFS FatFs0; + static FATFS FatFs1; + + f_mount(&FatFs0, "0:", 0); + f_mount(&FatFs1, "1:", 0); +} + /*--------------------------------------------------------------------------*/ /* Stored value of bootdelay, used by autoboot_command() */ @@ -228,10 +253,13 @@ void main_loop(void) int main(void) { - setup_avr(); - z80_setup_bus(); + extern void setup_mmc(void); + for (int i = 0; i < GPIO_MAX; i++) gpio_config(i, INPUT_PULLUP); + setup_avr(); + setup_mmc(); + z80_setup_bus(); env_init(); if (reset_reason_is_power_on()) @@ -245,13 +273,9 @@ int main(void) print_reset_reason(); #endif -#if DEBUG - unsigned long i_speed = getenv_ulong(PSTR("i2c_clock"), 10, CONFIG_SYS_I2C_CLOCK); - debug("### Setting I2C clock Frequency to %lu Hz.\n", i_speed); - i2c_init(i_speed); -#else i2c_init(CONFIG_SYS_I2C_CLOCK); -#endif + setup_system_time(); + setup_fatfs(); printf_P(PSTR("\nATMEGA1281+Z8S180 Stamp Monitor\n\n")); |