Forum: Mikrocontroller und Digitale Elektronik Ausgaenge bei Reset High, warum?


von lulli (Gast)


Lesenswert?

Hallo Leute,
also ich habe folgendes Problem:
Ich habe ein kleines Programm fuer den ATMEGA8515 geschrieben.
PORTD dient als Ausgang bei dem die Pins in einer gewissen Sequenz 
High/Low gwschaltet werden. Benutzt wird Timer1 Interrupt. Das 
funktioniert soweit auch gut, aber was mich irritiert ist, dass bei 
einem Reset die Pins fuer etwa eine Sekunde auf High stehen(in der 
Simulation ist das nicht so!). Es sind auch nur die Pins auf High, 
welche ich als Ausgaenge definiert habe, also wenn ich z.B. DDRD auf 
0x0F setze sind nur PD0...PD3 fuer etwa eine Sekunde auf High.
Dieses Verhalten habe ich vorher nicht festgestellt, erst seitdem ich 
den Timer mit 1/64tel des Systemtakts laufen lasse tritt das auf.
Allerdings wird der Timer erst initialisiert nachdem die Ausgaenge 
bereits definiert sind.
Zuerst habe ich vermutet, dass bei einem Reset vielleicht alle Ausgaenge 
auf High gesetzt werden, aber dann muessten ja alle Pins High sein, 
oder?

Wuerde mich freuen, wenn mir jemand dieses Verhalten erlaeutern kann.

Danke vorab und nen schoenen Wochenstart
lulli

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Beim RESET werden alle Pins auf Hochohmig (Eingang ohne Pullup) 
geschaltet.
Was danach passiert ist das was dein Programm daraus generiert...

von lulli (Gast)


Lesenswert?

Hallo,
ja so hatte ich das aus dem Datenblatt auch interpretiert.
Habe nun festgestellt, dass meine Bits 'invertiert' angesteuert werden 
muessen. Kann mir ds zwar nicht erklaeren, aber es passiert folgendes:
Hier mein Testprogramm,

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

int main(void) {

    DDRD = 0x3F;         // Port als Ausgang
    PORTD = 0x04;        //PD2 High

   while(1){
    }


    return 0;
}

mein PD3 ist low, der Rest High...
Benutze das STK500 und AVR Studio.
PORTD ist an LEDs angeschlossen und es leuchten LEDS0,1,3,4,5
Irgendwie habe ich nen Wurm fabriziert glaube ich.
Gruss mit Hoffnung auf klaerung;)

von (prx) A. K. (prx)


Lesenswert?

Die LEDs vom STK500 arbeiten bekanntermassen umgekehrt, 0=an 1=aus.

von Jean P. (fubu1000)


Lesenswert?

Hmm,
habe zwar kein STK500 , aber ich wette das die LEd's gegen VCC 
geschaltet sind (low activ) und deswegen natürlich nur leuchten wenn du 
die Pins auf 0 setzt.

Gruß

von lulli (Gast)


Lesenswert?

Ok, danke.
Daran erkennt man die echten Anfaenger.
Leuchtet ein und wird sich gemerkt;)

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.