Forum: Mikrocontroller und Digitale Elektronik AT89S8252 mit AD Converter TLC549


von Andre F (Gast)


Lesenswert?

Hallo,
ich versuche im Rahmen eines Schulprojektes einen Schrittmotor
anzusteuern. Dazu habe ich mir überlegt das es schön sein
könnte die Vref Spannung über die ich den Maximalen Motorstrom
bestimmen kann über ein Display (2x16 Zeichen) auszugeben.
Das ansteuern des Displays bzw. des Motors funktioniert wunderbar.

Nur bekomme ich kein vernünftiges ergebnis aus der DATA Leitung
des AD - Converters.
Nach einigem ausprobieren habe ich herrausgefunden das der Port Pin
P2.7 an dem ich DATA angeschlossen habe das Signal auf Low zieht. Als
gegenmaßnahme habe ich versucht vorher den Port auf 1 zu setzen damit
das Potential intern nicht mehr auf Masse gezogen wird.
Jedoch wird ich jetzt ein ständiges High signal am Port ausgelesen.

Meine frage ist nun ob mir villeicht jemand sagen könnte wie ich dieses
Problem lösen könnte - am besten so das ich nicht viel an der Schaltung
ändern muss da ätzen bei uns an der Schule immer etwas schwierig ist.
Vielen Dank schonmal im Vorraus :-) danke

mfg.: Andre F.

von dave (Gast)


Lesenswert?


von Andre F (Gast)


Lesenswert?

Ja diese Webseite hatte ich schon gefunden.
Solange ich das DATA Beinchen des IC nicht mmit dem MC verbinde
bekomme ich auch wunderbahre Werte wenn ich mit dem Voltmeter
nachmesse.
Die Werte stimmen nur nicht bzw. werden auf 0 gezogen sobal das
Beinchen am Controller angeschlossen ist.

von Ralf Rosche (Gast)


Lesenswert?

hi hier der source code für den 8051 in wickenhäuser c geschrieben:
#define clock P1_B0
#define out P1_B1
#define cs P1_B2
for(;;){
    c=0;
    P1 &= ~(1 << cs);;
     for(i=7;i>=0;i--)
      {
      P1 |= (1 << clock);
      //P1 &= ~(1 << data_out);
      if (P1 & (1 << out)){c |= (1<<i);}

      P1 &= ~(1 << clock);
      #asmline nop;
      #asmline nop;
      }
        P1 |= (1 << cs);;
        printf("%3d%s",c,"\n");
    _wait_ms(10);}
in basic gehts auch habe es auf dem elektor 89s8252flashboard
probiert:
90 rem clock=1
100 rem out=2
110 rem cs 4
120 port1=255
130 port1=251
140 for k=1to 2
150 b=0
160 for i=7 to 0 step -1
170 port1=250
180 inp=port1.and.2
190 if inp =2 then b=b+2**i
200 port1=251
210 next i
220 port1=255
230 next k
231 f=int(b/100)+48
232 gosub 475
260 f=b-((f-48)*100)
262 f=int(f/10)+48
263 gosub 477
264 f=b-int(b/100)*100 - (f-48)*10 +48
278 gosub 477
279 goto 140
280 end
die gosubs sind für die ausgabe auf dem lcd braucht man nicht der
gelesene wert steht in variable b.
gruss ralf

von Andre F (Gast)


Lesenswert?

Vielen Dank für die Antwort,
bei mir lag das Problem wie sich später herrausgestellt hat daran das
der MC oder der AD-Converter das Signal am Data ausgang nach sehr
kurzer Zeit auf High zieht, das Signal jedoch wenn man schnell genug
ist ausgelesen werden kann, Vorher hatte ich immer eine gewisse
Verzögerung bevor ich das Signal asugewertet habe.

Die Lösung werde ich aber auch einmal ausprobieren da meine nicht die
beste ist.

Nochmal Dankeschön.

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.