mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny mit komischem verhalten


Autor: Florian Idb (fbeek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

also ich bin im moment echt am verzweifeln.

Und zwar habe ich hier einen ATTIny 13 der an einem Eingang ein High 
Wert erkennen soll um dann eine LED einzuschalten und ein bestimmten 
Wert per Ausgang an einen ATMEGA 32 auszugeben. Das ist aber nicht so 
wichtig.

Der Tiny Liegt in der Grundbeschalten vor:

-Abblockkondensator zwischen GND und VCC
-3,3V VCC
-intern erzeugte 4,8 MHZ
-LED wie um Tutorial beschrieben verschaltet

Zum Testen habe ich einfaches Programm geschrieben, welches erstmal nur 
die LED einschaltet wenn wenn ein High Wert anliegt.

Code:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

int main (void)
{
  DDRB |= (1<<PB2);
  PORTB |= (1<<PB2);
  while (1)
  {
           if ( PINB & (1<<PINB3) )
           {
              PORTB &= ~(1<<PB2);
           }
           else
           {
              PORTB |= (1<<PB2);
           }
  }
  return 0;
}

Das Problem ist nun, dass es einfach nicht klappen will(das Flashen 
Funktiniert ohne Probleme).

Schalte ich VCC ein so ist die LED aus wie es sein soll.
Lege ich nun aber an PB3 VCC an als Logisches Hight so passiert entweder 
nichts oder die LED geht.Das soll sie ja auch.Aber setze ich den Port 
nun auf GND sollte sie ja sofort ausgehen aber das Problem ist,dass dies 
erst ein paar sekunden Später passiert.Ausser dem flackert die LED wenn 
ich an die Pinleiste berühre die zu den Ports für die Programmierung 
führt.

Habe die Schaltung schon 3 mal neu aufgebaut, überprüft(Spannungen 
gemessen, Lötstellen etc.) und es auch schon mit Interrupts versucht was 
auch nicht funktioniert da komischerweise Am Betreffenden INT0 Port 
immer VCC anliegt obwohl DDRB und PORT für diesen Pin auf 0 stehen.

Der Controller ist auch in ordnung ,da ich 5 Stück auf den 
Unterschiedlichen Platinen getestet habe.

Vielleicht habt ihr ja eine Idee

PS: Hab och eine kleine Frag. Und zwar habe ich hier noch einen Tiny 
welchen ich ausversehen auf 128 KHZ getacktet habe und in nun nicht mehr 
per Pony Prog ansprechen kann.Eventuell hat dazu auch jemand eine idee 
was aber nebensache ist.

Gruss
Florian

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann es sein, dass dein isp steckt, während du testest?

mit was legst du den port auf high? massen zur "high"-spannung und zur 
V_cc des tiny sind verbunden?

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2 Tipps: Wozu die beiden Includes?
>#include <avr/interrupt.h>
>#include <stdint.h>

Wie hast du die LED angeschlossen? Hoffentlich über nen Transistor oder 
Widerstand? Keine Ahnung wie viel die Beine des Tiny aushalten, aber bei 
nem atmega8 sinds ja schon nur 20mA...nicht das er immer resettet wird 
oder so, wenn die LED angeht.
Hast du mal die Optimierung beim Kompilieren ausgeschaltet? Vielleicht 
hilft das :D
Hatte ich auch schon, dass er mir irgendwas wegoptimiert hat was aber 
eigentlich so sein sollte.

Autor: Florian Idb (fbeek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein ISP Steckt nicht.
Ja die Massen sind verbunden.
Habe es mit einem Abgriff von VCC zum pin versucht und mit einem zweiten 
Labornetzteil.

Die includes hatte ich vergessen raus zunehnem :-)
Die LEDs sind per 1k Widerstand angeschlossen wie im AVR TUT.

An der Optimierung sollte es nicht liegen die is aus ;-D

Autor: Chris L. (kingkernel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Passen denn auch die Fuse-Bits? Nicht das du auf Externer RC statt 
interner gestellt hast oder so.

Funktioniert ein anderes Programm denn auf diesem Chip?

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fabian S.:
> Wie hast du die LED angeschlossen? Hoffentlich über nen Transistor oder
> Widerstand?
entweder, oder?
egal, es geht problemlos direkt mit widerstand.

> Keine Ahnung wie viel die Beine des Tiny aushalten, aber bei
> nem atmega8 sinds ja schon nur 20mA...nicht das er immer resettet wird
eine led verkraftet auch nicht viel mehr, falls überhaupt. außerdem sagt 
das avr-tutorial 1k.
wie viel strom steht im datenblatt. außerdem resettet der controller 
nicht, er geht einfach mit der spannung in die knie.
im datenblatt ist die augangsstufe zu finden.

> oder so, wenn die LED angeht.
> Hast du mal die Optimierung beim Kompilieren ausgeschaltet? Vielleicht
> hilft das :D
soll die while(1) wegfallen? also bitte, bei so einem progrämmchen...

@Florian Idb (fbeek):
wie schaut denn deine platine aus? bist du dir sicher, dass du an B3 
bist? dass die led flackert, wenn du an die isp leisten fasst, ist 
praktisch normal, weil B3 ja zur ISP gehört.
legt den verdacht nahe, dass du mit deiner "high"-spannung nicht an B3 
gehst.

Autor: Florian Idb (fbeek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Leute,

so hab mich gerade wieder drangesetzt.

Also die Fuses sind ok.

Was auch komisch ist das die LED ausegeht sobald ich GND egal an welcher 
stelle berühre.

Hab mein Voltmeter an GND geklemmt und sobal ich + am Volmeter berühre 
flackert die LED auch .

Nur zur Info PB3 gehört nicht mehr zum ISP :-)

Autor: Florian Idb (fbeek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry hatte noch vergessen zu erwähnen das die LED nun auch leutetwenn 
kein HIGH anliegt. Allerding schwächer als normal.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian Idb wrote:
> Also die Fuses sind ok.

Kann ja jeder sagen.

Kost aber nix, es zu prüfen.
Also einfach ne Schleife mit LED togglen und _delay_ms(1000); drin und 
dann die Zeit prüfen.


> Was auch komisch ist das die LED ausegeht sobald ich GND egal an welcher
> stelle berühre.

Das ist zu 99,9% ein offener Eingang.
Vielleicht das Beinchen abgeknickt?


Peter

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H* wrote:
> @Florian Idb (fbeek):
> legt den verdacht nahe, dass du mit deiner "high"-spannung nicht an B3
> gehst.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kalte Lötstelle?
Mal direkt am Pin PB3 die Spannung gemessen?

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch mal ein paar Bilder...

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
_delay_ms(1000) kannst Du vergessen. Dem geht nicht.

Vergiss mal Deine Schleife.

Probier mal:

int main (void)
{
  DDRB |= (1<<PB2);
  PORTB &= ~(1<<PB2);
  return 0;
}

bzw.

int main (void)
{
  DDRB |= (1<<PB2);
  PORTB |= (1<<PB2);
  return 0;
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes wrote:
> _delay_ms(1000) kannst Du vergessen. Dem geht nicht.

Das muß dann schon aber ein GCC ganz tief aus der Mottenkiste sein.

Ab WINAVR 20071221 und neuer geht das.


Peter

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis, Peter.

Hab's grad nachgelesen.

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael:
>außerdem resettet der controller
>nicht, er geht einfach mit der spannung in die knie.
Joa und wenn der Brown-Out an ist geht er aus...
Evtl steht der Brown out auch auf 4,5 oder was das war und er geht erst 
garnicht richtig an, weil er ja nur 3,3 hat?

Mhh ne, war das Brown-Out? Dises BODEN Flag meine ich :D

Autor: Zens Uhr (panzerkeks) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal den internen PullUp Widerstand für deinen Pin zu aktivieren.
DDRB &= ~(1<<PB3); //PB3 als Input
PORTB |= (1<<PB3); //internal Pullup an PINB3 aktivieren

Autor: Michael H* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian S. wrote:
> @Michael:
>>außerdem resettet der controller
>>nicht, er geht einfach mit der spannung in die knie.
> Joa und wenn der Brown-Out an ist geht er aus...
nein... er geht mit der spannung am ausgang in die knie. die pins haben 
eine strombegrenzung. bis du da ordentlich strom durch den controller 
bekommst, müsstest du schon mehrere ports parallel schalten...

Autor: Fabian S. (jacky2k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhh ok...

Autor: nullahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für mich klingt das nach Parasitärer Versorgung durch Portpins.
Irgendwo schlecht gebraten.

Wie sieht den die Hardware aus Beschreibung oder Photo.

mfg

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.