Forum: Mikrocontroller und Digitale Elektronik MSP430 Entwicklung mit I/O


von Peter M (Gast)


Lesenswert?

Hi,

Ich moechte eine simple Firmware schreiben die Bits von einem Port 
(PORT2.3) empfaengt und an einen Port sendet (PORT2.7).

Senden/Empfangen soll mittels Timer A implementiert werden und Empfangen 
zusaetzlich, indem ein "Delimiter" empfangen wird (wenn P2.3 auf low 
geht und dann zwischen 19us und 21us auf high, dann werden Bits 
empfangen).

Durch COVID hab ich leider derzeit keinen Zugriff auf ein Oscilloscpe 
bzw. das Geraet das die empfangenen Bits generiert.

Was ist der beste Weg diese Firmware zu schreiben?
Idealerweise stelle ich mir einen Simulator vor, dem ich Pins pro 
Zeitintervall vorgeben kann, wie bei einem Verilog Simulator (z.B. VDD 
und Testbits an PORT2.3). Dann kann ich die Ausgabe an PORT2.7 plotten 
und sehen dass alles richtig laeuft.

Ich habe die Hardware selbst (ein custom PCB mit dem MSP430 und 
spy-on-wire Moeglichkeit) aber wie gesagt kein 
Oscilloskop/Signalgenerator. Hilft das irgendwie?
Oder ein eval board?

Danke fuer Vorschlaege!
Peter

von MaWin (Gast)


Lesenswert?

Peter M schrieb:
> beste Weg diese Firmware zu schreiben

Tastatur. Eignet sich perfekt und wurde schon massig erprobt.

Welche IDE nutzt du?

von Peter M (Gast)


Lesenswert?

Hi MaWin,

> Tastatur. Eignet sich perfekt und wurde schon massig erprobt.

Die benutze ich bereits ;-)

Ich denke du weisst eh was ich meine ... Schreiben von Code komplett 
ohne Zwischenschritte und testen geht nur bis zu einem gewissem Grad.

Ich erwarte nicht unbedigt dass der Code 100% klappt wenn ich ihn 
schlussendlich auf der echten Hardware verwende, allerdings moechte ich 
die Wahrscheinlichkeit so gut wie's geht erhoehen.

Super Beispiel ist FPGA code (oder gar ASICs): Den kann ich bis zu einem 
hohen Grad ohne die aktelle Hardware entwickeln und ist durch Verilog 
gut simulierbar.

> Welche IDE nutzt du?

TI Code Composer Studio.

von Peter D. (peda)


Lesenswert?

Gehts bitte noch verschwommener.
Was für ein (serielles ?) Protokoll, welche Baudrate usw. Wie 
unterscheidet sich der "Delimiter" von echten Daten.
Auf +/-1µs genau zu samplen erscheint mir für nen MSP schon recht 
tricky.

von Peter M (Gast)


Lesenswert?

> Gehts bitte noch verschwommener.

Sorry das ist eine konzeptionelle und nicht technische Frage.

Falls das besser ist: Gibt es einen MSP430 Simulator mit dem ich Code 
ausfuehren kann und I/O Pins als Volt(Zeit) (oder Logikpegel) 
eingeben/ausgeben kann?

Wie eben Verilog oder Circuit Simulation im ASIC Design.

Nachdem ich auf den ersten Blick nichts brauchbares gefunden hab ist 
meine Frage noch genereller: Wie kann ich fuer den MSP430 entwickeln 
ohne Zugriff auf die vollstaendig zusammengebaute Hardware zu haben? (*)

(*) Ich habe Zugriff auf die "Hardware" (den MSP430) aber nicht die 
Hardware die meine Daten generiert/ausliest.


> Was für ein (serielles ?) Protokoll, welche Baudrate usw. Wie
> unterscheidet sich der "Delimiter" von echten Daten.
> Auf +/-1µs genau zu samplen erscheint mir für nen MSP schon recht
> tricky.

Das sollte wie gesagt fuer die Frage nicht relevant sein.
Es ist ein simples Protokoll und eine Bitperiode ist im worst-case 10us.
Das +/-1us zeigt lediglich die "Ungenauigkeit" an: Falls P2.3 fuer 20us 
auf low geht fangen die Daten an, aehnlich wie beim Gen2 RFID Protokoll.
Am MSP430 wurde sowas bereits entwickelt 
(https://sensor.cs.washington.edu/WISP.html).

von Larry (Gast)


Lesenswert?

Du kannst dir den NEO430 mit dem Modelsim simulieren.

Aber Achtung, der NEO430 ist nur eine funktionale Simulation.

D.h. die Zeit fuer die Abarbeitung eines Befehls wird eine andere
als auf einem MSP430 sein.

von Clemens L. (c_l)


Lesenswert?

Peter M schrieb:
> Idealerweise stelle ich mir einen Simulator vor, dem ich Pins pro
> Zeitintervall vorgeben kann, wie bei einem Verilog Simulator (z.B. VDD
> und Testbits an PORT2.3). Dann kann ich die Ausgabe an PORT2.7 plotten
> und sehen dass alles richtig laeuft.

Lasse die Master Clock eine Million mal langsamer laufen (von externer 
Quelle, NE555 oder Button), dann kannst du dir den Ausgang einfach so 
mit einer LED ansehen.

von Peter M (Gast)


Lesenswert?

> Du kannst dir den NEO430 mit dem Modelsim simulieren.

Super, sehe ich mir gerade an, danke!

> Lasse die Master Clock eine Million mal langsamer laufen (von externer
> Quelle, NE555 oder Button), dann kannst du dir den Ausgang einfach so
> mit einer LED ansehen.

Das ist eine sehr gute Idee! Allerdings loest das nur mal das TX 
Problem, aber das waer schon was.

Was wuerde dir als einfachste Moeglichkeit einfallen das hardwaremaessig 
zu machen? LaunchPad waer super, hat aber glaub ich nicht alles. In 
Corona Zeiten ist alles mit Hardware schwierig fuer mich.

Vielleicht Launchpad mit simples Breadboard und darauf NE555?

Funktioniert der MSP430 wirklich wenn man ihn mit "0.1 Hz" taktet?

von Clemens L. (c_l)


Lesenswert?

Peter M schrieb:
> Funktioniert der MSP430 wirklich wenn man ihn mit "0.1 Hz" taktet?

Die internen Module haben für ihre Clock-Eingänge keine Untergrenze. 
Aber der XIN-Eingang hat eine automatische Fehlererkennung und 
deaktiviert sich bei < 10 kHz.

Wenn du zur Erkennung der 20 µs einen Timer benutzt, kannst du ihn 
extern über TA0CLK/TA1CLK laufen lassen. Aber sonst kannst du genausogut 
eine interne Taktquelle nehmen (am langsamsten ist VLO / 8 ≈ 1.5 kHz), 
und musst die Wartezeiten entsprechend hochskalieren.

von A. S. (Gast)


Lesenswert?

Mit wie viel MHz betreibst Du denn das ganze, dass Du auf 2us genau 
einen Timer starten kannst. Oder macht der Timer High-Zeiten und du 
brauchst nur gelegentlich nachzuschauen? (Du schreibst ja nichts zum 
Timing der Daten)

Eine sehr gute Signalquelle ist jede serielle Schnittstelle, z.b. vom 
PC. Das einzige Problem: alle 10 Takte brauchst Du eine definierten 
Flankenwechsel, so dass manchmal nicht alle Daten möglich sind.

von Peter D. (peda)


Lesenswert?

Peter M schrieb:
> Das sollte wie gesagt fuer die Frage nicht relevant sein.

Würde aber dabei helfen, ob der MSP sowas überhaupt schaffen kann.

Peter M schrieb:
> Es ist ein simples Protokoll und eine Bitperiode ist im worst-case 10us.

"Simple" heißt noch lange nicht, daß der MSP das einfach dekodieren und 
erzeugen kann.
Je nach MSP-Typ können die nur bis 8MHz, d.h. 10µs sind nur 80 Zyklen.

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.