Ich erkenne das das Programm nicht startet daran, das das Display eben dunkel bleibt und nichts weiter passiert ..
Als erste Hilfe wäre es ja noch möglich gleich zum Programmanfang mal ein simples Delay von einer Sekunde einzprogrammieren und erst danach das Display zu initialisieren. Dann sollte man ziemlich sicher sein, dass "alles" bereit ist zu arbeiten *gg*.
Mein Blink-Krückstock ist eher als Allzweckwaffe für unsauber arbeitende Programmierer oder Tester gedacht. Jeder nicht abgefangene Interrupt zeigt sich so, ebenso auch jeder noch so kleinste Spannungseinbruch - weil hier jedes Programm beim Start vorbei muss. Und was kommt nach nem Reset? GEnau - ein Start. Der Code ist ziemlich simpel, mein main fängt so an (ok, ich weiß, dass das NICHT arduino-language ist).
Code:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
int main(void)
{ //
uint8_t i; //
// - - - - - - - - - - - - - - -
// Ports: A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp, siehe oben
// DDRx: als Ein- (0) oder Ausgänge (1) konfigurieren, Pins/Pull Ups (1) aktiv
// PORTx: Eingänge: Pullup = 1; Ausgaenge: low = 0, high = 1
DDRB = 0b00100111; // Mot1/2: PB1 = OC1A-MotorPWM; PB2 = OC1B-MotorPWM
PORTB = 0b11011000; // PB5 - onBoard-rtLED
//
DDRC = 0b01101111; // PC6+7-Pin NUR bei babyorangutan (TQFP+MLF)
PORTC = 0b10100000; // PC0=LHeart/~beat, PC1=GND, PC2=LEDTst
// PC3=GND, PC4-ADC/Srv-Poti ohne Pullup, PC5=VccPoti!!
//
// PD5/PD6 = M1B/M1A, PD7 = Taste: PullUP !
DDRD = 0b01100010; // RX/TX-PD0/1, PD2 = INT0-Servopuls,
PORTD = 0b10010101; // Pull Ups aktivieren, mit pololuMot AUCH bei INT0/~1
//
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for(i=0; i<10; i++) // LEDs blinken bevor Interrupts erlaubt sind ==> um
{ // ungewollte Resets u.ä. besser erkennen zu können
// ###>>> HeartbeatLEDs schalten Aode -<|- Portpin <<<###
SetBit(PCLED, LHeart); // gnLED/PC1 EIN, HELL << ist (m)ein Macro
SetBit(PORTB, PB5); // gnLED/PB EIN, HELL
wms(3); // << ein simples wait Millisekunden
ClrBit(PCLED, LHeart); // LED aus
ClrBit(PORTB, PB5); //
wms(97); //
SetBit(PCLED, LEDTst); // rtLED/PC6 EIN, HELL
SetBit(PDLED, LDr); // rtLED auf PD1, babyo-spezifisch = onBoard + TX !!
wms(3); //
ClrBit(PCLED, LEDTst); // LED aus
ClrBit(PDLED, LDr); // LED aus
wms(97); //
} // Ende von for(i=0; i<nn; i++)
ClrBit(PDLED, LDr); // rtLED auf JEDEN Fall aus
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// ##>> JETZT werden die Timer-/Zeit-Größen gesetzt, siehe Header ~tmr~.h
Lesezeichen