Hallo, Ich braeuchte ein wenig Hilfe bzw. Anregungen fuer mein erstes Projekt. Es geht dabei darum einen barometrischen Sensor (MS5611-01BA01) mit Hilfe eines MSP430 (Im Moment TI Launchpad mit MSP430G2231) auszulesen und das ganze soll nur mit Solarzellen versorgt werden. --- Mikrocontroller --- Zuerst hatte ich mal versucht an meinen Rechner Daten/Zeichen zu schicken, da ich das fuer essentiell halte um irgendwas auszugeben und Fehler zu finden (stdout sozusagen). Da dieser MSP430 leider kein UART verbaut hat, bleibt mir wohl nur Software UART ueber. Hab dazu auch einen funktionierenden Code gefunden [1], doch mir scheint das ziemlich buggy ... mal funktionierts, mal nicht. Das scheint bei SW UART aber so zu sein, also waere ein MSP mit UART doch besser. Kann ich z.B den MSP430G2553IN20 in mein Launchpad (Rev1.4) stecken? --- Barometrischer Sensor --- Dann kann der MS5611 Sensor I2C und SPI ... was soll ich nehmen bzw. was funktioniert zuverlaessiger? Codebeispiele hab ich fuer beide Schnittstellen gefunden. Wenn jemand einen funktionierenden Code fuer diesen Sensor hat, waere das auch ein Entscheidungsgrund. --- Solar --- Versorgt soll die Schaltung dann schlussendlich von der Sonne werden. Die Solarzellen werden einen 1F Kondensator speisen und dieser sollte ueber einen LDO Spannungsregler die Schaltung versorgen. Gedacht hatte ich da an einen MAX8510, doch den gibts anscheinend nicht mehr ... kann mir jemand einen geeigneten empfehlen? [1] http://gpio.kaltpost.de/?p=784 Danke fuer euer Antworten. lG, Max
mmax schrieb: > Anregungen fuer mein erstes Projekt mmax schrieb: > doch mir scheint das ziemlich > buggy ... mal funktionierts, mal nicht Finde heraus, warum das so ist. mmax schrieb: > Kann ich z.B den > MSP430G2553IN20 in mein Launchpad (Rev1.4) stecken? Datenblätter raus und vergleichen.
Wenn du nicht mal den UART zum Laufen bekommst, brauchst du den Rest nicht bauen zu wollen. Man wird halt die Doku lesen und beachten müssen: http://gpio.kaltpost.de/?page_id=972 Da MS5611-01BA01 und MSP ab 1.8V laufen, kann eine unstabilisierte Versorgung direkt aus dem GoldCap ausreichend sein, wenn man den (5.5V) Goldcap an einer Überladung aus der Solarzelle über 3.6V hindert, z.B. per TLV431 oder ICL7665 oder einen 2.5V GoldCap mit einem 2.5V shunt-Regler schützt. Ein LP2950-3 hat halt immer einen Spannungsverlust und damit eine schlechte Nutzung der Solarenergie zu Folge.
took schrieb: > mmax schrieb: >> doch mir scheint das ziemlich >> buggy ... mal funktionierts, mal nicht > > Finde heraus, warum das so ist. Ich denke mal dass ein ein UART, nur in SW relaisiert, sowieso nicht so gut funktioniert da man von einem Timer, also indirekt von der Taktung, abhaengig ist. Da ich den internen Takt des MCs verwende, gehe ich mal davon aus dass es daran liegt. Man findet hier im Forum ja auch genuegend Beitraege dazu. Also entweder anderen MC oder externen Quarz. > mmax schrieb: >> Kann ich z.B den >> MSP430G2553IN20 in mein Launchpad (Rev1.4) stecken? > > Datenblätter raus und vergleichen. Naja, laut Webseite ist das Launchpad mit allen MSP430G2xx kompatibel, sollte also funktionieren. Und die neue Rev 1.5 ist standardmaessig mit dem MC ausgestattet.
mmax schrieb: > took schrieb: >> mmax schrieb: >>> doch mir scheint das ziemlich >>> buggy ... mal funktionierts, mal nicht >> >> Finde heraus, warum das so ist. > > Ich denke mal dass ein ein UART, nur in SW relaisiert, sowieso nicht so > gut funktioniert da man von einem Timer, also indirekt von der Taktung, > abhaengig ist. Wenn du dir das mal genau überlegst, dann kommst du drauf, dass du selbstverständlich auch bei einer Hardware-UART von der Taktung abhängig bist. Denn auch eine Hardware-UART saugt sich ja nicht irgendwie magisch den korrekten Takt aus den Fingern.
Karl Heinz Buchegger schrieb: >> Ich denke mal dass ein ein UART, nur in SW relaisiert, sowieso nicht so >> gut funktioniert da man von einem Timer, also indirekt von der Taktung, >> abhaengig ist. > > Wenn du dir das mal genau überlegst, dann kommst du drauf, dass du > selbstverständlich auch bei einer Hardware-UART von der Taktung abhängig > bist. Denn auch eine Hardware-UART saugt sich ja nicht irgendwie magisch > den korrekten Takt aus den Fingern. Alles ist vom Takt abhaengig. Aber wenn der UART direkt auf dem MC implementiert ist, ist er interrupt gesteuert, oder? Also meinst du dass eine externer Quarz sowieso vernuenftiger waere?
MaWin schrieb: > Wenn du nicht mal den UART zum Laufen bekommst, > brauchst du den Rest nicht bauen zu wollen. eben! > Man wird halt die Doku lesen und beachten müssen: > http://gpio.kaltpost.de/?page_id=972 Das ist die Doku zum HW UART ... geht mit meinem MC aber nicht. > Da MS5611-01BA01 und MSP ab 1.8V laufen, kann eine > unstabilisierte Versorgung direkt aus dem GoldCap > ausreichend sein, wenn man den (5.5V) Goldcap an > einer Überladung aus der Solarzelle über 3.6V hindert, > z.B. per TLV431 oder ICL7665 oder einen 2.5V GoldCap > mit einem 2.5V shunt-Regler schützt. > > Ein LP2950-3 hat halt immer einen Spannungsverlust > und damit eine schlechte Nutzung der Solarenergie zu > Folge. Ok, das ist mal ein guter Tip. Ich denke ich werds mal ohne Spannungsregler testen, vielleicht brauch ich den wirklich nicht.
Ich spiele noch immer mit dem Software UART von [1] herum. Und selbst der originale Code funktioniert nicht zuverlaessig. Manchmal muss ich minicom ("minicom -o -D /dev/ttyACM0 -b 9600") mehrmals starten um eine funktionierende Kommunikation hinzubekommen. Ist das normal bzw. kennt jemand das auch? Hift vielleicht ein externen Quarz (12MHz)? Wuerde es was bringen auf einen MC mit integrierten UART (MSP430G2553) umzusteigen? Bin fuer jede Hilfe dankbar! So macht das naemlich wenig Spass und bevor ich das mit der MC->PC Verbindung nicht hinbekomme, brauch ich gar nicht weitermachen. [1] http://gpio.kaltpost.de/?p=784 lG, Max
mmax schrieb: > Ist das normal bzw. kennt jemand das auch? > Hift vielleicht ein externen Quarz (12MHz)? > Wuerde es was bringen auf einen MC mit integrierten UART (MSP430G2553) > umzusteigen? Ich nutze den SW-UART mit den kalibrierten DCO Frequenzen. Das läuft gut. Besser ist natürlich der Umstieg auf den MSP430 mit einer USCI. Mit dem DCO gehen dann auch höhere Frequenzen. Auch dafür gibt es Demos bei TI.
Was soll die Schaltung denn machen? Ich habe ein Gleitschirm-Variometer gebaut, klingt sehr ähnlich... Für Debug-UART benutze ich folgendes (aus dem AVR-Freaks-Forum):
1 | void sputchar( uint8_t c ) |
2 | {
|
3 | c = ~c; |
4 | STX_PORT &= ~(1<<STX_BIT); // start bit |
5 | for( uint8_t i = 10; i; i-- ){ // 10 bits |
6 | _delay_us( 1e6 / BAUD ); // bit duration |
7 | if( c & 1 ) |
8 | STX_PORT &= ~(1<<STX_BIT); // data bit 0 |
9 | else
|
10 | STX_PORT |= 1<<STX_BIT; // data bit 1 or stop bit |
11 | c >>= 1; |
12 | }
|
13 | }
|
Der MS5611 reagiert sehr empfindlich auf Veränderungen der Versorgungsspannung, ich benutze den TS5205 als Spannungsregler.
Ja genau das hab ich auch vor! Welchen Drucksensor hast du denn verwendet? Gibts naehere Infos zu deinem Projekt? Den UART brauch ich eben nur um mir Debuginfos ausgeben zu lassen, bevor das nicht zuverlaessig funktioniert brauch ich nicht weitermachen, denke ich. Ich werd mal deinen Code testen. Danke, Max
Launchpad geprüft...
1 | #include "msp430g2231.h" |
2 | #include "inttypes.h" |
3 | |
4 | #define TXD BIT1 // TXD an P1.1
|
5 | #define BitTime 104 // 9600 Baud, SMCLK=1MHz (1MHz/9600)=104
|
6 | |
7 | // globale Variablen
|
8 | uint16_t TXByte; // TXByte + Start/Stop BIT's |
9 | |
10 | // Prototypes
|
11 | void putChar (uint8_t c); |
12 | void printfEasy (const char *s); |
13 | |
14 | void main (void) |
15 | {
|
16 | WDTCTL = WDTPW | WDTHOLD; // Stop WDT |
17 | BCSCTL1 = CALBC1_1MHZ; // Set range |
18 | DCOCTL = CALDCO_1MHZ; // SMCLK = DCO = 1MHz |
19 | |
20 | P1SEL |= TXD; // TXD connected @ Timer |
21 | P1DIR |= TXD; // als Ausgang |
22 | |
23 | // ---- Soft. UART Timer Setup ----
|
24 | CCTL0 = OUT; // TXD Idle as Mark = '1' |
25 | TACTL = TASSEL_2 | MC_2; // SMCLK, continuous mode |
26 | |
27 | __bis_SR_register (GIE); // interrupts enabled |
28 | |
29 | printfEasy ("Hello World\n\r"); |
30 | |
31 | while (1) {} |
32 | }
|
33 | |
34 | // ---- simple printf ----
|
35 | |
36 | void printfEasy (const char *s) |
37 | {
|
38 | while (*s) { |
39 | putChar (*s++); |
40 | }
|
41 | }
|
42 | |
43 | // TXing a byte
|
44 | void putChar (uint8_t c) |
45 | {
|
46 | while (CCTL0 & CCIE); // Warten bis die ISR alle BITs ausgesendet hat |
47 | TXByte = 0x200 | (c << 1); // Char + Stop BIT in TXByte einfügen |
48 | CCR0 = TAR + 16; |
49 | CCTL0 = CCIS0 | OUTMOD0 | CCIE; // re-Enable Interrupts, trigger Transmit ISR |
50 | }
|
51 | |
52 | // Timer A0 interrupt service routine
|
53 | #pragma vector=TIMERA0_VECTOR
|
54 | __interrupt void Timer_A (void) |
55 | {
|
56 | if (TXByte) { // Wenn alle BITs ausgesendet sind... |
57 | (TXByte & 1) ? (CCTL0 &= ~ OUTMOD2) : (CCTL0 |= OUTMOD2); |
58 | TXByte >>= 1; |
59 | CCR0 += BitTime; // BIT Zeit aufaddieren |
60 | } else { |
61 | CCTL0 &= ~ CCIE; // ...disable interrupt |
62 | }
|
63 | }
|
Viel Spass.
Ein paar Infos gibts hier: http://www.paraglidingforum.com/viewtopic.php?t=36799&start=120 Das Ding im Legostein ist meins. Kennst Du das "Le BipBip"? Da ist auch ein MSP430 und ein MS5607 drin, und der Code ist auf http://www.lebipbip.com veröffentlicht. Der Code für den MS5611 ist sehr ähnlich, glaube nur zwei Shift-Anweisungen sind anders.
RDuke schrieb: > Ein paar Infos gibts hier: > http://www.paraglidingforum.com/viewtopic.php?t=36... Das Ding > im Legostein ist meins. Sehr genial ... gute Idee im Legostein. Das "Le BipBip" kannte ich nicht, schaut aber schon sehr professionell aus ... aber mir gehts ja auch ums basteln. Den Code hab ich noch net gfunden, werd ihn mir aber mal anschaun. Meine Anregung kam vom: http://pataga.net/ (frueher mal www.pixelproc.net oder so) Ich hab auf jeden Fall mal Solarzellen, Goldcap und einen MSP430G2553 bestellt, den Rest hab ich soweit zu Hause. lG, Max
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.