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*.Ich erkenne das das Programm nicht startet daran, das das Display eben dunkel bleibt und nichts weiter passiert ..
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







Zitieren

Lesezeichen