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
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?
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.
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. :(
(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...
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 ??
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).
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?
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.
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?
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.
Eine eigene Frage?
Dieser Thread ist über 10 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.