|
@@ -1,110 +0,0 @@
|
|
|
-
|
|
|
-#include <avr/io.h>
|
|
|
-#include <util/delay.h>
|
|
|
-#include <avr/eeprom.h>
|
|
|
-
|
|
|
-#include <stdio.h>
|
|
|
-
|
|
|
-#include "uart.h"
|
|
|
-
|
|
|
-extern FILE uart_stdout;
|
|
|
-
|
|
|
-uint16_t ee_data01 __attribute__((section(".eeprom"))) = 0x01;
|
|
|
-uint16_t ee_data02 __attribute__((section(".eeprom"))) = 0x02;
|
|
|
-uint16_t ee_data03 __attribute__((section(".eeprom"))) = 0x03;
|
|
|
-uint16_t ee_data04 __attribute__((section(".eeprom"))) = 0x04;
|
|
|
-
|
|
|
-
|
|
|
-#define DATAPORT PORTA
|
|
|
-#define ADDRPORTLO PORTA
|
|
|
-#define ADDRPORTHI PORTC
|
|
|
-#define CRTLPORT PORTD
|
|
|
-
|
|
|
-
|
|
|
-#define LATCH_LE_PIN 2
|
|
|
-#define LATCH_OE_PIN 3
|
|
|
-#define SRAM_OE_PIN 4
|
|
|
-#define SRAM_CE_PIN 5
|
|
|
-#define SRAM_WE_PIN 6
|
|
|
-
|
|
|
-
|
|
|
-// LE high -> forward imput
|
|
|
-// LE low -> latch input
|
|
|
-#define LATCH_LEHI CRTLPORT != _BV(LATCH_LE_PIN);
|
|
|
-#define LATCH_LELO CRTLPORT &=~_BV(LATCH_LE_PIN);
|
|
|
-// OE high -> normal logic level
|
|
|
-// OE low -> high impendance
|
|
|
-#define LATCH_OEHI CRTLPORT != _BV(LATCH_OE_PIN);
|
|
|
-#define LATCH_OELO CRTLPORT &=~_BV(LATCH_OE_PIN);
|
|
|
-// OE high output disable
|
|
|
-// OE low output enable
|
|
|
-#define SRAM_OEHI CRTLPORT != _BV(SRAM_OE_PIN);
|
|
|
-#define SRAM_OELO CRTLPORT &=~_BV(SRAM_OE_PIN);
|
|
|
-// CE high chip disable
|
|
|
-// CE low chip enable
|
|
|
-#define SRAM_CEHI CRTLPORT != _BV(SRAM_CE_PIN);
|
|
|
-#define SRAM_CELO CRTLPORT &=~_BV(SRAM_CE_PIN);
|
|
|
-// WE high write disable
|
|
|
-// WE low write enable
|
|
|
-#define SRAM_WEHI CRTLPORT != _BV(SRAM_WE_PIN);
|
|
|
-#define SRAM_WELO CRTLPORT &=~_BV(SRAM_WE_PIN);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-int sram_write(uint16_t addr, uint8_t data)
|
|
|
-{
|
|
|
-
|
|
|
- uint8_t addr_lo = addr & 8;
|
|
|
- uint8_t addr_hi = addr >> 8;
|
|
|
-
|
|
|
- SRAM_OEHI;
|
|
|
- SRAM_CELO;
|
|
|
- SRAM_WELO;
|
|
|
-
|
|
|
-
|
|
|
- DATAPORT = data;
|
|
|
-
|
|
|
- LATCH_LEHI
|
|
|
- ADDRPORTLO = addr_lo;
|
|
|
- ADDRPORTHI = addr_hi;
|
|
|
- LATCH_LELO
|
|
|
-
|
|
|
- SRAM_CEHI;
|
|
|
-
|
|
|
- SRAM_CELO;
|
|
|
-
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-int main (void) { // (2)
|
|
|
-
|
|
|
- DDRB = 0xff; // (3)
|
|
|
- PORTB = 0xff; // (4)
|
|
|
- uint8_t i = 0;
|
|
|
- uint8_t j = 7;
|
|
|
- uint8_t * addr = 0x0000;
|
|
|
- uint16_t c = 0;
|
|
|
- uart_init();
|
|
|
- stdout = &uart_stdout;
|
|
|
-
|
|
|
- while(1) { // (5a)
|
|
|
- PORTB |= (1<< j);
|
|
|
- j++;
|
|
|
- if ( j == 8 ) j = 0;
|
|
|
- PORTB &= ~(1 << j ); // Toggle PB0 z.B. angeschlossene LED
|
|
|
- /*
|
|
|
- Die maximale Zeit pro Funktionsaufruf ist begrenzt auf
|
|
|
- 262.14 ms / F_CPU in MHz (im Beispiel:
|
|
|
- 262.1 / 3.6864 = max. 71 ms)
|
|
|
- 16 * 62.5ms (+ Zeit für Schleife) = ca. eine Sekunde warten
|
|
|
- */
|
|
|
-
|
|
|
- for (i=1; i<=70; i++)
|
|
|
- _delay_ms(15);
|
|
|
- }
|
|
|
- return 0; // (6)
|
|
|
-}
|
|
|
-
|