Forum: Mikrocontroller und Digitale Elektronik Schaltung zieht nach ausschalten mehr Strom


von Mathias O. (m-obi)


Lesenswert?

Guten Morgen,

ich habe eine Schaltung auf dem Steckbrett gesteckt welches ein 
Modbus-RTU-Slave darstellt. Wenn ich den µC flashe funktioniert auch 
alles und zieht im Mittel 8-10mA. Ich kann es auch über Modbus 
ansprechen.
Wenn ich sie dann z.B. Abends ausschalte und alles stromlos mache und 
morgens wieder anschließe zieht sie auf einmal um die 47mA und über 
Modbus lässt sie sich auch nicht mehr ansprechen. Erst wenn ich sie 
erneut flashe funktioniert alles wieder und zieht auch wieder 8-10mA.

Weiß jemand was das für Ursachen haben kann? Hatte das vielleicht schon 
jemand?

von Ulli (Gast)


Lesenswert?

Resetbeschaltung vorhanden und funktioniert?

von Ulli (Gast)


Lesenswert?

ganz vergessen zu schreiben:
Häng an irgend einen Pin 'ne LED (wenn nicht schon vorhanden) und lasse 
diese nach dem Einschalten kurz  aufleuchten/blinken. Dann weisst du 
dass der Reset funktioniert.

von Ingo L. (corrtexx)


Lesenswert?

Mathias O. schrieb:
> Weiß jemand was das für Ursachen haben kann? Hatte das vielleicht schon
> jemand?
Latchup? Sind Abblockkondensatoren vorhanden?

von Peter D. (peda)


Lesenswert?

MC mögen es garnicht, wenn ein Pin schon vor VCC Spannung hat und können 
dann in Latchup gehen.
Daß Flashen hilft, ist aber komisch. Ein Latchup löst sich erst, wenn 
sämtliche Spannungen abgeschaltet werden.

von Max (Gast)


Lesenswert?

It vlt. der flash schon so runtergekommen, dass er sich über nacht 
entlädt ?

von Mathias O. (m-obi)


Angehängte Dateien:

Lesenswert?

Also der µC ist ein nagelneuer ATtiny841. Am Reset hängt ein 10k Pullup. 
Hab LEDs dran die beim einschalten aufleuchten und in der While-Schleife 
blinken. Das und SPI funktioniert immer. Nur halt das Modbus 
funktioniert dann nicht mehr. Abblock-C ist auch dran.

Es ist schon ziemlich merkwürdig, dass es nach dem flashen wieder geht.

Hab mal den Code in Anhang gepackt, vielleicht ist da irgendwo ein 
Fehler.

von Nico (nico123)


Lesenswert?

Zeig doch mal die Schaltung!

von Mathias O. (m-obi)


Angehängte Dateien:

Lesenswert?

Wusste doch, dass ich was vergessen habe.

Aber der FRAM ist noch nicht gesteckt.

von Sinus T. (micha_micha)


Lesenswert?

Ziehe doch mal nach dem Einschalten RESET kurz auf Masse und schaue, was 
dann passiert.

von Mathias O. (m-obi)


Lesenswert?

Hab ich schon mehrmals gemacht. Funktioniert dann immernochnicht 
richtig.

von Noch einer (Gast)


Lesenswert?

Für Debugging geflasht? Einen Breakpoint im Programm?

von Mathias O. (m-obi)


Lesenswert?

Ne ist Release und keine Breakpoints. Dann würden die Breakpoints doch 
nicht erst da sein, wenn man einmal ausschaltet. es ist ja auch nur so 
wenn sie für mehrere Stunden aus ist. nach ein paar Minuten Auszeit 
funktioniert sie, nur nicht wenn länger ist. Als wenn sich irgendwas 
entlädt.

von Nico (nico123)


Lesenswert?

Wo und wie werden denn die 5V generiert?

von Mathias O. (m-obi)


Lesenswert?

Erstmal ein Steckernetzteil 5V/2A.

von Nico (nico123)


Lesenswert?

Ist die Spannung stabil und bleibt in den Grenzen 2.7-5.5V?

von Mathias O. (m-obi)


Lesenswert?

Ja das bleibt sie. Ein Brownout wird nicht ausgelöst.

von Nico (nico123)


Lesenswert?

Mit dem Oszi kontrolliert?

von Mathias O. (m-obi)


Lesenswert?

Jap auf der Arbeit.

Aber wenn es so wäre, würde es doch nicht nach neuflashen verschwinden.

von Route_66 H. (route_66)


Lesenswert?

Mathias O. schrieb:
> Aber wenn es so wäre, würde es doch nicht nach neuflashen verschwinden.

Hallo!
Dein beschriebener Effekt könnte auch vom MODBUS-Treiber kommen.
Schaltet der nach Reset auf Senden? Da könnte er gegen den Bus arbeiten.
Am gleichen Signal hängt ja MOSI. Das könnte nach dem Flashen dann 
richtig (also L=Empfang) stehen.

von Mathias O. (m-obi)


Lesenswert?

Hmm. Und was müsste ich dann ändern?

von Karl H. (kbuchegg)


Lesenswert?

In deinem Code fehlen leider die ganzen Modbus Routinen.
Somit ist nicht nachvollziehbar, ob PA6 auf Ausgang geschaltet wird, 
bzw. welchen Pegel die Leitung dann haben wird (0 oder 1)

von Mathias O. (m-obi)


Lesenswert?

Ich wollte jetzt nicht alles hochladen. Das ist soviel.
Das hier ist für PA6
1
#define RTS_PIN         PA6
2
#define RTS_DDR         DDRA
3
#define RTS_PORT        PORTA
4
5
#define RTS_INIT        \
6
    do { \
7
        RTS_DDR |= _BV( RTS_PIN ); \
8
        RTS_PORT &= ~( _BV( RTS_PIN ) ); \
9
    } while( 0 );
10
11
#define RTS_HIGH        \
12
    do { \
13
        RTS_PORT |= _BV( RTS_PIN ); \
14
    } while( 0 );
15
16
#define RTS_LOW         \
17
    do { \
18
        RTS_PORT &= ~( _BV( RTS_PIN ) ); \
19
    } while( 0 );

Und in eMBInit macht er auf jedenfall RTS_INIT. Das ist ja alles aus 
Freemodbus.

von Mathias O. (m-obi)


Lesenswert?

Ich hab jetzt das ganze statt mit dem int. Eeprom, mit einem FRAM 
laufen. Jetzt funktioniert es wie gewünscht. Hat es was zutun mit dem 
Eeprom?

von Peter D. (peda)


Lesenswert?

Mathias O. schrieb:
> Hat es was zutun mit dem
> Eeprom?

Definitiv nein.
Du hast noch was anderes am Code geändert.

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.