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
Beim RESET werden alle Pins auf Hochohmig (Eingang ohne Pullup) geschaltet. Was danach passiert ist das was dein Programm daraus generiert...
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;)
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ß
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.