Code:
// ============================================================================== =
// === HAUPTProgramm =========================================================== =
// Initialisierungen, LED1 kurzblinken als Signal für Programmstart,
// Ausgabe des Identifizierungsstrings per USART
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int main(void)
{ //
// Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
// A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
DDRB = 0b00011111; // siehe aktuell oben oder Fortschritt/R2D2
PORTB = 0b00100000; // und Port/Pull Ups (1) aktivieren
DDRC = 0b01110000; // PC3 ist ADC3, PC0 .. 6 , kein PC7-Pin bei m168
PORTC = 0b00000111; // Beachte für ADC: PC3 ist ADC-Eingang ##>> OHNE Pullup !!
DDRD = 0b11110000; // -> siehe unter DDRB, sowie PD2,3 extInt
PORTD = 0b00001111; // Pull Ups aktivieren
// Encoder_1 = ExtINT0 = PortD2, Encoder_2 = PortD3
// Dadurch Initialisierung der Anschlüsse für miniD0 auf mega328: - - - - - - - -
// /RESET,PC6 1 A A 28 PC5,(SCL), gLED
// RxD,PD0 2 EU A 27 PC4,(SDA), rLED
// TxD,PD1___3 EU E 26___PC3, ADC0=GP2D120
// SigMot1/ExtINT0,PD2 4 EU EU 25 PC2, SFH 5110, IN irDME 4 Rechts
// SigMot2/ExtINT1,PD3 5 EU EU 24 PC1, SFH 5110, IN irDME 3 Links
// _|-- 3,4 Guz, PD4___6 A EU 23___PC0, SFH 5110, IN irDME 1-2 Mitte
// - - - - - - Belegung Pinne - - - - - - - - -
// XTAL1 PB6___9 EU 20___VCC
// XTAL2 PB7 10 EU EU 19 PB5, SCK, Taster2
// PWM 1,2 uz+Guz,PD5 11 A A 18 PB4, MISO, _|-- 3,4 uz, (Taster1)
// PWM 3,4 uz+Guz,PD6__12 A A 17___PB3, MOSI, Reserve 2
// _|-- 1,2 uz,PD7 13 A A 16 PB2, Servo
// _|-- 1,2 Guz,PB0 14 A A 15 PB1, OC1A = SFH 415, OUT (irDME)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
for(i=0; i<10; i++) // LED/PC5 blinkt i-mal ##>> bevor Interrupts erlaubt sind
// um ungewollte Resets u.ä. erkennen zu können
{
SetBit(PORTC, 5); // LED auf PC5 schalten EIN, HELL
waitms(3); // ... damit man kurze resets besser erkennt
ClrBit(PORTC, 5); // LED auf PC5 schalten AUS, Dunkel
waitms(97); //
} // Ende von for(i=0; i<10; i++)
// ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Es folgen Initialisierungsroutinen, z.B.:
init_USART0(MYUBRR); //USART0 initialisieren mit wählbarer Baudrate (s.o.)
XTI_0_1_init(); //Initialisiere den externen Interrupt 0 und 1
//
sei(); //Globalen Interrupt freigeben
//
// .....
Lesezeichen