www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC32 Buch oder Tutorial


Autor: Yaro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stampede (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tr.Ha. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Yaro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Anguel S. (anguel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :)

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Wackel Dackel (pitzelpatzel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
HTTP_IO_RESULT HTTPExecuteGet(void)

an.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir für deine schnelle Antwort:-)

werde ich gleich ausprobieren...melde mich später hoffentlich mit einer 
guten Nachricht

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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'

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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??

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?!

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

// Implement consistent ultoa() function
#if (defined(__PIC32MX__) && (__C32_VERSION__ < 111)) || (defined (__C30__) && (__C30_VERSION__ < 325)) || defined(__C30_LEGACY_LIBC__)
  // C32 and C30 < v3.25 need this 2 parameter stack implemented function
  void ultoa(DWORD Value, BYTE* Buffer);
#elif defined(__18CXX) && !defined(HI_TECH_C)
  // C18 already has a 2 parameter ultoa() function
  #include <stdlib.h>
#else
  // HI-TECH PICC-18 PRO 9.63 and C30 v3.25+ already have a ultoa() stdlib 
  // library function, but it requires 3 parameters.  The TCP/IP Stack 
  // assumes the C18 style 2 parameter ultoa() function, so we shall 
  // create a macro to automatically convert the code.
  #include <stdlib.h>
  #define ultoa(val,buf)  ultoa((char*)(buf),(val),10)
#endif


fchk

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort:-)
Werde ich sofort ausprobieren

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es hat auf anhieb funktioniert:)) Ich kann auf den Webserver drauf zu 
greifen...

Danke dir vielmals...


Werde nun versuchen meine LED`S anzusteuern...

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank und Heinzhorst,
danke für die gute Beschreibung.

Es funktioniert alles so weit!!!

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rüdiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.