Hallo,
habe folgendes Problem. Benutze einen Atmega168 um ein paar LEDs
anzusteuern.
Nur funktioniert das nicht wie gewollt.
Ich wollte eigtl. den internen 8Mhz Taktgenerator verwenden.
Nach langem Fehlersuchen bin ich mit einem Taktfrequenzgenerator an die
XATL1,2 Eingänge gegangen und habe einen externen Takt von jetzt 8Mhz
angelegt.
Nachdem ich die Fuses eingestellt hatte - Siehe da es funktioniert.
Ich Frage mich jetzt wieso? Wieso mit externem Takt aber nicht mit
internen..?
Viele Gruesse und danke!
ich sehe da auf deiner Platine eine offfene Drahtbrücke... daran könnte
es gelegen haben. Außerdem ist deine Spannungsversorgung instabil, da
ist ein ripple von 280 mV drauf.
Drahtbruecken sind alle mit Durchgangspruefer gecheckt...
Stuetzkondensatoren sind verbaut, Spannung ist stabil.
Was soll ich genauer beschreiben?
Eingestellt wurde der Osz. ueber die Fuses AVR Studio... gibts kein
Code..
Bernd schrieb:> Wuerdest du dein Gehirn einschalten, haettest du den Zusammenhang> zwischen Frage und Gewolltem erkannt GRINS
Die Frage ist ja nicht wie du dein Quarz initialisierst, sondern was du
von deinen LEDs erwartest?
Sollen sie im 1Hz Takt blinken? -> Woher soll das hier einer im Forum
wissen?
Daher die Frage:
Wie sieht dein Code zu den LEDs aus -> Was erwartest du? -> Was bekommst
du?
-> Was passiert mit dem internen Osz.? Was passiert beim einschalten des
externen?
WAS FUNKTIONIERT NICHT ?!? Ohne eine Antwort auf diese Frage wird
niemand dir helfen können weil niemand den Zusammenhang verstehen kann,
da du keinen Zusammenhang bescheibst!
Alsbo bitte nicht so vorlaut!
Das ist der Code. Jetzt wird jede halbe Sekunde eine weitere LED
angemacht, in dem Fall in weiss.
Mit internem Takt funktioniert das ganze halt gar nicht und mit externem
auch nur alle 2 von 5 versuchen. Dh wenn ich die Stromzufuhr trenne und
wieder anschliesse funktioniert es auch nicht immer.
Ziel ist, jede LED einzeln ansteuern zu koennen..Farbe etc..
Mit dem Code natuerlich nicht, der schickt jetzt einfach nur einsen
durch..
Bernd schrieb:> Mit internem Takt funktioniert das ganze halt gar nicht und mit externem> auch nur alle 2 von 5 versuchen. Dh wenn ich die Stromzufuhr trenne und> wieder anschliesse funktioniert es auch nicht immer.
Das riecht aber nach einem HW-Problem. Dann solltest Du Schaltplan,
Aufbau, Stromversorgung ... zeigen.
Gruß Dietrich
Bernd schrieb:> Hier der Schaltplan, sind aber keine Werte notiert.>> lg
Der zweite TLC ist das Problem. Musst du noch korrekt dimensionieren.
Außerdem solltest du sternförmige Netze benutzen. Dein Layout kann zu
Einkoppelungen führen
opamp schrieb:> Der zweite TLC ist das Problem. Musst du noch korrekt dimensionieren.> Außerdem solltest du sternförmige Netze benutzen. Dein Layout kann zu> Einkoppelungen führen
Was ist am 2. TLC bitte anders als bei den anderen in seinem Schaltplan?
Bezüglich der Einkopplungen ist der sternförmige Aufbau nicht unbedingt
nötig, nach seiner Software liegt die Taktfrequenz ja bei kleinen
1000Hz.
Bernd schrieb:> for (int i= 0; i<1;i++)
Hä? Hast du dir mal überlegt, wie oft diese Schleife durchlaufen wird?
Fuse den AVR mal auf 'Int RC Osc.' und lange Startup Zeit (meistens
64ms). Alsdann löschst du die CKDIV8 Fuse und änderst das Statement
Bernd schrieb:> #define F_CPU 6000000UL
auf 8000000UL.
opamp schrieb:> Der zweite TLC ist das Problem.
Nun muß ich schon wieder zum Gedankenleser gehen, welcher TLCxxx das
sein soll.
Ein TLC5940 wohl nicht.
Man kanns mit dem Informationsgeiz aber auch übertreiben.
Matthias Sch. schrieb:> Hä? Hast du dir mal überlegt, wie oft diese Schleife durchlaufen wird?
Habe den Wert oefter variiert, jetzt gerade braeuchte man auch keine
:)..
Heinrich schrieb:> Was ist am 2. TLC bitte anders als bei den anderen in seinem Schaltplan?
Die anderen stehen an 1., 3. und 4. Stelle. Wenn das kein Unterschied
ist!?
Bernd schrieb:> Matthias Sch. schrieb:>> Hä? Hast du dir mal überlegt, wie oft diese Schleife durchlaufen wird?>> Habe den Wert oefter variiert, jetzt gerade braeuchte man auch keine> :)..
Ok, das wird mir hier zu blöd - schönes Leben noch.
Bernd schrieb:> Habe den Wert oefter variiert, jetzt gerade braeuchte man auch keine
Du hast keine Ahnung, wie man ein Schieberegister ansteuert und
probierst ohne Sinn und Verstand irgendwelchen Unsinn aus.
Du hast 4 TLCs kaskadiert. Damit hast du 32 Ausgänge. Diese 32 Ausgänge
musst du ansteuern, d.h. du musst 32 Bit ausgeben. Immer.
Mit welchem Takt das geschieht, spielt dabei überhaupt keine Rolle.
Das zuerst ausgegebene Bit landet am letzten Ausgang des vierten SRs.
Wenn diese 32 Bit ausgegeben sind, sind sie aber noch nicht an den
Ausgängen des jeweiligen TLC. Die Bits müssen jetzt mit einem Impuls auf
die Ausgänge geschaufelt werden. Dazu dient der LE-Eingang. Dieser
Eingang ist weder in deiner Skizze zu finden, noch wird er im
Progrämmchen angesteuert. Die Ausgänge der TLCs haben damit die Werte,
die beim Einschalten zufällig vorhanden sind. Deswegen geht es manchmal
und manchmal nicht. Tatsächlich geht es aber überhaupt nicht.
mfg.
Mir ist wohl bewusst wie so ein Schieberegister funktioniert.
Die Schleife ist lediglich dazu dagewesen das ich nicht nur einsen
durchschicke, um zu gucken ob die Farben auch funktionieren...
Der LE ist ist die ganze Zeit auf 1, damit die Zustaende direkt auf den
Ausgang 'pulsiert' werden.
Hat schon bei dem normalen LED Cube funktioniert.
Das es manchnmal ging und manchmal nicht, lag daran das ich den
Programmer drinnen gelassen habe, nehme ich den raus geht es immer mit
dem externen Takt.
Bernd schrieb:> Mir ist wohl bewusst wie so ein Schieberegister funktioniert.
Das ist aber schön, dass du so viel Ahnung hast und wir alle dumme
Idioten sind.
Übrigens ist es sehr schade, dass sich nicht jeder so klar ausdrücken
kann wie du. Wir sollten diesen Post als Musterbeispiel verlinken, um zu
zeigen, wie man ein Problem von Anfang an mit allen nötigen
Informationen beschreibt, so dass es mit Hilfe aller schnell gelöst
wird.
opamp schrieb:> Das ist aber schön, dass du so viel Ahnung hast und wir alle dumme> Idioten sind.
Das habe ich nicht gesagt... ;)
Man lernt immer dazu, beim naechsten mal gibts alles auf einmal...
Bernd schrieb:> lag daran das ich den Programmer drinnen gelassen habe,
Welchen?
> nehme ich den raus geht es immer mit dem externen Takt.
Das würde mir zu dneken geben...
Denn die Frage bleibt: Warum?
Lothar Miller schrieb:> Das würde mir zu dneken geben...
Atmel AVR ISPmk|| ist der Programmer...
Ja ich frage mich so vieles. Mit dem internen Takt gehts nicht, mit nem
Quarz gehts nicht, nur wenn ich einen externen Generator anschliesse
geht es, dann aber auch nur wenn ich vorher den Programmer wieder
rausziehe..
Bernd schrieb:> bin ich mit einem Taktfrequenzgenerator an die XATL1,2 Eingänge> gegangen
"Ksatl Eins Komma Zwei"? Seltsame Pins...
Bernd schrieb:> nur wenn ich einen externen Generator anschliesse geht es
Welche Signalform mit welcher Amplitude und welcher Frequenz wo
angeschlossen?
> aber auch nur wenn ich vorher den Programmer wieder rausziehe..
Ich würde mal den Reset kontrollieren...
Ich würde erstmal einfach nur eine direkt angeschlossene LED (mit
Vorwiderstand) im Sekundentakt blinken lassen.
Die ganze andere Peripherie soll erstmal wurscht sein. So bekommst du
heraus, ob du ein Problem mit dem Mikrocontroller und seinem Takt hast,
oder mit dem Rest der Schaltung.
Wie immer gilt die Grundregel: Zerlege komplexe Probleme in einfachere,
bis sie so klein sind, dass du sie beherrschen kannst.
Im Extremfall könnte es darauf hinauslaufen, dass du die LED (mit
Vorwiderstand) an die Stromversorgung anschließt, um zu sehen, ob die
Stromversorgung überhaupt funktioniert.
Klingt blöd, aber so macht man das halt. Das Prinzip gilt im Großen wie
im Kleinen und beschränkt sich nicht nur auf die Elektronik bzw
Softwareentwicklung.
Deine Herangehensweise ist völlig falsch. Drehe hier an einer Schraube,
Drücke da mal einen Knopf, biege dort etwas hin. Du hast keine Ahnung,
was du da tust und warum du es tust. Du hoffst auf den zufälligen
Erfolg. Mag sein, dass das ab und zu klappt, aber langfristig ist das
keine Erfolgreiche Strategie.