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
Lade mal genau das gleiche Programm (Hex-File) in den C52. Der ist zu 100% abwärts kompatibel. Peter
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
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
>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.
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 |
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.