Forum: Mikrocontroller und Digitale Elektronik HILFE: Infineon C515C und UART SCC2692


von noch_ein_gast (Gast)


Lesenswert?

Hallo Forum.

Leider hat die SUCHEN- Fkt. und mrs. google mir nicht weitergeholfen. 
Deshalb baue ich jetzt auf euch, da hier schon viel nützliches zufinden 
war.

Ich betreibe einen C515C und es ist soweit alles klar, I/O Pins lassen 
sich beschreiben und auch lesen...

Jetzt muss ich einen SCC2692 in Betrieb nehmen und bin noch am 
verzweifeln mit /RD und /WR. Beide Signalleitungen sind mit dem Chip 
verbunden, allerdings kann ich kein einziges Register lesen. Deshalb 
weiß ich nicht, ob das Schreiben der Register funktioniert.

Mit dem Oszi gemessen habe ich bereits Adress-, Datenbus, sowie /CS und 
/RD, auch /WR. Leider wird das /RD ni aktiviert. Jetzt habe ich im 
Internet was gefunden, dass man irgendwie das /PSEN noch mit verwenden 
muss.

Falls es weiterhilft, das Board ist auf einem miniMODUL515C von Phytec 
verbaut.

Vielen Dank für Eure Hilfe

von Helmut L. (helmi1)


Lesenswert?

/PSEN ist nur dafuer da den Programmspeicher zu enablen.

Was hast du den alles verbunden ?

Prozessor            Duart
/RD ------------------ /RD
/WR ------------------ /WR
A0..3 ---------------- A0..3


So was du jetzt noch beschalten musst ist das /CEN Signal.
Hast du noch externens RAM auf deiner Platine ?
Wenn Ja must du durch eine Dekodierlogik dafuer sorgen das entweder das 
RAM eingeschaltet wird oder der Duart.

Das RAM wird normalerweise mit CS = 0 am RAM eingeschaltet dazu die 
invertierte Funktion bilden und das  an /CEN vom  Duart anschliessen.
Und auch den Reset nicht vergessen.

Ansonsten muesste ich einen Schaltplan sehen um genaueres zu sagen.

Gruss Helmi

von Peter D. (peda)


Lesenswert?

noch_ein_gast wrote:
> Leider wird das /RD ni aktiviert.

/RD wird nur beim Befehl "MOVX A,@DPTR" benutzt.


Peter

von noch_ein_gast (Gast)


Lesenswert?

Hallo Peter,

gibt es andere Möglichkeiten auf den Chip zuzugreifen? Habe irgendwo 
gelesen, dass man /RD mit /PSEN ver-x-odern muss... anderswo sollte man 
es ver-n-ANDen.

vielen dank für die hilfe

von Helmut L. (helmi1)


Lesenswert?

>gibt es andere Möglichkeiten auf den Chip zuzugreifen? Habe irgendwo
>gelesen, dass man /RD mit /PSEN ver-x-odern muss... anderswo sollte man
>es ver-n-ANDen.

Das gilt nur fuer externe RAMs.

So kann man aus der Harvard Architektur eine von Neumann Architektur 
machen. Also man kann dann im RAM Programme ausfuehren was sonst nicht 
geht. Fuer IO-Bausteine brauchst du das nicht zu machen.

Ueberigens wenn du einen Keil C Compiler hast geht der exterene Zugriff 
mit

XBYTE[portaddr] = Wert   zum setzen
Wert = XBYTE[portaddr]   zum lesen


Gruss Helmi

von noch_ein_gast (Gast)


Angehängte Dateien:

Lesenswert?

Also,
#
@helmi.

hier die beschaltung des UART. Das Chipselect-Signal wird schon 
vorkodiert geliefert, liegt auch an (mit Oszi gemessen). Allerdings 
fehlt mir bei aktiviertem Chip-Select der /RD - Strobe.

von noch_ein_gast (Gast)


Lesenswert?

Helmi?

also mit XBYTE[ADDR] zugreifen habe ich probiert...

geht mit keil nicht zu compilieren... trotzdem danke

von Helmut L. (helmi1)


Lesenswert?

>geht mit keil nicht zu compilieren... trotzdem danke

Wie so geht das nicht zu compilieren ?

Hast du auch die absacc.h  eingebunden ?

Schaltplan schein soweit OK zu sein.

von noch_ein_gast (Gast)


Lesenswert?

Hallo nochmals...


also, ging jetzt zu kompilieren... Danke für den Tipp...
Allerdings gab es immer noch keinen read-strobe /RD... Irgendwie greift 
der auf was anderes zu... mit hilfe des mon51 kann ich den 
entsprechenden registerwert ja auch zurücklesen...

von Helmut L. (helmi1)


Lesenswert?

Also mit

#include <absacc.h>
void main(void)
{
   char ch;
   while(1)
   {
     ch = XBYTE[ADDR];
   }
}

Hast du keine Pulse am RD pin vom Prozessor ?

von noch_ein_gast (Gast)


Lesenswert?

@helmi...

also ich habe dein programm übersetzt und messe am /RD Pin konstante 5V, 
allerdings habe ich jetzt am /PSEN Chip reichlich aktion...

von noch_ein_gast (Gast)


Lesenswert?

@helmi


Also habe jetzt auch den read_strobe... soweit erstmal danke...

warum es jetzt getht? keine ahnung...

Ich habe alleridngs noch weitere Fragen, ob schon mal jemand mit dem 
UART gearbeitet hat...
Ich bekooe den baudrate generator irgendwie nicht zum laufen...

von Ralf (Gast)


Lesenswert?

> also ich habe dein programm übersetzt und messe am /RD Pin konstante 5V,
> allerdings habe ich jetzt am /PSEN Chip reichlich aktion...
Was sagt der ASM-Output? Wird wirklich mit MOVX a,@dptr gearbeitet?
Was macht das CS1-Signal? Kannst du da was sehen?

PSEN wird massig arbeiten, wenn das ein Controller ohne internes Flash 
ist.

Noch etwas, hast du das Schaltplan-Symbol selbst gemacht?

Ralf

von Ralf (Gast)


Lesenswert?

> Ich habe alleridngs noch weitere Fragen, ob schon mal jemand mit dem
> UART gearbeitet hat... Ich bekooe den baudrate generator irgendwie nicht
> zum laufen...
Zeig deinen Code, und wir zeigen dir, wo der Fehler ist :)

Ralf

von Peter D. (peda)


Lesenswert?

noch_ein_gast wrote:
> Ich habe alleridngs noch weitere Fragen, ob schon mal jemand mit dem
> UART gearbeitet hat...

Also ich nicht.
Wenn ich mal ne 2.UART brauche, nehme ich entweder nen MC mit 2 UARTs 
oder mache eine in Software.
Mit der Capture/Compare-Unit kann man sehr gut ne SW-UART programmieren.


Hab grad mal bei Farnell geguckt, der SCC2692 ist ja extrem teuer und 
nur als DIP verfügbar.


Peter

von noch_ein_gast (Gast)


Lesenswert?

Vielen Dank an alle.

Ich konnte das Problem lösen...

Es lag daran, dass der Controller ständig auf den internen XRAM 
zugegriffen hat und nicht die Daten auf dem UART gelesen bzw. 
geschrieben hat.

BTW, danach musste man noch das MonitorPRG entfernen und das eigene PRG 
direkt flashen.

Trotzdem danke für die zahlreichen Tipps.

MfG

noch_ein_gast

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.