Forum: Mikrocontroller und Digitale Elektronik Ext Bus Controller ( EBC ) des XC167


von Daniel G. (Firma: Lust) (daniel_goebel)


Lesenswert?

Hallo Leute,

ich möchte gerne einen Quad Filter-Baustein ( AMC1210 ) von TI über den 
EBC des µC XC167 von Infineon ansteuern.

Folgendes Problem:

Man muss den AMC 1210 folgender Maßen beschreiben.

Man legt als erstes die Adresse an den Port0 des XC167. Nachdem ALE low 
ist, wird die Adresse in den ACM 1210 gelatcht. Daraufhin wird als 
erstes das MSB des 16_Bit_Datenwortes ( 16_Bit_Datenwort um die Register 
des ACM1210 zu beschreiben, allerdings hat der ACM1210 nur einen 
8_Bit_Adress-und Datenbus) angelegt, das wiederrum vom AMC1210 gelatcht 
wird. Als letztes wird dann noch das LSB an den AMC1210 angelegt und 
gelatcht,sodass ein 16_Bit_Datenwort eingelesen wurde. Nun hätte man 
einen Schreib-Vorgang beendet.


Meine Frage nun: Kann man diese Vorgehensweise mit dem EBC realisieren?

Die EBC legt doch eigentlich nur eine Adresse an den Bus und liest bzw. 
schreibt ein 8-bzw.16_Bit_Datenwort.

Gruß Daniel

von Mark de Jong (Gast)


Lesenswert?

Hallo Daniel,

Der XC167 kann doch denn 8-bit multiplexed bus,
für einen CSx diese bus variante nehmen, dann musste alles von XC167 
gemacht werden.

Grüße Mark,

von Daniel G. (Firma: Lust) (daniel_goebel)


Lesenswert?

Hallo Mark,

das ist soweit richtig, aber der EBC (8-Bit multiplexed) legt doch 
jediglich  ein 8_Bit_ Datenwort an. Danach würde eine neue Routine 
anfangen, indem er eine neue Adresse anlegt und dann ein neues 
8_Bit_Datenwort anlegt.

Allerdings muss der AMC1210 bei einer angelegten Adresse z.B 0x01 , erst 
das MSB angelegt bekommen und danach das LSB. Alles bei einem Zugriff. 
Die nächste Adresse wäre dann beim AMC1210 0x02 ( hier verweise ich auf 
die Registermap des AMC1210 
http://pdf1.alldatasheet.com/datasheet-pdf/view/161269/BURR-BROWN/AMC1210.html).

Registermap Beispiel:  Adresse     Interrupt Register Value
                         0x00                   0x0000 (16Bit)
                       Adresse     Filter1 Control Register Value
                         0x01                   0x0000

Das würde ja bedeuten, dass die EBC nur das MSB eines Registers 
beschreibt, wenn überhaupt.

Gruß Daniel

von Mark de Jong (Gast)


Lesenswert?

Hallo Daniel,

Ich habe doch mal das datenblatt vom AMC1210 gelesen, und Du hast recht.

So ein komische addressierung kannte ich noch nicht.

Dann bleibt nur noch pin togglen oder SPI übrich.

Grüße Mark,

von TManiac (Gast)


Lesenswert?

Hi,

Es gibt trotzdem zwei Möglichkeiten den Filter direkt zu betreiben.

1: SPI-Mode: Sollte mit der SSC realisierbar sein (habe ich selber noch 
nicht probiert)

2: Per Hardware Zugriff:
Das Verfahren ist dahin aus gelegt das man die Adresse nur übergibt wenn 
diese sich ändert. Dazu muss man das Protokoll halt selber realisieren. 
Man Übergibt einmal eine Adresse und fragt, wenn man will zB per 2x CS 
den Zustand ab. Das sind 4 Zeilen Assamblercode die prima per 
(Software)Interrupt verarbeitet werden können. und wenn die Adresse noch 
geändert werden soll, sind das 4 weiter Zeilen (wenn ich mich nicht (im 
Kopf) verzählt habe).

von daniel_goebel (Gast)


Lesenswert?

Könntest Du vielleicht den unter Punkt 2 beschriebenen Hardware-Zugriff 
noch mal etwas genauer erklären ?

Wäre Dir wirklich dankbar.

Gruß Daniel

von TManiac (Gast)


Lesenswert?

Sorry das die Antwwort einwenig gedauert hat.

Ich habe das Datenblatt des Filters nur überflogen, also korrigiere mich 
falls ich etwas falsch verstanden habe.

Prinzipiel handelt es sich bei dem Zugriff auf den Filter um ein 
parallelen BUS. Der Bus besteht aus den 8 Datenleitungen und den 4 
Steuerleitungen. Leider musst du eine Möglichkeit schaffen diese 12 Pins 
zur Verfügung zu stellen (ein Vorschlag dazu später). Es macht Sinn die 
Belegung so zu wählen dass die Datenleitungen auf ein 8bit-Port liegt, 
zb P1H (aber der XC167 hat ja genug ;).
Den Vorgang welchen ich als Hardware Zugriff bezeichnet habe, ist 
folgender:
1. die Pins des "DatenBusses" werden als Eingang für lesen und als 
Ausgang für schreiben (zb. Konfiguration) konfiguriert.
2. Es werden die entsprechenden Pegel auf die Steuerleitung gegeben (sie 
Datenblatt)
3(lesen). Es werden die Pegel des Daten in eine beliebige Variable 
geschrieben. man hat nun das erste Byte.
3(schreiben). die Daten müssen halt analog auf den Ausgang gelegt 
werden.
4=1. der Vorgang wird wiederholt um das zweite Byte zu lesen bzw. zu 
schreiben.
-> wenn man den Vorgang noch öfters wiederholt wird nach jedem zweiten 
Byte die Adresse incrementiert.

Da es keine maximal Zeiten zwischen den einzelnen Schritten gibt ist 
eine handhabung im in Software kein Problem.

Diese Schritte lassen sich in C per Funktion kapseln. Der µC stellt aber 
für ASM eine schöne Funktion zur Verfügung, welche die Handhabung 
genauso komfortabel gestaltet. Wird im UM als Software Traps bezeichnet. 
Hier werden der die Routine genauso geschrieben wie eine ISR. Der Aufruf 
wird durch auslösen eines Interruptes gehändelt.

Vorschlag zum Vergößern der Verfügbarkeit:
Wenn du den Bus zusammen mit anderen Senken nutzen möchtes schalte 
parallel zu den Filter ein Latch an den Datenbus. und nutze ein 
zusätzlichen Pin als Select für den Latch=Weitere Ausgänge. Sollte aber 
bei einem XC167 nicht nötig sein.

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.