Forum: Mikrocontroller und Digitale Elektronik µC-AD Wandler,wait for read-verwendungszweck?, (C166)


von Feldi (Gast)


Lesenswert?

Hallo,
Bei meinem C166(in Assemblersprache)
kann man beim A/D Wandler (ADCON Register) "Wait for read" 
(ADWR)einstellen!
Wozu benötige ich dies? Wann muss ich dies einschalten bzw. ausschalten? 
Wenn jemand ein Bsp. nennen könnte wäre es klasse!

Gruß feldi

von Ralph (Gast)


Lesenswert?

Das bedeutet das die nächste Wandlung erst durchgeführt wird, wenn das 
Ergebnis der vorherigen Wandlung ausgelesen wurde

von Feldi (Gast)


Lesenswert?

1
At ports P8.7 and P8.6 of the C166 there are two push-buttons without anti-bouncing. At port P2 (16
2
bit) 16 LEDs are connected in order to display the output signal level of P2.
3
Design a program that converts the analog voltage at port P5.0 on each action at push-button P8.7
4
and displays the result as digital value into the LEDs at port P2. The end of conversion is to be
5
waited for by polling at the Int Request Bit (ADCIR) of the ADC.
6
On action at push-button P8.6 the program is terminated.
7
Comments: - The initial setting of port P2 has to be logical 0.
8
- The anti-bouncing of P8.7 is done by a SW-Delay (ca 20ms).
Weshalb wird in diesem Fall das Bit ADWR nicht gesetzt (wait for read 
nicht eingeschaltet)?
Könnte ich in dem Fall auch den wait for read setzen (einschalten)?

Gruß feldi

von Ralph (Gast)


Lesenswert?

Das Bit setzt du in der Konfiguration des ADC, da wo du auch die 
Wandelzeiten und so weiter einstellst.

Wenn das Bit dann aktiviert ist, wird eine Wandlung ausgeführt, danach 
steht dann der ADC bis das Ergebnis aus dem Resultregister gelesen wird.

Und ja das kannst du so machen, aber du musst es nicht.

Das hängt von deinem Programmablauf ab, ob dieses Bit( Funktion) des ADC 
dir etwas bringt oder nicht.

von Karl H. (kbuchegg)


Lesenswert?

Feldi schrieb:

> Weshalb wird in diesem Fall das Bit ADWR nicht gesetzt (wait for read
> nicht eingeschaltet)?

Weil es nichts bringt, nach dem Auslesen des ADC die 2 oder 3 Taktzyklen 
einzusparen, die ein programmgesteuertes Neustarten der Wandlung 
bedeuten.

>  on each action at push-button P8.7

Das ist um viele Größenordnungen langsamer als diese paar einsparbaren 
Taktzyklen. Ausserdem weiß dein Programm ja nicht, wann das nächste mal 
der Benutzer auf den Taster rumdrücken wird.

Wenn du eine Pflanze hast, die alle 10 Jahre blüht und du sollst die 
Überwachen um nur ja das nächste Aufblühen nicht zu verpassen, dann ist 
es völlig unerheblich, ob du mit deiner Überwachung nach dem letzten 
Verblühen 5 Sekunden später anfängst oder nicht.

von feldi (Gast)


Lesenswert?

Danke für eure Antworten!
Dann benötige ich hir auch kein ADWR:

Erstellen sie eine Messroutine, die ein 10KHz Signal abtastet
und einen Pufferbereich von 1000 Messwerten (je 1 Byte) anlegt,
daraus den Mittelwert errechnet,
und diesen auf einer 2 stelligen 7-Segmentanzeige anzeigt.
Die 7-Segmentanzeige sei an P1(linke) und P2(rechte) angeschlossen,^
mit den Elementen a,b,c,d,e,f,g an Bit 0,1,2,.. usw.
1
   b
2
   --
3
a |  | c
4
   -- g
5
f |  | d
6
   --
7
   e

Dann benötige ich hir aucj kein "wait for read"! da die Abtastung des
10 KHZ Signals ja wesentlich langsammer ist als mein Controller der mit 
40KHZ betrieben wird.
Oder würdet ihr den ADWR setzen?

Gruß feldi

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.