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.
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.