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
Das bedeutet das die nächste Wandlung erst durchgeführt wird, wenn das Ergebnis der vorherigen Wandlung ausgelesen wurde
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.