Hallo Leute, ich möcte von AVR 8-bit auf PIC32 umsteigen und suche dafür die passende Lektüre. Kennt jemand da was gutes? Das einzige, was ich gefunden habe ist "Programming 32-bit microcontrollers in C: exploring the PIC32 Von Lucio Di Jasio" Ist es gut? Gibt es bessere? Gibt es vielleicht ausführliche Tutorials im net (welche die es darauf anlegen, dass man es wirklich versteht und durchblickt und nicht nur c&p lehren) Gruß, Yaro
Hallo, das Buch ist wirklich empfehlenswert. Schoen mit Beispielen, die sowohl den Code als auch die Hardware gut erklaeren. Ist auch sprachlich nicht zu schwer. Sonst wenn du nicht weiterweisst: www.fernando-heitor.de Da helfe ich dir mit den PIC32 gerne weiter falls fragen bestehen. Gruss, Stefan
Trotz längere Suche habe ich bisher auch nichts besseres als das genannte Buch gefunden. Was mich aber schnelle weiter gebracht hat, sind die PIC32 Starter-Kit´s. Zu den Kit´s gibt es Beispielprojekte, die wirklich gut funktionieren und auch halbwegs gut dokumentiert sind. Sicher wirst Du schon bemerkt haben, dass auch über die Microchip-Homepage viele Informationen zu erhalten sind.
Ok, dann werde ich mir das Buch holen und wenn ich dann noch was nicht weiß, die Microchip-Homepage durchsuchen. Alleine mit dem Starter-Kit möchte ich nicht anfangen, weil ich eher der Typ bin, der sich zuerst informiert und dann mach anstatt mich durch try and error dranzutasten. Danke für die Antworten!
Yaro schrieb: > Ok, dann werde ich mir das Buch holen und wenn ich dann noch was nicht > weiß, die Microchip-Homepage durchsuchen. Das Buch ist wirklich gut. Für die ersten Kapitel brauchst du nicht mal ein Board, weil dort alles mit dem MPLAB Simulator gemacht wird. Leider gibt es hier und dort ein paar Sachen, die nicht ganz stimmen oder sich inzwischen leicht verändert haben (siehe auch Errata auf der Webseite zum Buch!). Also nur nicht wundern, wenn mal was nicht ganz hinkommt. Beispielsweise verwendet der Autor bei den Interrupts nicht die fertigen Lib-Routinen sondern greift als alter Assembler-Hase auch schon mal direkt auf die Register zu. Leider gibt es dann an einer Stelle Probleme mit dem Simulator - der tut nicht was er sollte. Ob das nun an dem Simulator liegt, oder an dem Code des Autors, weiß ich nicht - aber die Single Vectored Interrupt Beispiele des Autors unterscheiden sich IMHO schon etwas von den Beispielen, die beim Compiler sind (schau auch mal ins Microchip Forum wenn was faul zu sein scheint). Noch ein Tipp: Du lädst dir ja erstmal MPLAB runter. Da ist schon der C32 Compiler drin, aber nicht in der ganz aktuellen Version. Deshalb installierst Du MPLAB aber wählst dabei die C32 Suite Option ab. Dann lädst du dir den neusten C32 Compiler runter (Lite Version, weil nur diese kostenlos ist!) und installierst den. > Alleine mit dem Starter-Kit möchte ich nicht anfangen, weil ich eher der > Typ bin, der sich zuerst informiert und dann mach anstatt mich durch try > and error dranzutasten. Genau! Das PIC32 Buch scheint echt gut zu sein! Und wenn du dich jetzt fragst, warum ein einziges Buch, solltest Du mal schauen wieviele Bücher es zu den ARM Cortex-M3 Chips gibt - nämlich gar keine :)
Hallo Community, ich habe mir für meinen PIC32 Ethernet Starter Kit die TCPIP Demo App - PIC32ETHSTK von der Microchip Website runtergeladen, compiliert und ausgeführt. Klappt alles tadellos. Ich greife über einen Webbrowser mit http://mchpboard auf den Demo Webserver zu. So nun zu meinem Problem: Unter der Rubrik "Form Processing" auf der TCP/IP Stack Demo Application befindet sich eine AUFGABE, die ich lösen will, aber nicht kann. Ich verstehe es nicht!! und brauche Hilfe. Es sind 4 Buttons, die ich betätigen kann. Durch diese werden die LED´s auf dem Starter Kit getoggelt. Und die Aufgabe lautet:"Exercise: Modify this form to support LED 5." Ich habe nun mehrere Stunden versucht, die Aufgabe zu lösen, aber erfolglos. Gibt es eine gute Beschreibung zum TCP Stack? Gruß, Rüdiger
Anguel S. schrieb: > Genau! Das PIC32 Buch scheint echt gut zu sein! Und wenn du dich jetzt > fragst, warum ein einziges Buch, solltest Du mal schauen wieviele Bücher > es zu den ARM Cortex-M3 Chips gibt - nämlich gar keine :) Doch! :-) "The Definitive Guide to the ARM CORTEX-M3"
Rüdiger schrieb: > Ich habe nun mehrere Stunden versucht, die Aufgabe zu lösen, aber > erfolglos. Die wird auch erfolglos bleiben. Das PIC32 Ethernet Starter Kit hat nämlich nur 3 LEDs. Rüdiger schrieb: > Gibt es eine gute Beschreibung zum TCP Stack? Ja, das Helpfile. Ist eigentlich sehr ausführlich.
heinzhorst schrieb: > Die wird auch erfolglos bleiben. Das PIC32 Ethernet Starter Kit hat > > nämlich nur 3 LEDs. Ich habe zusätzlich das I/O Expansion KIT, und eine kleine Platine mit paar mehr LED´s, die ich gerne schalten will.
Rüdiger schrieb: > Ich habe zusätzlich das I/O Expansion KIT, und eine kleine Platine mit > paar mehr LED´s, die ich gerne schalten will. Ich auch ;-). Ok, also zurück zu deiner Frage. Als Erstes musst du den HTML-Code der Webseite entsprechend ändern. Sollte eigentlich nur Copy-Paste und ein paar kleine Anpassungen sein. Dass musst du die neue Webseite durch das MPFS-Toll jagen, damit du sie mit Einkompilieren kannst. Dann ist die Interaktion zwischen Quellcode und Webseite dran. Das findest du in der CustomHTTPApp.c. Dort siehst du dir mal die Funktion
1 | HTTP_IO_RESULT HTTPExecuteGet(void) |
an.
Danke dir für deine schnelle Antwort:-) werde ich gleich ausprobieren...melde mich später hoffentlich mit einer guten Nachricht
Ich lese mich gerade in die Funktionen vom MPFS Generator ein. Ich habe den Bislang nicht benutzt. Den Quellcode habe verändert und nun muss ich gerade nachlesen wie ich das tool bediene...
Ich habe mir gerade den neuen Stack von Microchip besorgt. Verwende folgende appDemo: TCPIP Demo App - C32 - PIC32_ENET_SK_DM320004_INTERNAL_ETHERNET ich erhalte hier beim Compilieren eine Fehlermeldung: Muss ich vllt eine andere app benutzen??? n file included from ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:48: ../Microchip/Include/TCPIP Stack/ETHPIC32ExtPhy.h:186: error: syntax error before "eEthMacPauseType" ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: In function `_PhyReadReg': ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:93: warning: implicit declaration of function `EthMIIMReadStart' ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:94: warning: implicit declaration of function `EthMIIMReadResult' ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: In function `EthPhyRestartNegotiation': ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:130: warning: implicit declaration of function `EthMIIMWriteStart' ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: In function `EthPhyInit': ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:228: error: `ETH_OPEN_RMII' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:228: error: (Each undeclared identifier is reported only once ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:228: error: for each function it appears in.) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:228: error: `ETH_OPEN_MII' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:232: warning: implicit declaration of function `EthMIIMConfig' ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:317: error: `ETH_MAC_PAUSE_CPBL_MASK' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:317: error: `ETH_MAC_PAUSE_TYPE_PAUSE' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:321: error: `ETH_MAC_PAUSE_TYPE_ASM_DIR' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: At top level: ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:481: error: syntax error before "eEthMacPauseType" ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: In function `EthPhyGetNegotiationResult': ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:489: error: `eEthMacPauseType' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:489: error: syntax error before "pauseType" ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:497: error: `pauseType' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:497: error: `ETH_MAC_PAUSE_TYPE_NONE' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:514: error: `ETH_MAC_PAUSE_CPBL_MASK' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:514: error: `ETH_MAC_PAUSE_TYPE_PAUSE' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:515: error: `ETH_MAC_PAUSE_TYPE_ASM_DIR' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:586: error: `ETH_MAC_PAUSE_TYPE_EN_TX' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:590: error: `ETH_MAC_PAUSE_TYPE_EN_RX' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:595: error: `pFlags' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:600: error: `pPauseType' undeclared (first use in this function) ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c: In function `EthPhyScanLinkRead': ..\Microchip\TCPIP Stack\ETHPIC32ExtPhy.c:734: warning: implicit declaration of function `EthMIIMScanResult'
Habe erfahren, dass die Fehlermeldung kommt, weil ich den Compiler C32 1.10 verwende. Habe nun die Version 1.12 und bekomme nun andere Fehlermeldungen... In file included from ../Microchip/Include/TCPIP Stack/TCPIP.h:292, from ..\Microchip\TCPIP Stack\Announce.c:65: ../Microchip/Include/TCPIP Stack/Helpers.h:63: error: conflicting types for 'ultoa' C:/Programme/Microchip/mplabc32/v1.12/bin/../lib/gcc/pic32mx/3.4.4/../.. /../../pic32mx/include/stdlib.h:80: error: previous declaration of 'ultoa' was here ../Microchip/Include/TCPIP Stack/Helpers.h:63: error: conflicting types for 'ultoa' C:/Programme/Microchip/mplabc32/v1.12/bin/../lib/gcc/pic32mx/3.4.4/../.. /../../pic32mx/include/stdlib.h:80: error: previous declaration of 'ultoa' was here Halting build on first failure as requested. Hier weiß ich nicht woran das liegen könnte??
Ich habe das Problem nicht lösen können:-( Hat jemand Erfahrungen mit diesem Fehler? Meine MPLAB Version ist v8.66 MPLAB C32 C Compiler ist v1.12 verwendete TCPIP Demo App ist aus Microchip Solutions v2010-10-19 Ich habe praktisch alle Daten neu installiert. Und die einzelnen Komponenten spielen nicht zusammen?!
Ab 1.12 hat der C32 selber ein ultoa() eingebaut. Du musst einfach in helpers.h das #define erweitern, damit es nicht zu Konflikten kommt.
1 | // Implement consistent ultoa() function |
2 | #if (defined(__PIC32MX__) && (__C32_VERSION__ < 111)) || (defined (__C30__) && (__C30_VERSION__ < 325)) || defined(__C30_LEGACY_LIBC__) |
3 | // C32 and C30 < v3.25 need this 2 parameter stack implemented function |
4 | void ultoa(DWORD Value, BYTE* Buffer); |
5 | #elif defined(__18CXX) && !defined(HI_TECH_C) |
6 | // C18 already has a 2 parameter ultoa() function |
7 | #include <stdlib.h> |
8 | #else |
9 | // HI-TECH PICC-18 PRO 9.63 and C30 v3.25+ already have a ultoa() stdlib |
10 | // library function, but it requires 3 parameters. The TCP/IP Stack |
11 | // assumes the C18 style 2 parameter ultoa() function, so we shall |
12 | // create a macro to automatically convert the code. |
13 | #include <stdlib.h> |
14 | #define ultoa(val,buf) ultoa((char*)(buf),(val),10) |
15 | #endif |
fchk
Ich habe die helpers.h mit deinem Quellcode geändert erhalte nun einen Konflikt der sich in Helpers.c befindet: Muss ich in der C-Datei auch eine Änderung vorhnehmen? ..\Microchip\TCPIP Stack\Helpers.c:881: error: syntax error before '(' token ..\Microchip\TCPIP Stack\Helpers.c:881: error: `ultoa' declared as function returning a function ..\Microchip\TCPIP Stack\Helpers.c:881: error: conflicting types for 'ultoa' C:/Programme/Microchip/mplabc32/v1.12/bin/../lib/gcc/pic32mx/3.4.4/../.. /../../pic32mx/include/stdlib.h:80: error: previous declaration of 'ultoa' was here ..\Microchip\TCPIP Stack\Helpers.c:881: error: conflicting types for 'ultoa' C:/Programme/Microchip/mplabc32/v1.12/bin/../lib/gcc/pic32mx/3.4.4/../.. /../../pic32mx/include/stdlib.h:80: error: previous declaration of 'ultoa' was here ..\Microchip\TCPIP Stack\Helpers.c:881: error: syntax error before "Value" ..\Microchip\TCPIP Stack\Helpers.c:888: error: syntax error before "if" ..\Microchip\TCPIP Stack\Helpers.c:897: warning: type defaults to `int' in declaration of `Printed' ..\Microchip\TCPIP Stack\Helpers.c:897: error: conflicting types for 'Printed' ..\Microchip\TCPIP Stack\Helpers.c:886: error: previous definition of 'Printed' was here ..\Microchip\TCPIP Stack\Helpers.c:897: warning: data definition has no type or storage class ..\Microchip\TCPIP Stack\Helpers.c:898: error: syntax error before '}' token ..\Microchip\TCPIP Stack\Helpers.c:907: warning: type defaults to `int' in declaration of `Buffer' ..\Microchip\TCPIP Stack\Helpers.c:907: warning: data definition has no type or storage class ..\Microchip\TCPIP Stack\Helpers.c:908: error: syntax error before '}' token Halting build on first failure as requested.
Rüdiger schrieb: > Ich habe die helpers.h mit deinem Quellcode geändert erhalte nun einen > Konflikt der sich in Helpers.c befindet: > Muss ich in der C-Datei auch eine Änderung vorhnehmen? Ja, direkt vor der Definition von ultoa() ist auch ein #if, das Du auch auf die gleiche Weise anpassen musst. Wenn Du C kannst, sollte Dir das nicht schwer fallen.
Es hat auf anhieb funktioniert:)) Ich kann auf den Webserver drauf zu greifen... Danke dir vielmals... Werde nun versuchen meine LED`S anzusteuern...
@Frank: Danke! Das Problem ist bei mir heute auch aufgetreten, als ich versucht habe, die neue Application Library mit TCPIP mit dem C32 v1.10 zu Compilieren. Ließ sich aber dank Deiner Beschreibung schnell beheben.
Frank und Heinzhorst, danke für die gute Beschreibung. Es funktioniert alles so weit!!!
Eine Frage habe ich doch noch. Ich habe es hinbekommen, dass die letzte LED (RD0) nicht mehr toggelt. Habe es den Code in ManDemo.c verändert. // Blink LED0 (right most one) every second. if(TickGet() - t >= TICK_SECOND/2ul) { t = TickGet(); //LED0_IO ^= 1; t=t; } Momentan kann ich die letzte LED nicht toggeln.. Es wird auf index.htm aufgeführt aber ich kann es nicht bedienen.
Hallo, ich versuche gerade herauszufinden, über welchen Port ich den PIC32 anprechen kann. Im File TCP.c wird ein bestimmter Bereich festgelegt. / Starting port for client sockets #define LOCAL_PORT_START_NUMBER (1024u) // End port for client sockets #define LOCAL_PORT_END_NUMBER (5000u) NextPort = (((WORD)GenerateRandomDWORD()) & 0x07FFu) + LOCAL_PORT_START_NUMBER; Das würde ja heißen, ich habe keinen festen Port. Kann mich bitte einer Aufklären, wie das gehandhabt wird. Bzw. über welchen Port ich benutzen soll??
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.