Forum: Mikrocontroller und Digitale Elektronik AT89C51 und AT89C52


von Monty (Gast)


Lesenswert?

Hallo,

ich habe eine Frage zu den beiden µC. Ich habe bis jetzt immer den 51er 
benutzt.

Ich gehe von den Ausgängen des ADC0808N direkt auf den Pins vom 51er 
gegangen. Und konnte so das Ergebnis Auswerten

Das Programm und der Programmcode haben wie erwartet funktioniert.
Ich bin jetzt auf den 52er umgestiegen und komischerweise funktioniert 
das Programm nicht mehr.

Das Problem ist folgendes. Ich lege die Eingänge vom 51er P1 = 0 Aktiv. 
Damit er sie Intern auf 5 V hochziehen kann.
Wen ich bei den P1er Pins die Spannung vom ADC messe liegen nur noch ca. 
1,1V an. D.h ich muss sie irgendwie intern wieder auf 5 V hochziehen 
damit ich sie abfragen kann.
Beim 52er mache ich das auch aber er zieht Spannung nicht hoch ?

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Mit freundlichen grüßen
Monty

von Peter D. (peda)


Lesenswert?

Lade mal genau das gleiche Programm (Hex-File) in den C52.
Der ist zu 100% abwärts kompatibel.


Peter

von Jobst M. (jobstens-de)


Lesenswert?

Wenn Du einen Port des 51/52ers als Eingang benutzen möchtest, mußt Du 
diesen auf H setzen.
Wenn Du ihn auf L setzt, und extern 5V anlegst, zerstörst Du damit den 
Porttransistor.

Ansonsten ist es so, wie Peter schon gesagt hat. Der 52er hat nur einen 
Timer und 128Byte RAM mehr.


Gruß

Jobst

von Monty (Gast)


Lesenswert?

Danke Jobst du hattest recht, bin falsch gelegen.

Leider geht es mit dem Hex File auch nicht. Laut Datenblätter und Atmel 
müsste es 100 % Kompatibel sein. Wen ich mit dem Oszi beim ALE Messe 
arbeitet er auch (beim 52er.). D.h der µC Funktioniert aber reagiert 
nicht auf die Eingangsabfrage.

Ich benutzte Bascom und Galep III für die Programmierung.
Wo könnte noch ein Fehler sein ?
Hatte jemand so ein Problem schon einmal ?

Mit freundlichen grüßen
Monty

von chaos in der pipeline (Gast)


Lesenswert?

>Wo könnte noch ein Fehler sein ?

Und zum 211744-ten Mal: Ohne Bekanntgabe der Schaltung und des 
Programmes ist alles andere Stochern im Kaffesatz oder die Antwort ist:

Pin 42 ist falsch rum angeschlossen.

von Monty (Gast)


Angehängte Dateien:

Lesenswert?

Bild von dem Schaltplan und ein kurzer Code zum testen was passiert.
1
$regfile = "8052.dat"
2
$baud = 9600
3
$crystal = 11059200
4
5
6
  Dim A As Byte
7
  Dim Ad As Integer
8
  Dim D As Byte
9
10
  D = &B01111111
11
12
  P3 = 1
13
14
Mainloop:
15
16
'ADC Ansteuerung ADC0808N
17
 P2.7 = 1                                                     '**  ADC ALE  --:..:---
18
                                                              '**  Channel 0
19
 P2.7 = 0
20
21
 P1.6 = 1                                                     '** Start  ...:---
22
23
 P1.5 = 1                                                     '** Clock ----
24
 P1.5 = 0                                                     '** Clock  ---:..
25
 P1.5 = 1                                                     '** Clock      ..:----
26
27
 P1.6 = 0                                                     '** Start  ---:...
28
29
 For Ad = 1 To 260 Step 1
30
31
 P1.5 = 0
32
33
 P1.5 = 1
34
35
36
 Next
37
38
 P1.7 = 1                                                     '** OE ADC ....:-----
39
 A = P3 And &B11111100                                        '** Read ADC and kill LSBs
40
 P1.7 = 0                                                     '** OE ADC -----:.....
41
42
 A = Not A
43
44
45
46
Shiftout P1.0 , P1.1 , A , 0
47
48
49
Goto Mainloop

von chaos in der pipeline (Gast)


Lesenswert?

Leider kann ich die Bildlaufleisten in Deinem Screeen-Shot nicht 
bedienen. Willst Du wirklich, dass man Dir hilft?

Was im Ausschnitt auffällt/unklar ist - der Reset-Pin ist nicht 
angeschlossen.

Deine Bascom-Code soll WAS machen?

von Peter D. (peda)


Lesenswert?

Monty schrieb:
> P3 = 1

Du lügst ja, das sich die Balken biegen.
Das kann auf dem 89C51 schon nicht funktioniert haben!

Damit setzt Du nur P3.0 auf 1 und der arme ADC ist kurzgeschlossen.


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
Noch kein Account? Hier anmelden.