Hallo alle zusammen, Ich bin ganz neu in Welt der ti microcontroller und versuche ich einen schnellen Einstieg zu verschaffen. Ich muss ganz ehrlich zu geben. Der Einstieg ist nicht so ganz leicht wie ich gedacht hätte. Aus diesem Grund frage ich die erfahrene von euch wie kann ich mr einen schnellen Einstieg ermöglichen damit ich schnelle weiterkommen kann. Die Welt der microcontroller ist nicht was ganz neu für nur ist leider einmischen lange her, dass ich mit atmega was gemacht habe (8 Bit) und was ich jetzt lerne ist 32 Bit . Ich bedanke für jeden Rat
Schnell geht da nicht. Es hilft nur lesen/ausprobieren/lesen/ausprobieren. Immerhin ist die Doku von TI sehr gut, es ist alles beschrieben. Aber für die Anwendungen muss man sich durch jedes Subsystem (Timer, SPI,....) einzeln durchkämpfen. Und falls man in C arbeitet: der Prozessor ist 16 Bit orientiert. Es gibt keine Bytes und einen Zugriff darauf. Das ist ungewohnt, gerade bei Strings. Ich hatte ein Development-System und habe erst mal einen Monat damit 'gespielt', bevor es an die richtige Hardware ging.
Ich habe es mir einen TIC2000 Workshop besorgt aber viel verstehe ich nicht. Es ist irgendwie andres im vergleich mit Atmel.
Was deutsches gibt es gar nicht. Alles von TI ist englisch. Aber das ist doch fast überall so. Aber wenn man mit C arbeitet, hat man doch eine 'normale' Struktur. Dann muss man der Reihe nach die benötigten IO-System einschalten, (Bits setzen bei bekannten Adressen) und dann damit arbeiten. Das gesamte IO-System ist Memory-Mapped, arbeitet sich recht angenehm. Aber schnell geht da nichts. Die Einarbeitung dauert ein paar Wochen.
Was auf jeden Fall empfehlenswert ist: "2803x C/C++ Header Files and Peripheral Examples". Dort gibt es Beispiele für jede Peripherie. Vor allem findest du dort auch Linker command Files, die du erstmal verwenden kannst ohne dich allzusehr damit auseinansetzen zu müssen. Was ich bei TI vermisse ist eine Art Treiber-Bibliothek zur Konfiguration/Ansteuerung der einzelnen Peripherien, wie sie bspw. für STM32 existiert.
Maxim schrieb: > Ich habe es mir einen TIC2000 Workshop besorgt aber viel verstehe ich > nicht. Es ist irgendwie andres im vergleich mit Atmel. Hallo Maxim, der Eintagesworkshop (war seienrzeit für 99EUR) hat schon etwas geholfen. Ich gebe aber meinem Vorredner recht: Der C2000 ist sehr komplex, die Doku SEHR ausführlich, du musst Dich durch alles durchkämpfen sonst klappt das nicht. Auch die IDE will erst mal geübt werden - ist aber prinzipiell eine Eclipse, das Debuggen geht deutlich komfortabler als mit der normalen Eclipse bei z.B. einem STM32 (habe direkten Vergleich). PittyJ schrieb: > Aber schnell geht da nichts. Die Einarbeitung dauert ein paar Wochen. Voll ACK. Vorteil: Wenn du den Dreh raus hast ist das System mit den Timern jedem Cortex-M3 überlegen. Auch die ADCs sind eine Dimension besser und schneller. rgds
Hallo alle zusammen, Ich habe eine Frage: Ich will mit der TMS320C2000 Experiment Kit einen Menu mit einem Terminal Programm schreiben. Da es in der Lib von Ti zwei fertige Methode gibt, die ich gerne benutzen möchte aber ich weiss es nicht wie ich das ambesten machen sollte. Die Methoden, die ich brauche habe ich importiert wie folgende: // extern void SetupSerialPort(void); extern void SCITransmitByte(unsigned char data); extern unsigned char SCIReceiveByte(void); // diese Methoden stammen aus der Lib "SerialPortDrv.c" --> hier ist die Datei: #include "DSP28x_Project.h" //---------------------------------------------------------------------- ----- // For Portability, User Is Recommended To Use the C99 Standard integer types // #include <assert.h> #include <stdarg.h> #include <stdbool.h> #include <stddef.h> #include <stdint.h> extern uint32_t McuE_GetSystemClock(); // ****************************************************** // bool SciDataAvailable() // // This function is used to check if there is any data // in the serial port receive fifo. // // Return values: // true : There is one or more bytes in the fifo buffer // false: The fifo buffer is empty // ****************************************************** int SCIDataAvailable() { return ((SciaRegs.SCIFFRX.all & 0x1F00)!=0); } // ****************************************************** // unsigned char SCIReceiveByte() // // This function is used to receive a single byte from // serial ports receive fifo buffer. // // Return values: // The first (oldest) byte in the fifo buffer // ****************************************************** unsigned char SCIReceiveByte() { return SciaRegs.SCIRXBUF.all; } // ****************************************************** // void SCITransmitByte(unsigned char data) // // This function is used to transmit a single byte on // the serial port. // // Parameters: // data: The byte to transmit. // ****************************************************** void SCITransmitByte(unsigned char data) { //Note: Some TI DSPs have smaller IO buffers. Use 0x0300 for these //1. If the fifo buffer is full we should wait while((SciaRegs.SCIFFTX.all &0x1F00)>0x0300) ; //while((SciaRegs.SCIFFTX.all &0x1F00)>0x0C00) ; //kickdog(); //2. Write the data byte to the fifo buffer SciaRegs.SCITXBUF=data; } void SetupSerialPort() { uint32_t SystemClockFrequency = McuE_GetSystemClock(); // *** Calculate the BRR *** // // CPUCLK>>LOW_SPEED_CLOCK_DIVIDER // BRR = ---------------------------------- - 1 // 8*BAUDRATE /* Low speed clock = 15 MHz (60/4 MHz), Baudrate = 115200 baud */ //uint32_t BRR = (60000000UL >> (SysCtrlRegs.LOSPCP.all))/(115200<<3) - 1; //uint32_t BRR = (SystemClockFrequency >> (SysCtrlRegs.LOSPCP.all))/(921600<<3) - 1; uint32_t BRR = (SystemClockFrequency >> (SysCtrlRegs.LOSPCP.all))/(115200<<3) - 1; EALLOW; SciaRegs.SCICTL1.all=0x0003; // Reset SCI SciaRegs.SCIFFTX.all=0xE040; SciaRegs.SCIFFRX.all=0x2044; SciaRegs.SCIFFCT.all=0x0; SciaRegs.SCICTL2.all=0x0000; // Set the baud rate SciaRegs.SCIHBAUD=(uint16_t)(BRR>>8) & 0xFF; SciaRegs.SCILBAUD=(uint16_t)BRR & 0xFF; SciaRegs.SCIPRI.all=0x0018; SciaRegs.SCICCR.all=0x0007; // 8 bit character length, No parity, 1 stop bit SciaRegs.SCICTL1.all=0x0023; // Enable the SCI EDIS; } --> mein main()Methode sieht so aus: void main (void) { INT32U SystemClockFrequency; INT16U i; // Init BSW drivers EcuM_InitDrivers(); // For Debug - I/O SetupSerialPort(); // Sign-on SystemClockFrequency = McuE_GetSystemClock(); #pragma diag_suppress 183 LDEBUG_PRINTF("BSW_MCU: %s Clock: %08ul\n", CORE_CPU_DESCRIPTION, SystemClockFrequency); #pragma diag_default 183 i = 0; while (true) { printf("***Hello Word*****! %d\r\n", i++); DELAY_US(500000); // .5 sec } } bis dahin funktioniert alles nur weiss ich leider nicht wie ich einen Menu schreibe mit Hilfe der beide Methode : SCITransmitByte(unsigned char data) und unsigned char SCIReceiveByte().
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.