mikrocontroller.net

Forum: Compiler & IDEs I2C und MSPGCC - Erfahrungsaustausch gesucht


Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mspgcc Vers 060502 zur Programmierung eines MSP430F1611 
einsetze,  funktioniert der  I2C Bus nicht.
Bei der Verwendung von IAR Kickstart gibt es keine Probleme. Hat jemand 
ähnliche Erfahrungen gemacht oder müssen hier noch irgendwelche Dateien 
eingebunden werden?
Wolfgang

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na was genau funktioniert denn nicht? Haste du auch die signal.h usw mit 
eingebunden?

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am MSP430F1611 ist über I2C ein DS2482-100 angeschlossen, der den 
Temperaturfühler DS18B20 über 1wire abfragt. Die Temperatur wird auf 
einer Flüssigkristallanzeige angezeigt und soll auf einer Smart Media 
Karte abgespeichert werden. Mit IAR funktionieren das Auslesen der 
Temperatur und die Anzeige auf der Flüssigkristallanzeige. Für das 
Abspeichern auf  SM karte will ich auf mspgcc umstellen, da die 
Programmgröße bei IAR auf 4kB begrenzt ist.
Bei der Verwendung von mspgcc wird immer der gleiche (und falsche) 
Messwert ermittelt, obwohl sich die Temperatur ändert.
Welche Dateien müssen für I2C eingebunden werden?
Für interrupt TimerA0 habe ich bereits signal.h verwendet.
Wolfgang

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit I2C hab ich speziell noch nix gemacht am MSP430, aber mitnahezu 
jedem anderen Modul. Und einen Compiler-Fehler hate ich noch nie, 
deshalb vermute ich, dass was am Code nicht stimmt. Eigentlich sind ja 
nur die ISR-Aufrufe bissl anders, die Register sind ja alle in den 
Header-Files ordentlich deklariert und per define auch kompatibel zu den 
IAR Registernamen.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es jemand, bei dem I2C unter Verwendung des vorhandenen Moduls mit 
mspgcc funktioniert? Bitte melden.
Wolfgang

Autor: Wolfgang (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Soviel Zeit muss sein.
Im Anhang ein Programmschnipsel, welcher mit dem IAR Compiler 
funktioniert. Ich hoffe, dass ich keine Teile vergessen habe.
Schon mal vielen Dank für Deine Bemühungen.
Wolfgang

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kompiliert doch der GCC garantiert nich ohne zumindest Warnungen?!? 
Die Interrupts werden da anders deklariert. Ebenso fehlt die für 
Interrupts zuständige signal.h includiert.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offensichtlich ein Missverständnis.
Für mspgcc wurden von mir, wie in Zeile  1..4 geschrieben, nur die Teile 
von Zeile 6..46 verwendet.
Alles was nach Zeile 46 kommt, ist nur das komplette Beispiel von TI zur 
Anbindung eines TMP175 an einen MSP430.
Wolfgang

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  Steven,
beschäftigst Du dich noch mit dem Problem oder liegt es auf Eis?
MfG
Wolfgang
hat vielleicht jemand einen Tipp?

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bei mir ist dann eben der Unterschied, dass ich ein EEPROM abfrage,
>während du nur Daten empfängst.
Nein, durch die Zwischenschaltung des DS2482 besteht ein  Datenverkehr 
in beiden Richtungen.
>Wenn du ein Oszi oder einen Logicanalyzer hast oder an sowas rankommst,
>kannst du direkt die beiden Programme vergleichen. Das werde ich nun
>auch testen.
Steck nicht zuviel Arbeit rein. Mit einem Oszi habe ich die Schaltung 
und das Programm, welches mit IAR compiliert wurde, zur Inbetriebnahme 
getestet. Hier lief ja I2C schon.
Es geht also „nur“ darum, ob oder unter welchen Bedingungen der I2C Bus 
mit mspgcc funktioniert.
>Und teste es mal bitte mit Optimierung und ohne.
Werd ich mal probieren. Vielleicht optimiert der mspgcc irgendetwas weg.
Was muss ich dazu eingeben?
Wolfgang

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das war ein blinder Alarm. Tut mir leid. Mit einem TMP275, welcher über 
I2C direkt an den MSP430 angebunden ist, läuft I2C mit mspgcc . Die 
Ursache für die Fehlfunktion mit DS2482 muss ich noch suchen
Wolfgang

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ursache gefunden. Es lag offensichtlich an einer Warteschleife, z.B.
void pause (void)
{
unsigned int i;
for (i=60000; i>0; i++)
}
die zwischen IAR und mspggc bei gleicher Schleifenlänge in 
unterschiedlicher Zeit  ausfällt.
Die Warteschleife ist für die Funktion des Temperaturfühlers notwendig.
Jetzt läuft mein Programm auch mit mspgcc.
Wolfgang

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> unsigned int i;
> for (i=60000; i>0; i++)

Solange raufzählen bis i==0??? Macht sich ganz besonders gut auf einer 
32bit Kiste ;-)

Könnte sein, dass du den GCC damit so verwirrt hast, dass er die 
Schleife drin liess. Normalerweise optimiert er die komplett weg, weil 
sinnlos.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar geht es. Ich bezweifle nur dass das Absicht war. Und bei grösserem 
"int" dauert's etwas lang.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne volatile is die Schleife eh weg.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Solange raufzählen bis i==0??? Macht sich ganz besonders gut auf einer
>32bit Kiste ;-)
>>Ich bezweifle nur dass das Absicht war.
ist ein Dreckfehler, sollte i-- sein

>Jetzt wäre es schön zu wissen, wer der Übeltäter von beiden ist.
m. E. nicht nötig, jeder Compiler macht offensichtlich sein eigenes Ding

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.