Re: Millisekunden Timer mit SFR Kategorie: CC2-Unit & Appl.Board / CC2-Station (von Cris - 2.05.2003 14:15) | |
Als Antwort auf Re: Millisekunden Timer mit SFR von rĂĽdi und kone - 30.04.2003 12:20
| |
Hallo Ihr Hacker von der Alb, zunächst einmal sorry für die misslungene Anrede. Ich war der Meinung, irgendwo etwas von Klaus gelesen zu haben. Hoffentlich seid Ihr nicht sauer. Jetzt zu Eurem Problem. Ihr woll einen Millisekunden-Timer bauen. Warum tut es nicht der Timer vom Betriebssystem system.timer()? Mit den Timern 7 oder 8 lässt sich auch so etwas machen. Das hat aber ein paar Nachteile. Diese beiden Timer gehören zur CAPCOM6- Einheit des Prozessors. Diese steuert z.B. die PLM-Ausgänger der CC2 an. D.h. wenn Ihr die Timer anderweitig verwendet, könnt Ihr die PLM-Ausgänge nicht nutzen. Die CAPCOM6 Einheit kann mit den Vorteilern in T78CON, Reload-Werten und Werten in den CAPCOM-Registern komplexe Impulsfolgen an den 3 PLM-Ausgängen generieren. Die Steuerung der Timerfrequenz ist nur sehr grob mit 8 Vorteilerwerten möglich. Diese sind im schon erwähnten Manual 2 des Prozessors auf Seite 16-6 erklärt. Für den Timer sind die Bits 0...3 für diesen Vorteilerwert verantwortlich. Der Werte 0B0010 macht eine Auflösung von 1,6µs und eine Periodendauer von 105 ms. Wenn Ihr also 1000 ms wartet, ist der Zähler mit dieser Einstellung fast 10 mal übergelaufen. Ein Reeload von 0x4000 sorgt dafür, dass der Zähler nicht bei 0 sondern 0x4000 startet. Probiert einmal diese Einstellung > sfr.set_T7REL(0x0000);         //setze Reload-Wert Timer 7 > sfr.set_T7IC(0B0000000000000000);    //Interrupts Timer 7 auschalten > sfr.set_T78CON(0B0000000001001111);   //Timer 7 starten > > int t3, p3; > > while(1) > { >  t3 = 0; >  t3 = sfr.get_T7(); > sleep(100); >  p3 = 0; >  t3 = sfr.get_T7(); > } Die mit sfr.get_T7() eingelesenen Zählerstände müsst Ihr dann noch in Millisekunden umrechnen. Beste Grü�e Cris | |
Antwort schreiben Antworten: Re: Millisekunden Timer mit SFR (von rüdi und kone - 2.05.2003 21:39) |