Forum: Mikrocontroller und Digitale Elektronik MSP430F1611 SPI


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florian Grimm (Gast)


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

von lader (Gast)


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

von Rolf (Gast)


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.

von Patrick S. (kof)


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??

von Andy (Gast)


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.

von Rolf (Gast)


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.

von Wolfgang (Gast)


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

von Rolf (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.