mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Putziges Problem: ATTiny24V


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unten steht ein kleiner Programmausschnitt, der aus dem AVR-Studio 
stammt. Der Ausschnitt gehört zu ATiny24-Programm.

Das Programm läuft im Simulator einwandfrei, der erste Abschnitt setzt 
ein Ausgangsbit auf 0 , der zweite Abschnitt setzt  ein Ausgangsbit auf 
1.

Der reale Chip ATTiny24V funktioniert nicht. Zwar wird das Bit im ersten 
Abschnitt auf Null gesetzt, das Bit aus dem zweiten Abschnitt wird aber 
nicht auf 1 gesetzt.

Mit dem Dragon wird das Programm bis Zeile +00000148: Schritt für 
Schritt einwandfrei ausgeführt. Führt der Dragon die Zeile +00000148: 
mit dem Befehl   ST X,R24  aus , geht das Programm nicht (wie zu 
erwarten) zur Zeile +00000149: weiter, sondern "verzweigt" in eine 
anderen Programmteil Der Befehl selbst wird korrekt ausgeführt.

Frage: Mache ich etwas falsch? Warum "verzweigt" der Controller?

330:                  PORTB &= ~(1 << pinswitch) ;
+00000142:   E3A8        LDI       R26,0x38       Load immediate
+00000143:   E0B0        LDI       R27,0x00       Load immediate
+00000144:   E3E8        LDI       R30,0x38       Load immediate
+00000145:   E0F0        LDI       R31,0x00       Load immediate
+00000146:   8180        LDD       R24,Z+0        Load indirect with 
displacement
+00000147:   7F8E        ANDI      R24,0xFE       Logical AND with 
immediate
+00000148:   938C        ST        X,R24          Store indirect

331:                  PORTA |=  (1 << pinSpannungOK)  ;
+00000149:   E3AB        LDI       R26,0x3B       Load immediate
+0000014A:   E0B0        LDI       R27,0x00       Load immediate
+0000014B:   E3EB        LDI       R30,0x3B       Load immediate
+0000014C:   E0F0        LDI       R31,0x00       Load immediate
+0000014D:   8180        LDD       R24,Z+0        Load indirect with 
displacement
+0000014E:   6880        ORI       R24,0x80       Logical OR with 
immediate
+0000014F:   938C        ST        X,R24          Store indirect

Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kann es mit der Zeile "mcu = attiny24" im Makefile (siehe Angang) 
zusammenhängen? Nach dem Compilieren erhalte ich die Meldung "Device: 
Unknown" (siehe unten).

...

----------------
Device: Unknown

Program:     908 bytes
(.text + .data + .bootloader)

Data:         33 bytes
(.data + .bss + .noinit)

...

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Code als Anhang?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am Makefile liegt es nicht, da ich einen Hinweis auf eine Änderung 
(ELFSIZE = $(SIZE) --format=avr --mcu=$(MCU) $(TARGET).elf) gefunden 
habe. Jetzt wird der Controllertyp korrekt angezeigt.

Mein Problem bleibt: leider.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Floh: den Code werde etwas aufhübschen und posten.

Ansonsten bin ich ziemlich ratlos :(

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem liegt nicht an den Tools oder dem Programm. Das Verhalten 
der Software wird durch das Schalten eines Transistors (TSM2301) 
verursacht, der die "enorme" Last (Versorgung weiterer Elektronik) von 5 
mA schaltet. Trenne ich den Controllerpin  vom Gate des Transistors 
läuft das Programm einwandfrei durch.

Kann es überhaupt sein, dass der ATiny24V immer auf die gleiche Art und 
Weise "abstürzt"?

Autor: Alexander v. Grafenstein (avogra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Gates kenn ich eigentlich nur von Mosfets. Zeig doch mal die 
Schaltung :)

Autor: Shuzz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versorgungsspannung ordentlich mit 100nF am Controller abgeblockt?
Dito am Resetpin?

Autor: putzig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So was passiert bei Kurzschlüssen am Ausgang.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist gefunden: beim Einschalten des Transistors bricht die 
Spannung unter den BODLEVEL. Der Controller führt einen Reset durch und 
"landet" auf Grund eines anderen Pegels an einem Pin immer in einer 
anderen Funktion.

Jetzt muss ich "nur" noch die Ursache finden.

Autor: MichiR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast den Ausgangspin auch als Ausgang deklariert? bzw. intern Pull-Up 
oder Pull-Down beachtete?

hatte mal das problem bei nem Schieberegister... Ein Pin war 
versehentlich noch als Eingang anstatt als Ausgang deklariert und schon 
hatte ich ne lustige Antenne und andere kleine Probleme...

Könnt ja auch an sowas kleinem liegen :)

LG

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...
Hast den Ausgangspin auch als Ausgang deklariert? bzw. intern Pull-Up
oder Pull-Down beachtete?
...

Das habe ich (mehrmals) überprüft.

Z. Z. prüfe ich den LP2950-3.3 und seine Beschaltung. Das Problem könnte 
daran liegen, dass er die Umschaltung - vom Ruhezustand mit 60 µA in den 
Wachzustand mit 5 mA - nicht schnell genug ausregelt.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>der Software wird durch das Schalten eines Transistors (TSM2301)
>verursacht, der die "enorme" Last (Versorgung weiterer Elektronik) von 5
>mA schaltet. Trenne ich den Controllerpin  vom Gate des Transistors
>läuft das Programm einwandfrei durch.


Hängt der Pin direkt am Gate, oder über einen Widerstand?

Da das GAte eines Transistors wie eine Kapazität wirk, also im 
"Einschaltmoment" als Kurzschluß (Stromspitze), sollte man ein Gate 
immer über einen Widerstand anschließen, dass der Strom begrenzt wird.

Der BOD des AVR ist ziemlich empfindlich, so dass auch kurze 
Spannungseinbrüche erkannt werden. Da nützt dem auch der 100nF nicht
viel. wenn jemand der Logic über einen Port den Strom abzapft ;-)

Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>> Hängt der Pin direkt am Gate, oder über einen Widerstand?

Ja. 10 K bringt es aber auch nicht.

Spannungseinbruch siehe Anhang (blau VCC, gelb VCC geschaltet)

Autor: Mike J. (linuxmint_user)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Martin
Poste bitte den Schaltplan + Layout + Foto vom Aufbau
damit man dir ohne raten helfen kann.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest du ja die Vcc des Controllers etwas entkoppeln?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Vielleicht solltest du ja die Vcc des Controllers etwas entkoppeln?

Gute Idee! Diode & Kondensator?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:

> Gute Idee! Diode & Kondensator?

Diode braucht halt Flussspannung.  Wenn du die verkraften kannst,
ist das sicher OK.  Ansonsten LC-Glied.  1 mH + 1 µF hat eine
Zeitkonstante von ~ 30 µs, das sollte dir schon ein Stück helfen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert mit einem Gatewiderstand von 100 K.

Vielen Dank an alle :)

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander v. Grafenstein schrieb:
> Also Gates kenn ich eigentlich nur von Mosfets. Zeig doch mal die
> Schaltung :)

Wieso? Das ist doch ein Transistor. Was meinst Du, wofür das "T" steht.

metal oxide semiconductor field-effect transistor
Metall-Oxid-Halbleiter-Feldeffekt TRANSISTOR

Autor: Alexander v. Grafenstein (avogra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian H. schrieb:
> Wieso? Das ist doch ein Transistor. Was meinst Du, wofür das "T" steht.

Oops, vollkommen richtig. War also ein absolut überflüssiger Kommentar 
von mir. Sorry!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.