www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F149 - Starthilfe


Autor: BeJO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mikrokontrollerfreunde

Wir (Schüler eines Gymnasiums) haben vor einen Digital-Voltmeter zu
bauen.
Um ein Digital-Voltmeter zu realisieren wird der Mikrokontroller
MSP430F194 auf einem Header-Board von Olimex verwendet. Inspiriert von
einigen Tutorials (mikrokontroller.net, Artikel in der c't 24/2003 ,
http://mathar.com/msp430.html) machten wir uns an die Arbeit!
Doch schon bald mussten wir feststellen, dass das Starten (vielleicht
auch schon das Kompilieren oder Linken) eines kleinen Testprogramms das
zunächst einmal eine LED einschalten soll, nicht funktioniert. Trotz
langer, intensiver Suche fanden wir keine Problemlösung.



Und so sind wir vorgegangen:


Unser Testprogramm:
Code:

#include <io.h>

int main(void)
{
  P2OUT |= 0x01; //Port 20

  //Endlosschleife
  for(;;)
  {
    ;
  }
}


So haben wir es übersetzt:
msp430-gcc -Os -mmcu=msp430x149 -o leds.elf main.c


Und so über den JTAG-Adapter übertragen:
msp430-jtag.exe -eE leds.elf


Ausgabe des Linkers
MSP430 JTAG programmer Version: 2.2
Mass Erase...
Erase Check by file...
Program...
114 bytes programmed.
Reset and release device...



Probleme:
Keine LED leuchtet (LED-Schaltung ist jedoch in Ordnung).
Was hat es mit dem Reset auf sich? Muss man den µC "resetten" um das
Programm zu starten (dies haben wir zumindest in einigen Fora schon
gelesen).
Wie startet man das Programm? Eigentlich wird ja ein Reset, wenn er
denn zum Starten dient durch den Linker ausgeführt oder durch das
anlegen einer Spannung an den µC.
Wir sind für jede brauchbare Antwort dankbar. Vielleicht ist es ja was
ganz banales.

Mfg

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas hätte ich als Schüler auch gerne gemacht.

Erst mal checken, ob der Quartz schwingt.
Zum anderen muss man, um eine LED einzuschalten mindestens zwei Befehle
ausführen: 1. Port auf Ausgang schalten. 2. LED einschalten.

Autor: BeJO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wir haben nun den Code geändert und mussten mit Freude feststellen, dass
es nun endlich geht! Das Problem scheint nun erst einmal gelöst zu sein.
Dadurch konnten wir einen großen Schritt vorankommen!
Wir möchten uns daher bei Christian Rötzer bedanken vorallem auch für
seine schnelle Antwort, die es auf den Punkt brachte!

Weil wir anderen Anfängern auch die Chance geben wollen, solch ein
Projekt erfolgreich zu verwirklichen gibt es nun den geänderte und
funktionierende Code:


#include <io.h>

int main(void)
{
  P2DIR = 0xFF;
  P2OUT = 0x01;
  P2OUT |= 0x02;
  P2OUT |= 0x04;

  for(;;)
  {
    ;
  }
}

mfg BeJo

Autor: Mario Richter (mario001) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schön, dass es funktioniert ! Ich möchte nur der Vollständigkeit halber
was ergänzen, was mich bei meinen ersten Versuchen mit den MSPs auch
viel Lehrgeld gekostet hat.

Der Watchdog der MSP430 ist standardmäßig aktiviert und muss im
Programm manuell abgeschaltet werden, wenn man ihn nicht verwendet -
sonst kommt irgendwann der Reset:

WDTCTL = WDTPW + WDTHOLD;

Das war bei deinem Programm auch das erste, woran ich gedacht hatte.
(Eigentlich komisch, dass es trotzdem funktioniert ?!?)

Grüße, Mario

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.