Hallo, ich habe ein Fujitsu MB90F543 Board, leider komme ich nicht gans mit der Adressierung klarr, ich würde gerne die 12 Output pins ansprechen und später die 48 inputs pints. Die I/O Ports werden über ein Adressbus angesprochen. Wer schreiben , An welcher Adresse sich die Pins befinden? Gruß Tobias
Hallo Ich habe nun versucht ein kleinens Programm zu schreiben, was nur die Ausgange auf eins setzten soll. Vieleicht kann mir jemand sagen wa ich falsch gemacht habe. #include "mb90540.h" int Main() { int a; #define DB_READ DDR0 = 0x00 // Lesender Zugriff auf den Datenbus #define DB_WRITE DDR0 = 0xFF // Schreibender Zugriff auf den Datenbus #define DATABUS PDR0 #define ADDRESSBUS PDR2 // Definitionen fuer den 4 zu 16 Adressdecoder #define CS_IN1_1_8 0x00; #define CS_IN1_9_16 0x01; #define CS_IN1_17_24 0x02; #define CS_IN2_1_8 0x03; #define CS_IN2_9_16 0x04; #define CS_IN2_17_24 0x05; #define CS_IN3_0_7 0x06; #define CS_DEFAULT_IN 0x07; #define CS_OUT_1_8 0x08; #define CS_OUT_9_12 0x09; a=0; // a fester Wert=0 while(a<=5000) { DB_WRITE; DATABUS = 0xFF; // Bus Ausgabe aktiv 1..8 ADDRESSBUS = CS_OUT_1_8; // durch Anlegen der Adresse Ausgabebyte Taktimpuls a++; //schleife erhöt } return(0); } Bord beschreibung: http://www.roboterwelt.de/auktion/fujit/index.htm Gruß Tobias
Hoi Tobias, die CS für die IO-Treiber (74HC574 Output, 74HC245) werden vom CPLD erzeugt. Ohne die Funktion des CPLD zu kenne findest du die Adressen nicht raus. Was sagt die Dokumentation dazu? Gruss, Felix
Leider habe ich da keine Adressen Doku gefunden, Ich habe mit hilfe eines bst. Program, die Adressen zu ermitteln. Schau dir das bitte mal an, vieleicht kannst du mir einen TIP geben. Gruss Tobias
Der Adress Decoder ist wirklich simpel aufgeabut.... Routinen für das schreiben und lesen der I/O Ports findest du im Main_neu.c schreiben: void setoutput (unsigned char uc_port,unsigned char uc_wert) lesen: unsigned char readinput (unsigned char uc_port) Ansonsten gilt immer noch: RTFM! Gruss, Felix
Ok, ich wert es mal versuchen, ich werde auch, nochmal "RTFM" , vieleicht habe ich was in der DOKU übersehen . Gruß Tobias
Ich muss jetzt noch mal Fragen , Sory ich bin ein blutigert Anfänger. Kannst du mir mal ein einfaches beispiel mit deiner while schleife machen. zb; #include "mb90540.h" int Main() void setoutput (unsigned char uc_port,unsigned char uc_wert) { int a; #define DB_READ DDR0 = 0x00 // Lesender Zugriff auf den Datenbus #define DB_WRITE DDR0 = 0xFF // Schreibender Zugriff auf den Datenbus #define DATABUS PDR0 #define ADDRESSBUS PDR2 // Definitionen fuer den 4 zu 16 Adressdecoder #define CS_IN1_1_8 0x00; #define CS_IN1_9_16 0x01; #define CS_IN1_17_24 0x02; #define CS_IN2_1_8 0x03; #define CS_IN2_9_16 0x04; #define CS_IN2_17_24 0x05; #define CS_IN3_0_7 0x06; #define CS_DEFAULT_IN 0x07; #define CS_OUT_1_8 0x08; #define CS_OUT_9_12 0x09; //Teste Unterprogramm 28.2.2008 TH# while(a<=1000) { DB_WRITE; DATABUS = 0xFF; // Bus Ausgabe aktiv 1..8 ADDRESSBUS = CS_OUT_1_8; // durch Anlegen der Adresse Ausgabebyte Taktimpuls a++; //schleife erhöt } return(0); } Fehler: Now Making... --------------------Configuration: IO_TSE.prj - Debug-------------------- MAIN.C *** d:\daten\iso\fujisu_board\software\test1\src\main.c(32) E4105C: parameter `setoutput' is missing in parameter list *** d:\daten\iso\fujisu_board\software\test1\src\main.c(32) E4062C: syntax error near `{' ------------------------------ Error detected. ------------------------------ Gruß Tobias
Hallo, Gibt es einen möglichkeit, die Ausgänge (1 bis 12) auch ohne Funktion zu aktivieren. Ich habe versucht einige Funktionen vom Ursprungsprogramm zu übernehmen, aber ich komme einfach nicht weider. wenn mir jemmand einen TIP geben könnte, wäre ich sehr dankbahr. Gruß Tobias
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.