µC-AD Wandler,wait for read-verwendungszweck?, (C166)

Gast #2522612
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
Gast #2522726
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.
#2522753
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.
Gast #2523680
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren