AN2131 USB CONTROLLER

Gast #161077
Hallo an alle....

Hab folgendes Anliegen.....

Beschäftige mich grad mit Mikrocontroller-Programmierung mittels
C-Sprache und habe einen USB-Controller der Firma Cypress mit der
Kennung AN2131Q...
Dieser besitzt 3 Ports (A,B und C)
An Port C würde ich gern 1-2 LEDS ansteuern können mittels eines
C-Programms.... Jedoch sind mir die Befehle für USB-µController noch
nicht vertraut, um solche Funktionen zu realisieren...
Als Compiler nutze ich den Keil....
Könnte mir jemand helfen, welche Befehle ich zum Setzen und Rücksetzen
von LEDs benötige? Gelten die auch für USB-Controller??

MFG  Christian Wiemann
Gast
Hallo,

stimmt, sorry, ist schon etwas her, dass ich mit dem Teil gearbeitet
habe. Das Tutorial finde ich trotzdem gut, schadet sicher nicht.

Gruss
  Alexander
Gast
So läuft es bei mir mit Keil
Gruß Walter


#include <stdio.h>  /* Standard I/O-Funktion */
#include <string.h>     /* Standard I/O-Funktion */
#include <math.h>  /* Standard Mathematik-Funktion */
#include <regan21.h>  /* Controller AN2131 */

/* Datenrichtung: 0 = Eingänge, 1 = Ausgänge */
#define OUTA  0x7F96;  /* PortA Ausgaben */
#define OEA    0x7F9C;  /* Datenrichtung PortA */
#define PINSA  0x7F99; /* PortA Eingaben */
#define OUTB  0x7F97;  /* PortB Ausgaben */
#define OEB    0x7F9D;  /* Datenrichtung PortB */
#define OUTC  0x7F98;  /* PortC Ausgaben */
#define OEC    0x7F9E;  /* Datenrichtung PortC */

volatile unsigned char xdata *c_Adr_Ptr;/* allg. Adr-Zeiger */
volatile unsigned char xdata *c_PortA_Ptr;/* PortA-Zeiger */
volatile unsigned char xdata *c_PortB_Ptr;/* PortB-Zeiger */
volatile unsigned char xdata *c_PortC_Ptr;/* PortB-Zeiger */

/* Port A auf Eingang setzen */
c_PortA_Ptr = OEA;
*c_PortA_Ptr = 0x00;  /* Port A als Eingang */
c_PortA_Ptr = PINSA;

/* Port B auf Ausgang setzen */
c_PortB_Ptr = OEB;
*c_PortB_Ptr = 0xFF;  /* Port B als Ausgang */
c_PortB_Ptr = OUTB;

*c_PortB_Ptr = 0xFC;

/* Port C auf Ausgang setzen */
c_PortC_Ptr = OEC;
*c_PortC_Ptr = 0xFF;  /* Port C als Ausgang */
c_PortC_Ptr = OUTC;
*c_PortC_Ptr =  0x20;
Gast
Vielen Dank Walter....
Jedoch bleibt mir ein Problem offen....

Diesen Code hab ich insofern modifiziert, das ich nur die Anweisungen
für den Port C drin gelassen habe, da mich Port A und B nicht
interessieren.
Auf Port C ist bei mir beim 7.Bit (PC7) eine LED angeschlossen. Diese
möchte ich demnach an- und ausschalten.
Mein Code sieht demnach folgendermassen aus:

#define OUTC 0x7F98; /* PortC Ausgaben */
#define OEC 0x7F9E; /* Datenrichtung PortC */

void main ()
{
volatile unsigned char xdata *c_PortC_Ptr;/* PortC-Zeiger */

/* Port C auf Ausgang setzen */

c_PortC_Ptr = OEC;
*c_PortC_Ptr = 0x80; /* Port C als Ausgang (PC7) */
c_PortC_Ptr = OUTC;
*c_PortC_Ptr = 0x80;

}
Mit OEC wird ja festgelegt, ob mein PIN am Port C (bei mir ist es Pin 7
--> PC7) ein Input oder Output ist. Und mit OUTC schreib ich doch meinen
Wert, welcher dann am Output Pin gestzt werden soll.

Leider geht die LED nicht an, wenn ich das Programm auf den Controller
schreibe... Nun wollt ich dich fragen ob ich zufällig was vergessen
habe bzw. ich was nicht berücksichtigt habe....

Würde mir sehr helfen.

MFG Christian Wiemann
Gast
Hallo Christian,
PC7 ist das 8. Bit (PC0 - PC7)

schalte mal alle 8 Leitungen ein und aus, dann müßtest du was sehen.

/* Port C auf Ausgang setzen */
c_PortC_Ptr = OEC;
*c_PortC_Ptr = 0xFF;  /* Alle Leitungen Port C als Ausgang */
c_PortC_Ptr = OUTC;
*c_PortC_Ptr =  0xFF;

anschliessend alle Ausgänge mit
*c_PortC_Ptr =  0x00;
auf 0 setzen.

wie überträgst du eigentlich das Programm in den Controller ?


Gruß Walter
Gast
Hallo Walter....

Bin grad zuhause und hab den Controller leider nicht hier...
Ich probier das morgen...

Was die übertragung angeht, lasse ich es mit Keil in ein Hex-File
umwandeln und übertrage das Hex-File mit Hilfe des Anchor EZ-USB
Control Panel auf den Controller....

Ich probier es morgen....

P.S.  Bei den Adresszuweisungen in der Zeile: c_PortC_Ptr = OUTC;
Muss da nicht noch ein Und-Zeichen vor dem OUTC bzw. OEC?
Also so: c_PortC_Ptr = &OUTC; c_PortC_Ptr = &OEC;
??????
Gast
Hallo Christian,
wenn dein Programm nicht funktioniert, probier mal das untenstehende
Programm aus, habe es bei
http://www.elexs.de/modulbus/technik/ezusb.html
gefunden und in C umgeschrieben (EZdl.frm)

Wenn das nicht funktioniert, hast du ein Hardwareproblem.

P.S. vor OUTC bzw. OEC darf kein &-Zeichen sein


void main(void)
{
 char xdata *Adr_Ptr;
 char A;

   A = 0xFF;
  Adr_Ptr = 0x7F9E;
  *Adr_Ptr = A;
  Adr_Ptr = 0x7F98;

  do
  {
    A--;
    *Adr_Ptr = A;
  }while(1);
}
Gast
Hallo Christian

hab mir auch den USB-Controller der Firma Cypress zugelegt und komm
noch nicht so richtig mit dem Control Panel zurecht. Kannst du mir kurz
erklären wie du ein Hex File übertrage kannst und muss ich vorher noch
Einstellungen vornehmen, um ein ersten Programm zu testen.
Gruß Andre
Gast
Hallo Christian,
Mich würde interessieren, woher Du den Chip hast, suche dringend diesen
Typ. Falls Du weitere Probleme hast, kannst Du mich auch direkt
kontaktieren (th_keil@arcor.de)
Gruß Thomas

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.