Cortex M3 Development - Was brauche ich noch alles?

#3266093
Lesenswert?

Hallo,

ich liebäugle mit diesem Board von dem Verkäufer. Arm Cortex M3 CPU. Bin 
bisher ARM7 TDMI geschädigt und meine gelesen zu haben, dass das 
Programmiermodell der Cortex Mx einfacher ist, nur noch Thumb 
Befehlssatz, und sogar eine standardisierte HAL (Layer 1)existiert 
CMSIS, die die Peripherie auf C-Strukturen mapped, so dass das 
Programmieren der Hardware etwas einfacher wird.

http://www.ebay.de/itm/NEU-NXP-ARM-Cortex-M3-LPC1768-Development-Board-3-2-TFT-LCD-Module-64KB-SRAM-/320942666451?pt=Wissenschaftliche_Ger%C3%A4te&hash=item4ab9ac72d3

Was brauche ich noch alles (nur Freeware!), um loslegen zu können? Ich 
habe noch einen Olimex Wiggler (USB) um die JTAG anzusprechen, den 
brauche ich also nicht, JTAG ist JTAG denke ich mal.

Wie siehts mit der Programmierumgebung aus und welchen Compiler muss ich 
in diese installieren? GCC? Meine Lizenz für Rowley Crossworks ist 
leider älter von 2004 und hat die Cortex Familie nicht drin. Aber 
Singlestep Debugging, schön mit Leuchtbalken und Watchfenstern etc 
sollte möglich sein.
#3266368
Lesenswert?

Dann muss ich doch etwas weiter ausholen.

Christian J. schrieb:
> Ihhh..... der sieht ja aus wie  ein Arduino Nano

So ist er auch zu verstehen.
USB Kabel anstoepseln und loslegen, nichts weiter erforderlich.
Keine Compiler zu bauen oder IDE's anpassen.
Keine Datenblaetter lesen.
Der ideale Einstieg.

>:-( 56 Euro bei
> Watterod, Wucher! Nee, zu wenig Speck dran


Der Preis beim mbed kommt nicht von der Hardware, sondern vom Zugriff 
auf den online compiler und die Community dahinter.
Das was da zum Download steht, ist nur die mbed lib, nicht die Libs der 
Community.
Mit den Libs der Community, einem mbed, dem online compiler und einem 
MagJack hast Du in 3 min einen Webserver am laufen.
Das gilt nicht nur fuer einen Webserver sondern fuer alles erdenkliche 
was man mit einem uC machen kann.
Im Klartext soll das heissen, die Infos an die man durch den mbed kommt 
wiegen den ++Preis tausend mal auf.

In der mbed community hab ich auch geschrieben wie man eclipse mit dem 
gcc und den mbed libs auf einem PC zum laufen bekommt ohne den online 
compiler zu benutzen.

Wenn Du Dich dann mit dem mbed in die Materie eingearbeitet hast, kannst 
Du Dir ein richtiges DevBoard mit viel Speck kaufen oder bauen und der 
mbed dient Dir immer noch als Programmer/Debugger.

Am Ende sei noch erwaehnt, dass ich inzwischen von den LPC's ein wenig 
abgekommen bin und mehr mit den STM32's mache.
Spezielle Gruende dafuer sind das es mir leichter faellt die STM RM's zu 
lesen und zu verstehen als die von NXP und das es mehr allgemeine 
Informationen zu den STM32's im Netz gibt als zu den LPC's.


Der mbed bleibt aber als "rapid prototyping plattform" ungeschlagen.
Gast #3266980
Lesenswert?

Oder ein Tiva Board für 12$ bei Texas Instruments
bestellen. IDE ist dann Eclipse basierend zum Download.
Spricht aber nichts gegen einen Umstieg auf einen GCC Compiler.
Die low Level Treiber findet man bei TI unter TivaWare
Gast #3267032
Lesenswert?

Juergen G. schrieb:
> Dann muss ich doch etwas weiter ausholen.

Danke Dir erstmal für deine ausführlichen Ausführungen. Klar, die Infos 
sind wichtig, wüsste heute gar nicht mehr wie ich ohne Internet 
entwickeln sollte aber in den 90igern ging das auch, man ging eben in 
eine Bücherei oder Buchladen.

Derzeit bin ich noch Arduino verseucht, werde das erstmal auf Eclipse 
umdoktorn, da die einfache Shell bereits ausgereizt ist und ich 
"richtig" programmieren möchte. Da das Physical computing spannender ist 
als zb das was  man mit einem Rasbperry machen kann will ich das auch 
mit dem Cortex weiter verfolgen, also Hobbyanwendungen (echte habe ich 
nicht), die was machen, tun, sich bewegen, messen usw.

Und ich hoffe das schaut dann genauso schick aus wie mein Ardunio 
Testbrett :-)

Gruss,
Christian
Angehängte Dateien:
#3268059
Lesenswert?

You call this a Steckbrett? That's not a Steckbrett.

This is a Steckbrett!


Ich hab hier u.a. zwei DUE um damit am CAN-Bus rumzuspielen. Die Dinger 
sind eigentlich nicht ganz billig aber ich habe die paar Euro mehr im 
Vergleich zu STM ooder NXP nicht bereut, denn die auf Visual Studio 
basierende IDE ist Gold gegen alles was ich bisher so sah. Intellisense, 
Codevervollständigung und eingebautes Terminal funktionieren fehlerfrei. 
Ehrlich, dagegen ist das Netbeans-Zeug von Microchip die reinste Seuche.
Angehängte Dateien:
Gast #3270582
Lesenswert?

Joachim ... schrieb:
> denn die auf Visual Studio
> basierende IDE ist Gold gegen alles was ich bisher so sah. Intellisense,
> Codevervollständigung und eingebautes Terminal funktionieren fehlerfrei.
Witzig, viele andere fluchen genau darüber...
Glücklicherweise hängt Intellisense etc. nicht von der Ziel-Plattform 
ab, das kann man auch für die STM32 etc. zweckentfremden. Oder eclipse 
nehmen, das kann das nämlich auch alles ganz wunderbar. Die STM32 
Dev-Boards sind nicht nur billiger, sondern auch leistungsfähiger...
#3270679
Lesenswert?

Joachim ... schrieb:
> This is a Steckbrett!

Jo, damit kannste dich bei "Fingers elektzrische Welt bewerben" aber
mehr auch nicht. Perfektion ist angesagt und Dokumentation damit ich den 
Ramsch auch 3 jahre später noch verstehe.

Gilt natürlich auch im Code.... ;-)
1
////////////////////////////////////////////////////////////////////////////////////
2
/*
3
    Funktion:   CalcSonnenAufgang()
4
    Modul   :   rtc_user.c
5
    --------------------------------------------------------------------------------
6
    Beschreibung            : Berechnet den Sonnenaufgang und Untergang
7

8
    Zeitgleichung:          WOZ - MOZ = -0.171*sin(0.0337 * T + 0.465) - 0.1299*sin(0.01787 * T - 0.168)
9
                            Deklination = 0.4095*sin(0.016906*(T-80.086))
10
                            Zeitdifferenz = 12*arccos((sin(h) - sin(B)*sin(Deklination)) / (cos(B)*cos(Deklination)))/pi;
11
                            Sonnenaufgang h=-50 Bogenminuten = -0.0145
12

13
                            Aufgang Ortszeit = 12 - Zeitdifferenz - Zeitgleichung
14
                            Untergang Ortszeit = 12 + Zeitdifferenz - Zeitgleichung
15

16
                            Aufgang = Aufgang Ortszeit - geographische Länge /15 + Zeitzone
17
                            Untergang = Untergang Ortszeit - geographische Länge /15 + Zeitzone
18

19
    aufgerufene Funktionen  :
20
    Eingabeparameter        : ptr           (Zeiger auf aktuelle Zeit für Sommerzeit)
21
                              sonne         (Zeiger auf Ergebnisstruktur
22
                              T             (Tag des Jahres)
23
    Rückgabe                : -
24
    veränderte Globals      : SAG_Std,SAG_Min, SUG_Std,SUG_Min
25
    öffentlich/private      : öffentlich
26

27
    Autor:  Christian J.
28
    letzte Änderung: 20.2.2005
29
*/
30
////////////////////////////////////////////////////////////////////////////////////
31

32

33
uint8_t CalcSonnenAufgang(zeit_t *ptr, struct sonnenstand *sonne, uint16_t T)
34
{
35
    #define hoehe   -0.0145     // Sonnenhöhe in RAD
36
    #define PI      3.141592654
37

38
    float   B,
39
            Deklination,        // Deklination der Sonne
40
            Zeitdiff,           // Zeitdifferenz
41
            DIFF_WOZ_MOZ,
42
            Aufgang_MOZ,        // Aufgang mittlere Ortzeit
43
            Untergang_MOZ,      // Aufgang mittlere Ortszeit
44
            Aufgang_WOZ,        // Aufgang wahre Ortszeit
45
            Untergang_WOZ;      // Untergang wahre Ortszeit
46

47
    static  uint16_t oldvalue = 0;
48

49

50
    // Prüfen, ob Berechnungen für aktuellen Tag bereits vorliegen
51

52
    if (oldvalue == T)
53
        return 1;
54

55
    oldvalue = T;
56

57
    // Berechnungen
58
    B = PI *N_BREITE / 180;
59
    Deklination = 0.4095*sin(0.016906*(T-80.086));
60
    Zeitdiff = 12*acos((sin(hoehe) - sin(B)*sin(Deklination)) / (cos(B)*cos(Deklination)))/PI;
61
    DIFF_WOZ_MOZ = -0.171*sin(0.0337*T+0.465) - 0.1299*sin(0.01787*T-0.168);    // WOZ-MOZ
62

63
    Aufgang_MOZ   = 12 - Zeitdiff - DIFF_WOZ_MOZ;
64
    Untergang_MOZ = 12 + Zeitdiff - DIFF_WOZ_MOZ;
65

66
    Aufgang_WOZ   = Aufgang_MOZ + (15 - O_LAENGE)*(float)4/60;
67
    Untergang_WOZ = Untergang_MOZ + (15 - O_LAENGE)*(float)4/60;
68

69

70
    // Sommerzeit berücksichtigen
71
    if (IsSommerzeit(ptr)) {
72
        Aufgang_WOZ = Aufgang_WOZ + 1;
73
        Untergang_WOZ = Untergang_WOZ + 1;
74
    }
75

76
    // globale Float Werte setzen
77
    sonne->f_SAG = Aufgang_WOZ;
78
    sonne->f_SUG = Untergang_WOZ;
79
    sonne->f_Tagdauer = sonne->f_SUG - sonne->f_SAG;
80

81
    // Umrechnung in Stunden/Minuten
82

83
    sonne->SAG_Std = floor(Aufgang_WOZ);                    // Sonnenaufgang
84
    sonne->SAG_Min = (Aufgang_WOZ - (float)sonne->SAG_Std) * 60;
85

86
    sonne->SUG_Std = ceil(Untergang_WOZ)-1;             // Sonnenuntergang
87
    sonne->SUG_Min = (Untergang_WOZ - (float)sonne->SUG_Std) * 60;
88

89
    return 1;
90
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren