Hallo ich habe immer noch ein Problem mit dem Batteriebetrieb beim MSP430. Es ist MSP430F1612. Hab vor ein paar Tagen schon mal gefragt wegen der zugehörigen ISR. Aber ich denke, es liegt erstmal ein Hardware-Problem vor, deshalb der neue Thread. Meine derzeitige Anbindung ist im Bild zu sehen... Folgende Messungen habe ich bereits mit nem Multimeter gemacht: Leerlaufspannung der Batterie: 3,276V (drauf steht 3V) Aus dem Netzteil kommen, wenn der MSP dran und an ist 3,296V Wenn die Batterie NICHT dran ist, dann liegen an AVcc 2,994V an. Ist die Batterie mit in der Schaltung, dann sinds 3,008V. Wenn die Batterie drin ist, und die Netzspannung wegfällt, liegen an AVcc 3,127V an. Was ich jetzt merkwürdig finde, bzw. nicht verstehe: Ist die Batterie draussen und die Netzspannung an, dann liegen an Punkt 1 von D7 0,77V an. Ist die Netzspannung weg, dann liegen dort 0,74V an. Wo bitte kommt denn an der Stelle eine Spannung her? Wenn die Netzspannung wegfällt, dann tut sie das nicht abrupt, sondern sie fällt langsam! Es dauert wirklich etliche Sekunden, bis sie auf < 0,5V fällt. Dementsprechend fällt auch das Potential an P2.7 sehr langsam! Und es liegt bestimmt nicht an der Trägheit des multimeters. Es sind wirklich bestimmt 15s... Wenn ich den MSP starte, dann die Batterie rein mache, und dann die Netzspannung aus mache, dann hab ich eigentlich erwartet, dass das Programm (vor allem die Uhr) weiterläuft. Aber nach erneutem zuschalten der Netzspannung macht der MSP wieder ganz von vorne los. Und die Uhrzeit lief auch nicht weiter. Sieht jemand einen offensichtilichen Fehler in der Beschaltung? Jetzt hab ich grad was seeehr merkwürdiges gefunden: Wenn keine Batterie in der Schaltung ist, und auch keine Netzspannung vorhanden ist, dann liegt an Pin64 vom MSP trotzdem 2,43V an. An P2.7 liegen aber nur mV. Das kann ja nur von den C's kommen, die an Pin64 anliegen... Was stimmt da nicht? Danke
> Ist die Netzspannung weg, dann liegen dort 0,74V an. > Wo bitte kommt denn an der Stelle eine Spannung her? Eine Diode hat auch einen (geringen) Strom in Sperrichtung. > Wenn die Netzspannung wegfällt, dann tut sie das nicht abrupt, sondern > sie fällt langsam! Wo gemessen und wie wird die Netzspannung abgeschaltet (Netzteil aus oder abgesteckt)? > Wenn ich den MSP starte, dann die Batterie rein mache, und dann die > Netzspannung aus mache, dann hab ich eigentlich erwartet, dass das > Programm (vor allem die Uhr) weiterläuft. Wo ist denn dein Reset Pin angeschlossen? > Das kann ja nur von den C's kommen, die an Pin64 anliegen... Richtig, daher ist das auch vollkommen normal. Die Ladung kann ja nirgends hin wenn der MSP so wenig verbraucht.
Jörg S. wrote:
> Wo ist denn dein Reset Pin angeschlossen?
Genau DAS war das Problem! Der Resetschaltkreis wird auch mit den 3,3V
vom Netzteil gespeist. Fällt diese weg, bzw. ist die Netzspannung wieder
da, gibt der dem MSP nen Reset.
Ich habe jetzt die Spannung für den Resetschaltkreis "nach" meinen
beiden Dioden abgenommen, so dass der Schaltkreis notfalls die Vcc von
der batterie bekommt.
Und siehe da, es geht ohne Probleme.
--> manchmal sind die Dinge soooo einfach!
Hmmm, so ganz geht die Sache doch noch nicht. Ich habe mal die Schaltung mit meinem Resetschaltkreis angehängt. Das Datenblatt zum TLC7701 gibts hier: http://focus.ti.com/lit/ds/symlink/tlc7701.pdf Folgendes passiert: Die Batterie ist in der Scahltung drin. Ich schalte das Netzteil aus und warte ne kleine Weile, bis die Spannung am P2.7 auf < 0,5V gesunken ist. Damit sollte der Interrupt ausgelöst werden, und meine ISR wird abgearbeitet. Dann schalte ich wieder ein, und das Gerät läuft genau da weiter, wo ich es möchte (es wird auf dem Display was anderes angezeigt, als das, was vor dem Ausschalten zu sehen war). Warte ich zu kurz vor dem Wiedereinschalten, dann macht er an der Stelle weiter, an der er aufgehört hat. Genaugenommen hört er wohl nicht wirklich auf, weil der Interrupt noch nicht ausgelöst wurde. Warte ich allerdings zu lange, dann fängt der MSP wieder bei Null an, d.h. er hat nen Reset bekommen. Jetzt ist die Frage, warum. Könnte es daran liegen, dass ich dem Resetschaltkreis für die Betriebspannungsversorgung zusätzlich zu dem im Datenblatt vergeschlagenen 100nF Kondensator noch einen 10µ Elko spendiert habe? Was sagen die Experten dazu? Vielen Dank schonmal
@ Mathias U. (munter) >warte ne kleine Weile, bis die Spannung am P2.7 auf < 0,5V gesunken ist. >Damit sollte der Interrupt ausgelöst werden, und meine ISR wird >abgearbeitet. Warum glaubst du, dass der Interrupt erst bei 0,5V ausgelöst wird? Ein LOW wird typisch schon bei 0,4*Vcc erkannt, hier ca. 1,5V. Um die fallende Batteriespannung eher zu erkennen, aknnst du ja einen hochohmigen Spannungsteiler bauen, der bei Normalspannung ca. 0,6...0,7Vcc ausgibt. Damit spricht er schneller auf eine sinkende Betriebsspannung an. >Könnte es daran liegen, dass ich dem Resetschaltkreis für die >Betriebspannungsversorgung zusätzlich zu dem im Datenblatt >vergeschlagenen 100nF Kondensator noch einen 10µ Elko spendiert habe? >Was sagen die Experten dazu? Du musst deine Signale zur Peripherie (LCD etc.) auch schnellstmöglich auf Null setzen. Sonst versorgt dein MSP über seine Ausgänge und die Schutzdioden in den ICs die externen ICs. Dabei bricht die Batteriespannung zusammen, denn diese Lithiumzellen bringen nur recht kleine Ströme im Bereich von 1..5mA. MfG Falk
Ich werde erstmal den 500K gegen Masse für den P2.7 gegen einen 20k austauschen. Damit ist der Spannungsteiler an der Stelle schon günstiger, und die fehlende Betriebsspannung wird eher erkannt. >Du musst deine Signale zur Peripherie (LCD etc.) auch schnellstmöglich >auf Null setzen. Sonst versorgt dein MSP über seine Ausgänge und die >Schutzdioden in den ICs die externen ICs. Ich versteh jetz nicht genau, was Du damit meinst. Was für Signale meinst Du? Ich habe keine Peripherie, die vom MSP mit Spannung versorgt wird. Das Display geht über 5V. Und die andere Peripherie auch. D.h., wenn das Netzteil aus ist, bekommen die eh keinen Strom mehr. Danke *edit: Ich habe eben mitbekommen, dass nach dem Wiedereinschalten, der MSP erst kurz da weiter macht, wo er nach der ISR weitermachen soll, dann bekommt er aber einen Reset...
@ Mathias U. (munter) >Ich versteh jetz nicht genau, was Du damit meinst. Was für Signale >meinst Du? Steuersignale vom MSP zur Peripherie. >Ich habe keine Peripherie, die vom MSP mit Spannung versorgt wird. >Das Display geht über 5V. Und die andere Peripherie auch. D.h., wenn das >Netzteil aus ist, bekommen die eh keinen Strom mehr. Denkst DU! Überleg mal was passiert, wenn ein Signal zum LCD auf HIGH (3,3V) liegt und das LCD keinen Saft mehr hat. Stichwort Schutzdioden, siehe Pegelwandler. >*edit: Ich habe eben mitbekommen, dass nach dem Wiedereinschalten, der >MSP erst kurz da weiter macht, wo er nach der ISR weitermachen soll, >dann bekommt er aber einen Reset... Komisch. MfG Falk
Falk Brunner wrote: >>*edit: Ich habe eben mitbekommen, dass nach dem Wiedereinschalten, der >>MSP erst kurz da weiter macht, wo er nach der ISR weitermachen soll, >>dann bekommt er aber einen Reset... > > Komisch. Ja, das macht er aber auch nur manchmal...also nicht ganz reproduzierbar. Die Sache mit den Steuersignalen: Du meinst also, ich müsste ALLE Steuersignale, bovor sie zu den Steckverbindern für die Peripherie gehen, per Pull-Down auf Masse legen? Das wären fürs LCD 10 Stück, dann 5 Steuersignale für Relais und Analog-Switches, 2 für die AD-Wandler Eingänge, 3 für den PGA. Was ist mit der SD-Card. Da ist ja sicher auch irgendwas wie ein IC mit drin, oder? Ich hab gar keinen Platz mehr, die ganzen R's zu verbauen... Damn, so ein Mist. @Falk: könnte der zusätzliche Elko beim TLC7701 für die Betriebsspannung Probleme machen? Danke
@ Mathias U. (munter) >Du meinst also, ich müsste ALLE Steuersignale, bovor sie zu den >Steckverbindern für die Peripherie gehen, per Pull-Down auf Masse legen? NEIN! Du musst sie im MSP auf LOW setzen, wenn deine ISR angesprungen wird und in den Sleep Mode schalten will. >Was ist mit der SD-Card. Da ist ja sicher auch irgendwas wie ein IC mit >drin, oder? Neeee, ein Marienkäfer ;-) >Ich hab gar keinen Platz mehr, die ganzen R's zu verbauen... Die sind auch sinnlos. >@Falk: könnte der zusätzliche Elko beim TLC7701 für die Betriebsspannung >Probleme machen? Du meinst C7? Nein, das passt schon. MfG Falk
Also R24 würde ich komplett einsparen. 30µF an der 3,3V Leitung sind auch schon recht viel wenn nur der MSP dadurch versorgt wird. Wie sieht denn der Rest der Schaltung aus? Die Peripherie läuft mit 5V weiter und der MSP nur mit Batterie???
Jörg S. wrote:
>Die Peripherie läuft mit 5V weiter und der MSP nur mit Batterie???
Nee, alle Betriebsspannungen gehen aus, sobald der Netzschalter aus
gemacht wird.
Der MSP wird dann nur per Batterie versorgt, der Uhrzeit wegen...
Also ich habe jetzt den 500k gegen einen 20k Widerstand ausgetauscht. Ich habe auch in meine ISR alle Pins aller Ports auf Null gesetzt, bevor er in den LPM3 gehen soll, aber so recht funktionieren tut es immer noch nicht. hier mal meine ISR:
1 | #pragma vector=PORT2_VECTOR
|
2 | __interrupt void Port2_Interrupt (void) |
3 | {
|
4 | P2IFG = 0; // flag wird zurueckgesetzt |
5 | |
6 | if((P2IES & INTERRUPT_P2_7) == 1) // wenn high --> low |
7 | {
|
8 | // mache die notwendigen Operationen für den Shutdown
|
9 | P1OUT = 0x00; |
10 | P2OUT = 0x00; |
11 | P3OUT = SPI_CS; |
12 | P4OUT = 0x00; |
13 | P5OUT = 0x00; |
14 | P6OUT = 0x00; |
15 | gehe_in_LPM3 = 1; // flag fuer main() setzen |
16 | P2IES &= ~INTERRUPT_P2_7; // P2IFG wird gesetzt bei low --> high |
17 | }
|
18 | else
|
19 | {
|
20 | gehe_in_LPM3 = 0; // flag zuruecksetzen |
21 | LCD_Init(); // LCD initialisieren ... |
22 | LCD_Clear(); // ...loeschen, cursor an anfang |
23 | |
24 | Seite = 3; // zeigt die uhrzeit an... |
25 | pga_auf_wert(PGA_Wert_Gain_eff_A_max); // pga auf max. gain fuer a-wichtung setzen |
26 | P2IES |= INTERRUPT_P2_7; // P2IFG wird gesetzt bei high --> low |
27 | LPM3_EXIT; |
28 | }
|
29 | }
|
Der PinChangeInterrupt ist folgendermaßen initialisiert:
1 | P2IES |= 0x80; // high --> low bei P2.7 an |
2 | P2IE |= 0x80; // interrupt an P2.7 an |
3 | BIS_SR(GIE); // allgemeiner Interrupt an |
Ich finde es auch sehr sehr merkwürdig, dass: Wenn das Gerät läuft, und ich dann die Spannung an P2.7 messen will, dann macht er GENAU die Sachen, die im else-Zweig meiner ISR stehen. Er scheint beim Berühren der Messspitze an den Pin einen Interrupt zu bekommen, der aber nicht von high --> low geht, weshalb er in den anderen Zweig rutscht. Wenn ich das Gerät ausschalte, und dann wieder ein, dann zeigt er mir kurzzeitig die "Seite 3" auf dem Display, mach dann aber ein Reset. Vorhin hat er wenigstens nach knapp 10s ausgeschatet sein und wieder anschalten die ISR korrekt abgearbeitet. Jetzt macht er ständig diesen Blödsinn... Hat noch jemand eine Idee? Danke *edit: So langsam wirds unheimlich: Manchmal zeigt er mir bei Einschalten einen Text, der eigentlich beim Hochfahren des MSP angezeigt wird...die komplette init_mcu() wird aber nicht durchlaufen, weil er da noch andere Sachen anzeigt, und dann geht er auf die Seite, die im else-Zweig der ISR steht, lässt die Uhrzeit aber vom default-Wert loslaufen... Er fängt also mit der init_mcu() an, bekommt dann nen Interrupt an P2.7 und macht dann weiter...das begreif ich nicht.
@ Mathias U. (munter) >er in den LPM3 gehen soll, aber so recht funktionieren tut es immer noch >nicht. Tjaaaaa. > > if((P2IES & INTERRUPT_P2_7) == 1) // wenn high --> low Hast du mal überlegt, wie die einzelnen Werte aussehen? Und wie da 1 rauskommen soll? Diese Bedingung ist IMMMER falsch, demzufolge wird der True Zweig NIE ausgeführt. P2IES ist 0x00 oder 0x80 INTERRUPT_P2_7 ist sicherlich 0x80 Was du hier willst, ist ein
1 | if(P2IES & INTERRUPT_P2_7) |
Diese Ausdruck wird LOGISCH ausgewertet, nicht numerisch == 0x00 -> true != 0x00 -> false ;-) > gehe_in_LPM3 = 0; // flag zuruecksetzen Das sollte sinnvollerweise in der main-Schleife passieren. Ist strategisch besser. >Wenn das Gerät läuft, und ich dann die Spannung an P2.7 messen will, >dann macht er GENAU die Sachen, die im else-Zweig meiner ISR stehen. >Er scheint beim Berühren der Messspitze an den Pin einen Interrupt zu >bekommen, der aber nicht von high --> low geht, weshalb er in den >anderen Zweig rutscht. Was für ein Messgerät hast du denn? Ein normales Digitalmultimeter mit 10 MOhm Eingangswiderstand darf bei dem Spannungsteiler eigentlich keinen Interrupt auslösen. Ich hoffe du misst im Spannungsmessbereich, nicht im Strommessbereich . . . >Jetzt macht er ständig diesen Blödsinn... Verständlich. MfG Falk
>if(P2IES & INTERRUPT_P2_7) Hab die Sache mal so abgeändert, aber es hat nur kurz was gebracht. Der MSP hat die ersten paar Male nach dem Einschalten die "Seite 3" mit der Uhrzeit angezeigt, allerdings nie mit der vor dem Ausschalten eingestellten Zeit. Er fing aber auch nicht bei default an (default ist 1:00:00), sondern mal bei 1:00:04 mal etwas weiter... Jetzt macht er nach jedem Einschalten immer einen Reset, fängt also bei Null an. Hab auch schon die Batterie rein und raus gemacht, und auch manuell, per Taster, neu gestartet, aber das bringt alles nix. >Was für ein Messgerät hast du denn? Es ist ein Metrix MX54, das sollte reichen... Ich habe es gearde noch einmal getestet: Sobald ich mit der Mess-spitze an P2.7 komme, dann macht er das, was im else-Zweig der ISR steht!!! Und JA, ich messe Spannungen, keine Ströme. Mal was anderes: Für den TimerA ist ja nur der ACLK notwendig, oder? Weil der MCLK usw. wird ja beim LPM3 ausgeschalten... So langsam bin ich am verweifeln...Das kann doch nicht so schwierig sein...
@ Mathias U. (munter) >Der MSP hat die ersten paar Male nach dem Einschalten die "Seite 3" mit >der Uhrzeit angezeigt, allerdings nie mit der vor dem Ausschalten >eingestellten Zeit. Er fing aber auch nicht bei default an (default ist >1:00:00), sondern mal bei 1:00:04 mal etwas weiter... Ohne das Gesamtprogamm zu sehen kann man da nicht viel zu sagen. >Jetzt macht er nach jedem Einschalten immer einen Reset, fängt also bei >Null an. Stimmt der Name des ISR Vektors? >Hab auch schon die Batterie rein und raus gemacht, und auch manuell, per >Taster, neu gestartet, aber das bringt alles nix. Dann ist noch ein prizipielles Problem da. >>Was für ein Messgerät hast du denn? >Es ist ein Metrix MX54, das sollte reichen... >Ich habe es gearde noch einmal getestet: Sobald ich mit der Mess-spitze >an P2.7 komme, dann macht er das, was im else-Zweig der ISR steht!!! >Und JA, ich messe Spannungen, keine Ströme. Hast du mal dein Verdrahtung geprüft. Könnte auch ne kalte Lötstelle sein. Und probier mal, das Flag am ENDE der ISR zu löschen. P2IFG = 0; // flag wird zurueckgesetzt Denn durch das Umschalten der Flanke kann ein neuer Interrupt generiert werden, ohne dass ein Pegelwechsel stattfindet! >Mal was anderes: Für den TimerA ist ja nur der ACLK notwendig, oder? Wenn er darauf konfiguriert ist. >So langsam bin ich am verweifeln...Das kann doch nicht so schwierig >sein... Locker bleiben. Tee trinken. Oder Bier. Je nach Geschmack. MFG Falk
So, ich habe eine neue Erkenntnis: Wenn ich mit mit der Messspitze meines MM an P2.7 komme, dann kommt ein Interrupt, der if-Zweig wird durchlaufen, das Dislpay bleibt dort stehen, wo es gerade ist...die Uhrzeit läuft auf dem Display nicht weiter, ABER: Beim nochmaligen Berühren von P2.7 kommt noch ein Interrupt. Diesmal wird der else-Zweig durchlaufen, denn dann macht er genau das, was im else-Zweig drin steht. Die Uhrzeit ist im Hintergrund weitergelaufen... Dabei ist es egal, ob das MM an oder aus ist, und ob das Ding Masse-Bezug hat, ist auch Wurscht. Scheint also was hardwaremäßiges zu sein... Es wird *hoffentlich ne kalte Lötstelle sein. Aber das werde ich morgen mal durchtesten. Bitte, bitte, lass es eine kalte Lötstelle sein!!!
>Was du hier willst, ist ein >if(P2IES & INTERRUPT_P2_7) >Diese Ausdruck wird LOGISCH ausgewertet, nicht numerisch >== 0x00 -> true >!= 0x00 -> false Und weiter gehts: Ist es nicht genau anders herum? True ist doch gleichbedeutend mit einem Wert ungleich Null...? Wo ist denn bei >if(P2IES & INTERRUPT_P2_7) der Vergleich? Das ist doch nur ein bitweises UND... Wird da auf == 0x00 oder !=0x00 getestet? Ich werd mich jetzt mal auf die Suche nach einer kalten Lötstelle machen.
> Wo ist denn bei > >if(P2IES & INTERRUPT_P2_7) > der Vergleich? Das ist doch nur ein bitweises UND... Richtig. Und wenn bei der UND Verknüpfung was positives rauskommt ist die if Bedingung erfüllt.
Gut, also an einer schlechten Lötstelle liegt es wahrscheinlich auchnicht. Die sah zwar nicht so gut aus, habs ausgebessert, aber das Problem ist immer noch da. Ich habe mal die Spannung am Reset-Eingang (Pin 58) des MSP verfolgt. Wenn die Netzspannung an ist, dann liegt sie bei relatic konstanten 2,96V. Sie schwankt ganz leicht aber 2,9V sind es auf jeden Fall. Mache ich jetzt die Netzspannung aus, dann geht die Spannung am Reset runter. Die Spannung sinkt allmälig... Und dann plötzlich sinkt sie auf 1,8V und springt dann öfter zwischen 1,8V und 2,2V hin un her. Das darf doch nicht sein. Der TLC7701 muss doch, wenn er seine Betriebspannung bekommt, den Reset-Ausgang (Pin 5) auf gleichem Potential lassen, oder? Ausser natürlich V(sense) geht unter die Schwellspannung von 1,1V für den TLC7701. Habe gerade bemerkt, dass der Spannungsteiler vor dem Sense-Eingang des TLC7701 nicht so wirklich sinnvoll ist in meiner Anwendung. Ich werde den mal rausmachen...
@ Mathias U. (munter) >Habe gerade bemerkt, dass der Spannungsteiler vor dem Sense-Eingang des >TLC7701 nicht so wirklich sinnvoll ist in meiner Anwendung. >Ich werde den mal rausmachen... ??? Vielleicht mal nachrechnen? Der ist im Moment auf ~2,5V Triggerspannung eingestellt. Und verbraucht ca. 11uA. Könnte weniger sein, aber passt schon. MfG Falk
@Falk: ??? Spannungsteiler 150k über 120k ergibt bei mir: Ua = Ue*(120k)/(150k + 120k) = 0,444*Ue Das ergibt bei knapp 3V am Eingang knapp 1,33V am Sense-Eingang. Wie kommst Du auf ~2,5V??
@ Mathias U. (munter) >Das ergibt bei knapp 3V am Eingang knapp 1,33V am Sense-Eingang. >Wie kommst Du auf ~2,5V?? Weil die Schaltschwelle beim TLC7701 1,1V beträgt. MfG Falk
Nochmal was Softwaremäßiges: > gehe_in_LPM3 = 0; // flag zuruecksetzen >Das sollte sinnvollerweise in der main-Schleife passieren. Ist strategisch >besser. Warum? Dann müsste ich das in meiner main() nach JEDEM Funktionsaufruf machen...
1 | void main(void) |
2 | {
|
3 | for(;;) |
4 | {
|
5 | if (gehe_in_LPM3 != 1) |
6 | {
|
7 | funktion_1(); |
8 | gehe_in_LPM3 = 0; |
9 | }
|
10 | else {LPM3;} |
11 | if (gehe_in_LPM3 != 1) |
12 | {
|
13 | funktion_2(); |
14 | gehe_in_LPM3 = 0; |
15 | }
|
16 | else {LPM3;} |
17 | |
18 | usw... |
19 | }
|
20 | |
21 | }
|
Da finde ich es sinniger, es EINMAL in der ISR zu machen, wenn der LPM3 verlassen wird.
@ Mathias U. (munter) >Warum? >Dann müsste ich das in meiner main() nach JEDEM Funktionsaufruf >machen... Ist so sowieso nicht korrekt. Es müsste VOR dem LPM3; gelöscht werden, nicht nach der Funktion denn dort ist es bereits 0 ;-) >Da finde ich es sinniger, es EINMAL in der ISR zu machen, wenn der LPM3 >verlassen wird. Kann man schon machen. Ist die Variable als volatile deklariert? MfG Falk
>Ist so sowieso nicht korrekt. Es müsste VOR dem LPM3; gelöscht werden, >nicht nach der Funktion denn dort ist es bereits 0 ;-) Nein, ist es nicht, denn wenn ich "gehe_in_LPM3" nicht in meiner ISR lösche, dann bleibt es ja erstmal "1". Ist jetzt die Betriebspannung wieder da, dann macht ja der MSP an der Stelle weiter, wo er vorher aufgehört hat, also in *irgendeiner Funktion. Und wenn er mit dieser Funktion fertig ist, DANN muss doch die Variable zurückgesetzt werden, damit bei der nächsten Abfrage nicht schon wieder in den LPM3 geschalten wird. >Ist die Variable als volatile deklariert? Nein, ist sie nicht. Warum, was hätte das für einen Vorteil, bzw. was zeigt das volatile an?
@ Mathias U. (munter) >Nein, ist es nicht, denn wenn ich "gehe_in_LPM3" nicht in meiner ISR >lösche, dann bleibt es ja erstmal "1". Eben, und wie soll dann der True zweig des If() erreicht werden? >Ist jetzt die Betriebspannung wieder da, dann macht ja der MSP an der >Stelle weiter, wo er vorher aufgehört hat, also in *irgendeiner >Funktion. Was bringt dich zu der irrigen Annahme? Er macht NACH dem LPM3; weiter! >>Ist die Variable als volatile deklariert? >Nein, ist sie nicht. Warum, was hätte das für einen Vorteil, bzw. was >zeigt das volatile an? Sie muss! Denn sonst kann es pasieren, dass dir der Compiler mächstig ins Handwerk pfuscht! Interrupt MfG Falk
Gut, dass hab ich jetzt auch verstanden... Habe die Variable jetzt volatile gemacht. Gebracht hat es leider nix. Manchmal geht es, aber wenn ich zu lange warten mit dem Widereinschalten, dann bekommt der MSP nen kompletten Reset, aber seit ich die beiden Widerstände vom Spannungsteiler vom TLC7701 rausgemacht habe, bleibt er dann beim Initialisieren hängen. Gebe ich ihm per Taster nen Reset, dann gehts... Irgendwo nicht ganz logisch die ganze Sache...
@ Mathias U. (munter) >ich die beiden Widerstände vom Spannungsteiler vom TLC7701 rausgemacht >habe, bleibt er dann beim Initialisieren hängen. Ohhh Mann! Und der Pin hängt nun in der Luft? Nicht wirklich gut. >Gebe ich ihm per Taster nen Reset, dann gehts... >Irgendwo nicht ganz logisch die ganze Sache... Ja, hör mal mit der Rumstochern auf und teste solide. MfG Falk
>Und der Pin hängt nun in der Luft?
Nein, den hab ich schon mit Vcc verbunden... ;-) Wie es im Datenblatt
vorgeschlagen wurde...
@ Mathias U. (munter) >Nein, den hab ich schon mit Vcc verbunden... ;-) Wie es im Datenblatt >vorgeschlagen wurde... Damit wird aber schon bei 1,1V der Reset losgelassen (plus Verzögerungszeit ggf.) Hmmm. MfG Falk
Ich würde nicht sagen "schon", sondern eher "erst", weil die Spannung ja sinkt (naja, im Idealfall bleibt sie am Sense-Eingang gleich durch die Batterie, und ÜBER den 1,1V) Wichtig ist das ja wiirklich nur beim allerersten Mal, wenn das Gerät eingeschalten wird. Dann bleibt der MSP idealerweise ja ständig unter Spannung (durch die Batterie). D.h. der TLC7701 generiert erst dann wieder einen Reset, wenn: 1) der Reset-Taster gedrückt wird, oder 2) die Batterie völlig leer ist. Aber wenn die Bat. leer ist, und die V(sense) 1,1V errcith hat, dann ist der MSP ja eh schon aus.
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.