Code:
// ============================================================================= =
// === HAUPTProgramm ========================================================== =
// Initialisierungen, Ausgabe des Identifizierungsstrings per UART
// Start des aktuellen Programms
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int main(void) //
{ //
uint8_t i; //
char abc[12]; // Übersetzungsfeld für Werteausgabe
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// === Grundlegende Initialisierungen der Hardware, Portdefinition -
// PCINT8, XCK0, T0, PB0 1 40 PA0, ADC0, PCINT0
// PCINT9, CLKO, T1, PB1 2 39 PA1, ADC1, PCINT1
// PCINT10, INT2, AIN0, PB2 3 38 PA2, ADC2, PCINT2
// PCINT11, OC0A, AIN1, PB3 4 37 PA3, ADC3, PCINT3
// PCINT12, OC0B, /SS, PB4 5 36 PA4, ADC4, PCINT4
// PCINT13, ICP3, MOSI, PB5 6 35 PA5, ADC5, PCINT5
// PCINT14, OC3A, MISO, PB6 7 34 PA6, ADC6, PCINT6
// PCINT15, OC3B, SCK, PB7 8 33 PA7, ADC7, PCINT7
// /RESET 9 32 AREF
// Vcc 10 31 GND
// GND 11 30 AVcc
// XTAL2 12 29 PC7, TOSC2, PCINT23
// XTAL1 13 28 PC6, TOSC1, PCINT22
// PCINT24, RXD0, T3, PD0 14 27 PC5, TDI, PCINT21
// PCINT25, TXD0, PD1 15 26 PC4, TDO, PCINT20
// PCINT26, RXD1, INT0, PD2 16 25 PC3, TMS, PCINT19
// PCINT27, TXD1, INT1, PD3 17 24 PC2, TCK, PCINT18
// PCINT28, XCK1, OC1B, PD4 18 23 PC1, SDA, PCINT17
// PCINT29, OC1A, PD5 19 22 PC0, SCL, PCINT16
// PCINT30, OC2B, ICP PD6 20 21 PD7, OC2A, PCINT31
// ===================================================
// ####>>>> Initialisierung der Anschlüsse für R5M auf mega1284: <<<<####
// ( PB0 1 A A 40 PA0 (CN 11-1 -Audi-Busy)
// CN_12 ( PB1 2 A A 39 PA1 (CN 11-3 -Audi-Clock)
// PORTB ( PB2 3 A A 38 PA2 (CN 11-5 -Audi-Data)
// (CIR od. / PB3 4 A? E 37 PA3 (CN 11-4 -Audi)
// LCD ... \ PB4 5 A A 36 PA4, Servo10
// siehe ( MOSI, PB5 6 A A 35 PA5, Servo9
// unten ( MISO, PB6 7 A A 34 PA6, Servo8
// TasteC=3 ( SCK, PB7 8 EU A 33 PA7, Servo7
// Taste /RES, /RESET 9 32 AREF ref Vcc, aktuell
// Vcc 10 31 GND
// GND 11 30 AVcc
// XTAL2 12 A 29 PC7, Servo6
// XTAL1 13 A 28 PC6, Servo5
// RXD0, PD0 14 EU A 27 PC5, Servo4
// TXD0, PD1 15 EU A 26 PC4, Servo3
// RXD1, PD2 16 EU A 25 PC3, Servo2
// TXD1, PD3 17 A A 24 PC2, Servo1
// L1g PD4 18 A E 23 PC1, SDA
// L1r PD5 19 A E 22 PC0, SCL
// TasteA=1, PD6 20 EU EU 21 PD7, TasteB=2, PCINT31, (Sound)
// - - - - - - - - - - - - - - -
// ####>>>> PB3 ist evtl. Source für IR-DME-LED !! = CIR-LED
// - - - - - - - - - - - - - - -
// ####>>>> Initialisierung/Anschlüsse von PORT B für LCD DEM 16x2
// data bit 4 PB0 0 A WS Pin1 |
// data bit 5 PB1 1 A Pin2 | -- Der 10-polige Wannenstecker
// data bit 6 PB2 2 A Pin3 | ist an die Belegung wie beim
// data bit 7 SCK, PB3 3 A Pin4 | Transistortester angepasst
// RS line PB4 RS Pin5 | es kommen noch
// ENABLE line MOSI, PB5 EN1 Pin6 | Pin 9 GND und
// R/W (offen) MISO, PB6 R/W Pin7 | Pin 10 Vcc dazu
// NC (TasteC) SCK, PB7 NC Pin8 |___________________________
// GND Pin9
// Vcc Pn10 | Anmerkg: ENABLE line !
// - - - - - - - - - - - - - - -
// Ports+Pins als Ein- (0) od Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
// A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
DDRA = 0b11110110; // PA0..2 WTV Bsy/Clk/Dto, PA3=Eingang f Sharp
PORTA = 0b00000001; // und Port/Pull Ups (1) aktivieren
//
DDRB = 0b01111111; // siehe aktuell oben
PORTB = 0b10000000; // und Port/Pull Ups (1) aktivieren
//
DDRC = 0b11110111; // PC0..7 (mega1284), PC0 + PC1 = I2C
PORTC = 0b00000000; // bis auf I2C : Alle OHNE Pullup !!
//
DDRD = 0b00111100; // -> siehe Schaltplan m-32-plus
PORTD = 0b11000011; // Pull Ups aktivieren, NICHT bei extINT0/~1
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// <<<=== Etwa hier könnte Deine erste Testschleife stehen
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for(i=0; i<10; i++) // gLED1(PC3) blinken lassen bevor Interrupts erlaubt sind,
{ // um ungewollte Resets u.ä. besser erkennen zu können
SetBit(PORTD, L1g); // gnLED/PD4 schalten EIN, HELL
wms(3); // ###>>> HeartbeatLEDs schalten Aode -<|- Portpin <<<###
ClrBit(PORTD, L1g); // gnLED/PD4 aus
wms(97); //
SetBit(PORTD, L1r); // rtLED/PD5 schalten EIN, HELL
wms(3); // ###>>> HeartbeatLEDs schalten Aode -<|- Portpin <<<###
if ( TAaus) ClrBit(PORTD, L1r); // rtLED/PD5 aus WENN T1 nicht gedrückt
wms(97); //
} // Ende von for(i=0; i<10; i++)
ClrBit(PORTD, L1r); // rtLED/PD5 auf JEDEN Fall aus
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SrvCHK = 1; // Flag setzen für Extremwertprüfung aktiv tmr
TC1TMR_init(); // Init Tmr/Cntr1 für ServoPWMs tmr
// - - - - - - - - - - - - - - -
Izeit_1 = 20000; // Der ZeitHorizont für ISR(TIMER2_COMPA_vect)
Izthrznt = 20000; // Der ZeitHorizont für ISR(TIMER2_COMPA_vect)
Isecundn = 0; // Sekundenzähler, max 9 Stunden - NUR hier nullen
TC2TMR_init(); // Init Timer/Cntr2-Interrupt 20 kHz/50 µsec tmr
// ISR gibt auf PD4/L1g (gnLED) ein Taktsignal aus
kal_0(); // Initialisieren aus KOnstanten-Liste = div. Vorgaben kal
// - - - - - - - - - - - - - - -
lcd_init(); // lib
lcd_01 ( ); // Info über LCD inf
// Anmerkung zu LCD_01 Diese Routine muss früh laufen, vor Allem
// VOR der UART1-Initialisierung. Denn die schnelle UART1 verzögert
// die Routine wms dramatisch ! ! !
//
STSi2c = 0; // Statusbyte I2C auf "nicht initialisiert" setzen
I2C_init (); // I2C-Buffer initialisieren, I2C-Slave-Init I2C
//init_uart0(MYUBRR); // USART0 initialisieren m wählbarer Baudrate (s.o.) inf
init_uart0 ( (u16)(F_CPU / BAUD / 16 - 0.5) ); // Init UART0 nach PDannegger
// Die ##-routinen für LCD-Betrieb wieder aktivieren - stören dann den IR-LED-Takt
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sei(); // Globalen Interrupt freigeben
info01 (); // Startinfo über USART ausgeben main
// . . .
// . . .
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// <<<=== Etwa hier könnte Deine zweite Testschleife stehen
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lesezeichen