Forum: Mikrocontroller und Digitale Elektronik MSP430G2230 Test und RST Pin als UART möglich?


von Nikolaus030 (Gast)


Lesenswert?

Hallo Leute,

ich habe den MSP430G2230. Dieser misst Temperatur über einen Sensor.

Da ist eine LED und ein Taster ebenfalls dran. Möchte aber über eine 
UART Verbindung die Temperatur auslesen.

Ich habe hier ab und zu mal was von one wire Uart gelesen.

Die PINS: - RST - TEST - P1.6 (Pin4) sind frei.


Wie kann ich eine UART Verbindung mit dem MSP430G2230 herstellen?

Über Tipps und  Hilfe würde ich mich freuen.


MFG

von H. D. (lactobacillus)


Lesenswert?

Hallo,

der 2230 hat kein Hardware-UART. Über Software ließe sich das 
wahrscheinlich trotzdem lösen, allerdings benötigst du dafür 2 I/O.

Leider hast du nur einen I/O (P1.6) frei. RST und TEST kannst du nicht 
nutzen.

Wie ließt du den Sensor aus? Wofür sind LED und Taster? Kann man da was 
wegrationalisieren?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nikolaus030 schrieb:
> ... hier ab und zu mal was von one wire Uart gelesen.

Das ist die Debugschnittstelle SBW, über die der Controller JTAG-artig 
u.a. programmiert werden kann. Per Software lässt sich die dafür 
verwendete Hardware im Controller nicht nutzen.

Du wirst entweder eine Software-UART (per Bitbanging) verwenden müssen, 
oder statt des 'G2230 den 'G2553 verwenden. Der nämlich hat eine 
Hardware-UART; ab der Revision 1.5 des Launchpads wird von TI auch einer 
mitgeliefert.

von Nikolaus030 (Gast)


Lesenswert?

Hallo

danke erstmal für die Antwort :D.

Also Schaltbild

//                    MSP430G2230
//             -------------------------
//         + -|VCC     (1)  (8)     VSS|- -
//      LED <-|P1.2    (2)  (7)    TEST|-X
//      TMP ->|P1.5    (3)  (6)     RST|-X
//      Frei -|P1.6/A5 (4)  (5)    P1.7|-Taster
//

Programm läuft so ab :

Der mC geht wacht jede Minute auf und prüft ob der Taster gedrückt 
worden ist. Ist der gedrückt, liest er den Temperatursensor ein und 
speichert diesen im FLASH. Die LED Signalisiert ob geschrieben wurde 
oder der FLASH voll ist.

Möchte nun die Werte über UART auslesen.

Hat jemand ne IDEE???

Rufus Τ. F. schrieb:
> Du wirst entweder eine Software-UART (per Bitbanging) verwenden müssen,
> oder statt des 'G2230 den 'G2553 verwenden. Der nämlich hat eine
> Hardware-UART; ab der Revision 1.5 des Launchpads wird von TI auch einer
> mitgeliefert.

Leider kann ich nicht auf einen anderen Chip ausweichen. :(

von Sönke P. (snke_p)


Lesenswert?

(Edit)
1.6 an Pin4 ist ja frei, den nimmst als TX für einen Software-UART.
Einfach zyklisch Sensordaten raushauen.
Oder wenn echtes Protokoll gewünscht, dann widmest RST als NMI um und 
hast einen RX.
Software-UART-Implementierungen findest im Netz.

Wenn du RST nicht anpacken willst, könntest etvl. auch eine 
Doppelnutzung vom Sensorpin mit der LED oder dem Taster machen, dann 
hast noch einen Pin für UART RX frei. Müsste man deine Schaltung besser 
kennen.

Oder du nutzt UART TX und LED zusammen. Z.B. indem du zwischen dem 
intervallartigen Senden von Daten Sequenzen ohne Daten sendest, die nur 
dazu dienen, die LED leuchten oder erlöschen zu lassen. 1.6 dann als RX.

Viele Wege führen nach Rom...

: Bearbeitet durch User
von Nikolaus030 (Gast)


Lesenswert?

Sönke P. schrieb:
> RST/NMI kannst du nur als Inputpin nutzen. Kannst nicht da den Taster
> dranhängen, dann hättest du den ehemaligen Taster-Pin frei, um den als
> TX für Software-UART zu nutzen, der könnte ja einfach die Werte in
> Intervallen senden, die Gegenstelle empfängt, bzw. verwirft dann
> entsprechend.


Also wenn das geht dann wäre das super dann würde ich den Taster daran 
bringen aber wie? Ich nutze diese Verbindung um den mC über das 
Launchpad zu programmieren.

Sönke P. schrieb:
> Evtl. kannst auch eine Doppelnutzung vom Sensorpin mit der LED oder dem
> Taster machen, dann hast noch einen Pin für UART RX frei. Müsste man
> deine Schaltung besser kennen.
>
> Oder du nutzt UART TX und LED zusammen. Z.B. indem du zwischen dem
> intervallartigen Senden von Daten Sequenzen ohne Daten sendest, die nur
> dazu dienen, die LED leuchten oder erlöschen zu lassen.


Meine Schaltung habe ich  hier nochmal Abgebildet :

//                    MSP430G2230
//             -------------------------
//         + -|VCC     (1)  (8)     VSS|- -
//      LED <-|P1.2    (2)  (7)    TEST|-X
//      TMP ->|P1.5    (3)  (6)     RST|-X
//      Frei -|P1.6/A5 (4)  (5)    P1.7|-Taster
//

LED mit Vorwiederstand und  Taster im PULLUP Mode.

Könntest du mir nen Beispiel geben ??

von Sönke P. (snke_p)


Lesenswert?

Nikolaus030 schrieb:
> Also wenn das geht dann wäre das super dann würde ich den Taster daran
> bringen aber wie?

Hardwaremäßig hast ja an RST/NMI einen Pullup-Widerstand (beispielsweise 
47k) nach VCC und ggf. noch einen kleinen Kondensator (1nF) nach VSS. 
Den Taster würdest dann vom Pin nach VSS machen.
Im WDTCTL Register konfigurierst du dann NMI (ist ja so, dass nach jedem 
Reset der RST Pin zunächst als solcher funktioniert, also der µC im 
Reset bleibt, solange der low ist).
Schau mal als Beispiel in 
http://www.43oh.com/wp-content/uploads/2010/11/MSP430_reset_nmi_pin_as_input.c

Der Nachteil soll aber nicht verschwiegen werden: Debugging wird 
schwieriger.

Deshalb - wie schon gesagt: am einfachsten nur TX per Software-Uart 
auf dem noch freien Pin machen und ganz stumpf die Temperaturdaten 
rausbrüllen.



PS:
Andere "Pinsparmöglichkeiten" wie LED und Taster an einem Port 
(Stichworte: Spannungsteiler, LED schalten per MOSFET mit V_th > 
V_µC_high) sind mit Schaltungsaufwand verbunden oder bringen andere 
Nachteile (z.B. Taster teilt sich den analogen Eingang mit dem 
Tempsensor --> Auflösung wird geringer).

von Nikolaus030 (Gast)


Lesenswert?

Danke leute :D

ich habe das jetzt mittels Software UART gelöst.

Mal ne frage :

ich benutze den VLO als Takt. Für UART aber kriege ich den nur mit 1MHZ 
zum laufen. Kann sowas machen, dass der Taster bestimmt welchen Takt der 
Controller nimmt. Kann man überhaupt den Takt im Betrieb ändern wie es 
einen mag?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nikolaus030 schrieb:
> Kann man überhaupt den Takt im Betrieb ändern wie es einen mag?

Natürlich, das ist ja gerade das Schicke an der Takterzeugung der 
MSP430-Familie.

von Nikolaus030 (Gast)


Lesenswert?

Wie würde das aussehen?

Ich lese einen Wert ein dann lege ich den MSP für ca 1 Minute schlafen. 
Wenn ein Taster jetzt betätigt wurde, geht er in den UART Modus. Dort 
wird der Takt und der Timer verändert?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja. Du kannst nach dem Aufwachen aus dem LPM die Takterzeugung 
umprogrammieren, so, wie Du es schließlich auch nach dem POR machst. Und 
bevor Du den Controller nach getaner Arbeit wieder in den LPM schickst, 
kannst Du wieder die Takterzeugung umprogrammieren.

Du musst nur berücksichtigen, daß die jeweiligen Taktgeneratoren eine 
gewisse Zeit benötigen, bis sie stabil angeschwungen sind, aber das 
macht die in praktisch jedem Codebeispiel von TI enthaltene 
Initialisierungsroutine, egal, ob für den DCO oder die 
Quarzoszillatoren. Sobald der Takt stabil ist, kannst Du ihn für die 
UART-Ansteuerung verwenden.

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.