Wartezeit einbauen, beim XC167

Gast #682972
Lesenswert?
• ▲
▼
Hallo,
ich habe die Frage in einem anderen Beitrag gestellt, aber da schaut 
keiner rein, denn die Überschrift sieht anderst aus, egal ich probier es 
noch ein mal:

Bei windows mit µVision programmiere ich einen XC167
Eigenltich möchte ich einfach eine LED ein und aus machen und damit man
sie blinken sieht, brauch ich eine Pause dazwischen. Wie kann ich das 
denn realisieren ohne, dass ich gleich nen Timer mitlaufen lassen muss 
und so.
Gibt es da in C nicht ein Befehl?

THX
Gast #683736
Lesenswert?
• ▲
▼
Achtung: Wenn Du  die Wartezeit mit einer idle-Schleife implementierst, 
paß auf, daß der Watchdog nicht zuschlägt! Falls Du ihn nicht 
deaktiviert hast oder über einen interrupt regelmäßig bedienst, ändere 
die Schleife:

for(i=0;i<=0xF0000;i++) {
    _srvwdt_();
}

Die skizzierte idle-Schleife hat halt den Nachteil, daß Du wirklich 
nichts anderes in dieser Zeit machen kannst.
Benutzt Du ein RTOS oder hast Du nur ein Hauptprogramm mit der 
klassischen Endlosschleife? Im letzteren Fall kannst Du ja den watchdog 
regelmäßig bedienen und einen einfachen Zähler mitlaufen lassen. Die LED 
kannst Du dann aus- / einschalten, wenn ein bestimmter Zählerstand 
erreicht wird:

#define LED_TIMEOUT 0xF0000L

sbit LED_PORT = ...
sbit LED_PORT_D = ...

main() {

    long int led_tmr = 0L;

    /* port direction = out */
    LED_PORT = 0;
    LED_PORT_D = 1;

    for (;;) {

        _srvwdt_();
        led_tmr++;

        if (led_tmr >= LED_TIMEOUT) {
            led_tmr = 0L;
            LED_PORT = !LED_PORT;
        }

        /* und hier alles andere */
        ...
    }
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren