www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Delay Funktion


Autor: jb_dani (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal Hallo alle zusammen!
Ich habe ein Problem mit dem Timer Funktionen unter einem 8051 
Mikrokontroller!
Ich arbeite mit dem Keil Compiler und wollte eine richtige Delay 
Funktion in mein Programm implementieren, der man als Parameter die 
Wartezeit (z.B. in ms oder us) übergibt.
Ich hab ne ganze Weile im Internet nach einer guten Lösung gesucht und 
auch was gefunden, und zwar auf der Keil Homepage (siehe Anhang).
Doch jetzt haben die eine Berechnung ganz am Anfang des Files

#define TIMER0_COUNT 0xDC11 /* 10000h - ((11,059,200 Hz / (12 * FREQ)) - 
17) */

die ich nicht kapiere.

Kann mir mal jemand erklären warum 10000h - ....... ?????????????

Autor: Stefan Hütter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Was die berechnung soll, weis ich auch nicht, aber was haltest du von 
dieser Warteschleife(siehe Anhang)?

Autor: Ingo B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es damit?

//---------------------------------

unsigned int Set_1ms (unsigned int new_time)
{
  return(Clock_1ms + new_time);
}

bit Check_1ms (unsigned int time)
{
  return((time - Clock_1ms) & 0x8000);
}
//-------------------------
Die Variable Clock_1ms zählst Du im TimerInterrupt hoch.
Die Abfrage sieht dann so aus:


unsigned int Zeit=Set_1ms(150);

 if (Check_1ms(Zeit))
   {
     // mach etwas....
     Zeit = Set_1ms(150);
   }

//--------------------------------

Das hat den Vorteil, das Dein Polling nicht komplett von angehalten 
wird. Im Gegensatz zu einer Warteschleife...

Bis dann,
Ingo!

Autor: Jens Gerdes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte die eigentliche Frage beantworten:
10000h deshalb, weil der Timer im 8051 raufzaehlt und nach 0FFFFh seinen 
Ueberlauf hat.

Jens

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.