Forum: Mikrocontroller und Digitale Elektronik [Attiny13P] Komisches Verhalten.


von Florian (Gast)


Lesenswert?

Guten Morgen zusammen...

Ich habe ein kleines Problem mit meinem Tiny13P...

Und zwar sieht die Sache so aus:

Angefangen zu Programmieren habe ich mit Bascom. Dort habe ich ein 
einfaches Lauflicht programmiert und dies funktionierte nach dem Flashen 
auch so, wie man es erwartet.

Doch jetzt bin ich zu AVRStudio5 gewechselt, weil ich plane auch andere 
Chips zu nutzen mit mehr als 4kb Speicher (begrenzung in Bascom).

Den Lauflichtcode habe ich also im Studio neu geschrieben. Funktioniert 
auch tadellos.

Jedoch macht mir eine Kleinigkeit Sorgen...

5V beziehe ich via USB-Adapter von meinem Computer. Plus und Minus gehen 
auf mein Steckbrett mit der Schaltung. Die 4 LEDs für das Lauflicht sind 
an PB1 - PB4 (PB4 = LED1 -> PB1 = LED4) mit der Anode gesteckt. Kathode 
geht folglich auf Minus. Zwischen Plus und Minus des Tinys ist ein 100n 
Kondensator. Pin8 und Pin1 des Tinys sind auch verbunden.
Minus des Tinys ist NICHT angeschlossen, Plus schon. Die 4 LEDs leuchten 
minimal. Das Programm des Tinys läuft nicht. BOD ist auf 4,xV 
eingestellt.
PB0 ist als Eingang definiert, Pull-Up Widerstand ist an auf PB0. dran 
hängt ein Taster der gegen GND zieht. Drücke ich diesen Taster blinken 
die LEDs gleichzeitig im Takt.

Stecke ich den Minus vom USB dazu, läuft alles wunderbar.

Nun stellt sich mir die Frage ob das an meinem Steckbrett liegt, am 
USB->Steckbrett"adapter", am Programm auf dem Tiny oder ob das "normal" 
ist.

einige weitere Infos zum Programm:

#ifndef F_CPU
#define F_CPU 1000000UL                      //CPU-Takt setzen (1MHZ)
#endif

#include <avr/io.h>                        //standart
#include <util/delay.h>                      //_delay_ms(x) Funktion 
nutzen

void sleep(uint16_t ms) {                    //---------------
    for (; ms>0; ms--) _delay_ms(1);              //Sleep-Funktion
}                                //---------------

void rundlicht() {                        //---------------
    PORTB = 0b00010001;                    //LED1 an
    sleep(200);                      //warte DELAY ab
    PORTB = 0b00001001;                    //LED2 an
    sleep(200);                      //warte DELAY ab
    PORTB = 0b00000101;                    //LED3 an
    sleep(200);                      //warte DELAY ab
    PORTB = 0b00000011;                    //LED4 an
    sleep(200);                      //warte DELAY ab
}

int main(void)
{
  DDRB  = 0b00011110;
    PORTB = 0b00000001;
  sleep(100);                          //Pull-Up setzen lassen

while (1)
{
rundlicht();
}

}

von Peter R. (pnu)


Lesenswert?

Florian schrieb:
> Minus des Tinys ist NICHT angeschlossen

Das dürfte das eigentliche Problem sein. Normalerweise müssen alle 
Minusanschlüsse miteinander verbunden sein.

Ein Schaltplan dürfte weitaus leichter zur Klärung beitragen.

von Thomas E. (thomase)


Lesenswert?

Florian schrieb:
> Nun stellt sich mir die Frage ob das an meinem Steckbrett liegt, am
> USB->Steckbrett"adapter", am Programm auf dem Tiny oder ob das "normal"
> ist.
Was ist normal? Daß es ohne Minus nicht läuft? Was erwartest du denn?
Natürlich ist das normal.

mfg.

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

So funktioniert alles ...

von Florian (Gast)


Angehängte Dateien:

Lesenswert?

So leuchten die LEDs minimal

von Thomas E. (thomase)


Lesenswert?

Florian schrieb:
> So leuchten die LEDs minimal
Das kommt weil dein Programmer an den Ports hängt und der Strom 
sozusagen seinen Weg zu GND darüber findet. Deswegen glimmen die Leds.

mfg.

von Florian (Gast)


Lesenswert?

Programmer ist nicht mit angeschlossen... ich muss den Tiny immer hin 
und her stecken :P

von Thomas E. (thomase)


Lesenswert?

Florian schrieb:
> Programmer ist nicht mit angeschlossen... ich muss den Tiny immer hin
> und her stecken :P
An deinem Controller hängt Plus. Da GND nicht angeschlossen ist, verhält 
der sich jetzt wie ein Vorwiderstand für die Leds, die an den Ports und 
mit der anderen Seite an Gnd liegen. Dann fliesst ein kleiner Stom, der 
die Leds glimmen lässt.

mfg.

von Florian (Gast)


Lesenswert?

Nochn zusatz:

Grade rausgefunden dass alle LEDs zusammen leuchten wenn ich 5V an PB0 
lege ... sollte auch nicht so sein oder`?

von Thomas E. (thomase)


Lesenswert?

Florian schrieb:
> Grade rausgefunden dass alle LEDs zusammen leuchten wenn ich 5V an PB0
> lege ... sollte auch nicht so sein oder`?
Jetzt hör auf da sinnlos mit rumzuspielen. Es werden Plus und GND 
angeschlossen und dann funktioniert es. Basta.
Irgendwelche Pins nicht anzuschliessen und sich dann darüber zu wundern, 
was gerade passiert, wenn man hier oder da mit irgendeinem Potential 
rangeht, ist einfach nur Blödsinn.

Und ja, es liegt an der internen Beschaltung der Ports, die Überspannung 
über Dioden ableiten. Das ist kein Phänomen. Siehe Datenblatt 
"IO-Ports".

mfg.

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.