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