#include"../autoconf.h" #include #include #include #include "borg_hw.h" /* Steckerbelegung Flachbandkabel am Panel * (die Nummerierung ist in wirklichkeit umgekehrt) * * 1-3 GND * 4 +5V für Logic * 5-8 +12V * 9-10 GND * 11 CP3 * 12 CP2 * 13 CP1 * 14 /show * 15 CP4 * 16 /EO3 * 17-18 GND * 19-26 D0-D7 * * Und nochmal richtigrum: * 1 D7 * 2 D6 * 3 D5 * 4 D4 * 5 D3 * 6 D2 * 7 D1 * 8 D0 * 9 GND * 10 GND * 11 /EO3 * 12 CP4 * 13 /show * 14 CP1 * 15 CP2 * 16 CP3 * 17 GND * 18 GND * 19 +12V * 20 +12V * 21 +12V * 22 +12V * 23 +5V * 24 GND * 25 GND * 26 GND * * Es werden 4 40374 Latches benutzt. Nr. 1,2 und 4 treiben vom Datenbus * in Richtung Panel, Nr. 3 treibt von den Tastenausgängen auf den Datenbus. * Die EOs von 1,2 und 4 liegen fest auf GND. * * Die LEDs sind in einer 12*16 Matrix angeordnet * Die Werte für die LED spalten Werden mit CP1 und CP2 in die * Latches übernommen (insgesammt 16 Spalten) * Die Nummer der Zeile wird beim löschen von /show übernommen. * * Die Tasten sind in einer 8*8 Matrix angeordnet. * Über Latch 4 werden die Zeilen einzeln auf high gesetzt, über * Latch 3 können dann die Spalten gelesen werden. * */ //Datenport für das Panel #define COLPORT PORTC #define COLDDR DDRC #define COLPIN PINC #define CTRLPORT PORTD #define CTRLDDR DDRD // PINs on CTRLPORT #define PIN_EO3 PD7 #define PIN_CP4 PD2 #define PIN_SHOW PD3 #define PIN_CP1 PD4 #define PIN_CP2 PD5 #define PIN_CP3 PD6 //Der Puffer, in dem das aktuelle Bild gespeichert wird unsigned char pixmap[NUMPLANE][NUM_ROWS][LINEBYTES]; volatile uint8_t keys[8]; inline void busywait() { //unsigned char i; //for(i=0;i<20;i++){ // asm volatile("nop"); //} } //Eine Zeile anzeigen inline void rowshow(unsigned char row, unsigned char plane){ CTRLPORT |= (1<