Hallo ich habe ne .c und .h-Datei, die Daten für einen kleine LED-Blink-Routine enthalten. Diese integriere ich dann immer ganz flexibel. So in einem neuen Projekt ist es nun aber so, dass die betreffende LED viel schwächer leuchtet, als im anderen Projekt. Ich habe jetzt schon alles, bis auf die blink-relevanten Sachen auskommentiert und trotzdem ist's noch schwach. Also der selbe Aufbau, dieselbe Fuse-Konfiguration (Atmega32). Very strange. Habt ihr ne Idee?
Gruß zurück, Naja, ist das so relevant? Ich schrieb ja, dass die ganze Sache in einem anderen Projekt funktioniert, damit sind die Fuseeinstellungen usw. also korrekt. Aber zur Beruhigung. Die LED hängt am PORTD6 und JTAG ist ausgeschaltet.
>Aber zur Beruhigung. Die LED hängt am PORTD6 und JTAG ist ausgeschaltet. Dann schalte die LED doch einfach nicht immer wieder aus;) Nur mal so ins blaue geraten.
Wie viel dunkler ist die LED? Kannst du mal den Strom messen, den jede LED abkriegt? Exemplarstreuung kann zwar sein, aber so extrem sollts eigentlich nicht vorkommen.
Zum Vergleich: Die LED ist normalerweise so hell, dass man nicht wirklich reinschauen kann. Im Problemfall kann ich mit dem Auge ganz nah rangehen und die Verdrahtung des Halbleiters in der LED-Plastik sehen ;)
>Im Problemfall kann ich mit dem Auge ganz nah rangehen und die >Verdrahtung des Halbleiters in der LED-Plastik sehen ;) Schalte den Pin doch mal auf Ausgang. Schon wieder ins blaue geraten;)
> Im Problemfall kann ich mit dem Auge ganz nah rangehen
In meine Kristallkuigel kann ich auch reinschauen, da seh ich nix....
holger schrieb: > Schon wieder ins blaue geraten;) Stimmt! ist nämlich ne blaue LED ;) So, wurde auf Ausgang geschaltet und immer noch das selbe Problem. Ich hab sogar das Projekt nochmal komplett neu erstellt! Auch wenn ich nen anderen Port nehme ist das Problem noch identisch.
1 | #include <avr/io.h> |
2 | #include <avr/delay.h> |
3 | #include "gaga.h" |
4 | |
5 | |
6 | void LED_EVENT(char LED_Index, unsigned int Speed){ |
7 | |
8 | int i; |
9 | for(i=0;i<Speed/1.5;i++) _delay_ms(1); |
10 | LED_PORT |= (1<<LED_Index); |
11 | for(i=0;i<Speed;i++) _delay_ms(1); |
12 | LED_PORT &=~ (1<<LED_Index); |
13 | |
14 | } |
und
1 | #ifndef _GAGA_H |
2 | #define _GAGA_H |
3 | #endif |
4 | |
5 | #include <avr/io.h> |
6 | |
7 | #define LED_DDR DDRD |
8 | #define LED_PORT PORTD |
9 | #define LED1 PD6 |
10 | #define LED2 PD5 |
11 | |
12 | |
13 | |
14 | |
15 | void LED_EVENT(char LED_Index, unsigned int Speed); |
>So, wurde auf Ausgang geschaltet und immer noch das selbe Problem. >Ich hab sogar das Projekt nochmal komplett neu erstellt! >Auch wenn ich nen anderen Port nehme ist das Problem noch identisch. Dann ist wohl die LED kaputt. Oder dein Programm falsch;)
Wieso denn LED kaputt? läuft doch bei meinen anderen Sachen auch, wie es soll. Und die Software funktioniert bei den anderen Projekten ja auch! Deswegen ist das doch so misteriös.
>Und die Software funktioniert bei den anderen Projekten ja auch! Dann nimm doch die Software aus den anderen Projekten. >Deswegen ist das doch so misteriös. Für mich nicht.
So Fehler endlich gefunden: die Ausgangsdeklaration war's! Mist, tut mir Leid, dass ich euch damit auf Trab gehalten habe. Werde das gleich noch in meine Dateien integrieren, damit sowas nicht nochmal passiert. Könntet ihr mir evtl. noch kurz erklären, wieso dann die LED in diesem Fall weniger 'Saft' bekommt?
Weil die LED dann nur Saft über den internen Pullup kriegt. Und die paar mA/µA reichen, dass das Ding gerade noch so glüht.
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.