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...
:
Bearbeitet durch User
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.