Forum: Mikrocontroller und Digitale Elektronik Interruptbasierende Taktsignal und Timingsteuerung


von Bernhard N. (bernieserver)


Lesenswert?

Hallo,

ich möchte eine interruptbasierende Kommunikation mit dem SHT75 
Temperatur / Feuchtigkeitssensor auf einem ATMega32 (16 Mhz) entwickeln. 
Es werden pro Sensor neben der Spannungsversorgung ein Takt (der 
beliebig klein werden kann) und das Datensignal benötigt, dass zum 
Senden von Befehlen und zum Empfangen von Messwerten dient.

Dabei steht im Datenblatt, dass bestimmte Timings wie die Setupzeit 
(also wie lange im Voraus zum Takt das Datenpegel anliegen muss) und 
weitere Zeiten eingehalten müssen. Ich dachte mir daher, den Timer 32 so 
schnell auslösen zu lassen wie die benötigte Taktfrequenz der 
Clockleitung. Jedesmal lasse ich dann einen Interrupt auslösen. So kann 
ich dann 1/32 Tclk vor der nächsten Flanke schon das Datensignal 
hochziehen bzw. Pins auf Ausgang oder Eingang sezten usw.

Nur leider weiß ich nicht in wie weit das überhaupt realisiert werden 
kann. Zuerst wollte ich den Sensor mit 50 kHz takten. Ich denke, dass 
ist dann zu schnell, da dann der Timer mit 50kHz*32 = 1,6 Mhz takten 
müsste und so nur 10 Takte zum Durcharbeiten der ISR Zeit blieb. :) 
Daher möchte ich mit den Takt für den Sensor auf unter 10 kHz 
runtergehen.

Frage: Wer hat so etwas schon mal realisiert?
Wie geht man ohne großartig Timer zu verschenken und ohne dauernd 
irgendwelche Register zu pollen überhaupt an ein solches Thema ran?

Gruß

Bernhard N.

von Falk B. (falk)


Lesenswert?

@  Bernhard N. (bernieserver)


>weitere Zeiten eingehalten müssen. Ich dachte mir daher, den Timer 32 so
>schnell auslösen zu lassen wie die benötigte Taktfrequenz der
>Clockleitung. Jedesmal lasse ich dann einen Interrupt auslösen. So kann
>ich dann 1/32 Tclk vor der nächsten Flanke schon das Datensignal
>hochziehen bzw. Pins auf Ausgang oder Eingang sezten usw.

Kann man machen, erscheint aber nicht sinnvoll, weil dein uC in der 
Zwischenzeit wenig sinnvolles machen kann. Mach es einfach per Polling 
und mit "normalen" Warteschleifen, das ist hier voll OK.

MFG
Falk

von Peter D. (peda)


Lesenswert?

Bernhard N. schrieb:
> Dabei steht im Datenblatt, dass bestimmte Timings wie die Setupzeit
> (also wie lange im Voraus zum Takt das Datenpegel anliegen muss) und
> weitere Zeiten eingehalten müssen.

Das sind doch nur wenige 100ns.
Das ganze Getöse mit Interrupt eintreten und verlassen dauert erheblich 
länger.
Mach alles direkt hintereinander und 1-2 NOP zwischen den einzelnen 
Aktionen reicht dicke.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.