www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F1611 SPI


Autor: Florian Grimm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!
Ich bin mit meiner Schaltung am Verzweifeln und hoffe nun dass sich bei
euch jemand damit auskennt:

Ich habe eine Schaltung gebaut, welche der easyweb-Anwendung für den
MSP430F149 ähnelt.
Sinn der Schaltung: Interface zwischen Ethernet und einem Funkchip, mit
dem ich Datenpakete per Funk übertragen kann.
Alles funktioniert einwandfrei, ich musste nur leider den MSP430F149
wegen zu wenig RAM durch den MSP430F1611 ersetzen.
Beide Chips sind pinkompatibel und bis auf einige zusätzliche Features,
welche von mir aber nicht benutzt werden gleich.
Das Problem ist, dass die Schaltung nun nicht mehr richtig funktionert.
Die Ethernetseite arbeitet, denn auf einen Ping wird geantwortet, der
Funkchip arbeitet aber nicht mehr. Dieser ist bis auf ein paar
Steuerleitungen an die SPI 0-Schnittstelle angeschlossen.
So wies aussieht können die beiden Bausteine nun nicht mehr darüber
kommunizieren. Kann sich einer denken woran das liegt? Vielleicht an
anderen timings, oder Interruptvektoren?
Ich benutze denn gcc-compiler.

Vielen Dank für Hilfe,
Gruß,
Florian

Autor: lader (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello All;
I have to modify the following source code which was written for
atmega128 ( using avr-gcc) to port it in msp430f1611 using IAR
compiler, and I would be very grateful if you could help me.
any help any advice will be appreciated
Thanks
=================================================

//void ReadEEPROM (BYTE *pData_buff, unsigned short address, unsigned
short  length)

//  DESCRIPTION:
//    Reads data from the 4kB MCU EEPROM
// Paramaeters
//      BYTE *pData_buff  :    A pointer to the read buffer
//      unsigned short address : The address of the first read byte
//      unsigned short   NUM_BYTES :  The number of bytes to read
//---------------------------------------------------------------------- 
---------------------------------
void ReadEEPROM(BYTE *pData_buff, unsigned short   address, unsigned
short NUM_BYTES) {

    // Wait for the last write operation to complete
    while (EECR & BM(EEWE));

    // For each byte...
    do {

        // Setup the address register, issue the read command, and
store the result
        EEAR = address++;
        EECR |= BM(EERE);
        *(pData_buff++) = EEDR;

    } while (--NUM_BYTES);

} // ReadEEPROM

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn rausgekommen? Funktioniert es mit dem MSP430F1611?
Ich habe ein ähnliches Problem: Der Code, mit dem der MSP430F149 mit
Karten (MMC/SDC) kommuniziert, funktionert auf auf dem MSP430F1611
(Rev. A) nicht.

Autor: Patrick S. (kof)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie funktioniert nicht???
das ist echt doof...
ich muß einige applikationen den msp430f149 gegen msp430f1612
eintauschen! dort wird auch exesiv vom spi gebrauch gemacht. wenn das
dann nicht geht, ist das echt ein problem.

habt ihr denn schon rausbekommen, woran es liegt??

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Yahoo-Group MSP430 wurde dieses Problem behandelt.
(z.B. Message 15136)
Irgendwie muss beim 1611 ein 2,2k Widerstand in Serie geklemmt
werden.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, dachte ich auch, funktioniert aber nicht.
Selbst mit 33 kOhm Pullup an jeder Ader und 100 Ohm Reihenwiderständen
geht es nicht.
Ich checke das mit der funktionierenden Software, die ich nur minimal
angepasst auf dem 1611 laufen lasse und umgekehrt.

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da bisher noch niemand auf meine Frage vom 3.10. eingegangen ist und
hier sich Spezies mit dem MPS430F1611 beschäftigen, versuch ich noch
einmal meine Frage zum RAM:
Wie kann man den gesamten RAM (oder ca 8kB ) eines MSP430F1611 als Feld
verwenden?

Ich möchte ca. 8kB des RAMs zur schnellen Zwischenabspeicherung von
Werten, die der ADC12 liefert, verwenden. (eine Art kleiner
Speicheroszi für einmalige Vorgänge). Dazu habe ich ein Feld angelegt.
Solange das Feld kleiner ca. 2kB ist, lässt sich das Programm
problemlos starten. Wird ein Feld in der gewünschten Größe angelegt,
lässt sich das Programm nicht starten.
Lt. Datenblatt teilt sich der RAM in 8kB „Extended“ und 2kB „Mirrored“
auf. Was ist darunter zu verstehen?
Kann jemand einen Tipp geben, wie man das Problem lösen kann.

MfG
Wolfgang

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also der 1611 hat irgendwas abbekommen und wird vom Debgger nicht mehr
gefunden; mit 149 funktioniert es und vermutlich auch mit neuen 1611,
die ich demnächst bekomme. Es sieht nach einem Hardware-Defekt des
einen ICs aus.

@Wolfgag:
Deklariere einfach ein 8 kB grosses Datenfeld.
Alternativ geht auch malloc.

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.