mega ist sicher richtig beschaltet. das ist ein programmier board,
stk500 kompatibel. daran kanns mal nicht liegen.
habs sogar mit 2 µCs versucht. hilft auch nichts.
wolf schrieb:> mega ist sicher richtig beschaltet. das ist ein programmier board,> stk500 kompatibel. daran kanns mal nicht liegen.
Na dann.
Wenn die Hardware keinen Fehler hat, dein Programm keinen Fehler hat,
dann kanns eigentlich nur noch an den Geistern liegen, die dir nicht
gewogen sind.
(Hast du schon mal mit einem Voltmeter nachgemessen, ob die Pins am µC
auf 1 sind, ob am ULN die richtigen Signale anliegen, ob die ULN
Ausgänge die richtigen Pegel haben, ob deine Spannungsversorgung
einbricht, ob du irgendwo einen Kurzen gelötet hast, etc.
Bei "8" sind alle Segmente an, Du hast also den größten Strom.
Vielleicht hat es damit etwas zu tun - obwohl mir nicht so richtig was
einfällt, was da passieren könnte. Wenn die Spannung einbricht, würde ja
nur die Helligkeit geringer werden, oder der µC macht Reset - was ja
nach Deiner Beschreibung nicht passiert.
Hast Du die Signalwege bei der "8" mal durchgemessen? Mal nur die "8"
ausgegeben?
Gruß Dietrich
wolf schrieb:> außer die 8 leuchtet nicht
Dann ist der GND des ULN offen.
Solange ein Eingang 0 ist, kriegt er GND über die Substratdiode.
Sind aber alle 1, fehlt der GND.
Peter
Peter Dannegger schrieb:> wolf schrieb:>> außer die 8 leuchtet nicht>> Dann ist der GND des ULN offen.> Solange ein Eingang 0 ist, kriegt er GND über die Substratdiode.> Sind aber alle 1, fehlt der GND.
Macht Sinn!
Jetzt bin ich auf die Rückmeldung neugierig.
Peter Dannegger schrieb:> wolf schrieb:>> außer die 8 leuchtet nicht>> Dann ist der GND des ULN offen.> Solange ein Eingang 0 ist, kriegt er GND über die Substratdiode.> Sind aber alle 1, fehlt der GND.>>> Peter
habs nochmal überprüft...3mal durchgepipst...gnd ist da.
an der versorgung kanns auch nicht liegen, da ich ein 60 w netzteil
habe.
habs auch mal am portb versucht. leider alles kein erfolg.
pin 9 vom uln muss doch nirgends hin oder?
bzw. was soll der überhaupt machen?
wolf schrieb:>> pin 9 vom uln muss doch nirgends hin oder?> bzw. was soll der überhaupt machen?
Ähm.
Wenn ein Pin im Datenblatt mit GND beschriftet ist, dann solltest du den
auch tunlichst an GND anhängen. Und dieses 'solltest' ist kein 'du
kannst es dir aussuchen' sondern ein amerikanisches 'du machst das so!'
Also hatte Peter doch recht. Alter Fuchs.
Karl Heinz Buchegger schrieb:> wolf schrieb:>>>>> pin 9 vom uln muss doch nirgends hin oder?>> bzw. was soll der überhaupt machen?>> Ähm.> Wenn ein Pin im Datenblatt mit GND beschriftet ist, dann solltest du den> auch tunlichst an GND anhängen. Und dieses 'solltest' ist kein 'du> kannst es dir aussuchen' sondern ein amerikanisches 'du machst das so!'>> Also hatte Peter doch recht. Alter Fuchs.
bei mir ist der pin 8 gnd, pin 9 sind die "common free wheeling diodes".
hab jetzt auch noch gemessen. wenn ich nur eine 8 rausschreibe, dann hab
ich an keinem ausgang von atmega "high".
das ist alles was ich zu berichten habe.
wolf schrieb:> bei mir ist der pin 8 gnd, pin 9 sind die "common free wheeling diodes".
Das ist richtig, da Du ja den ULN2003 hast - zumindest nach Deiner
Skizze. Ist das auch so?
wolf schrieb:> wenn ich nur eine 8 rausschreibe, dann hab> ich an keinem ausgang von atmega "high".
Jetzt ist das Rückbauen angesagt: alles abklemmen und nur den µC
durchmessen. Und auch den µC mal tauschen.
Dietrich L. schrieb:> wolf schrieb:>> bei mir ist der pin 8 gnd, pin 9 sind die "common free wheeling diodes".>> Das ist richtig, da Du ja den ULN2003 hast - zumindest nach Deiner> Skizze. Ist das auch so?
genau so ist es...rückbauen muss ich eigentlich nichts. ich hab das
ganze mit stecker verbunden. werde es heute im laufe des tages mal
testen und dann berichten.
wolf schrieb:> Karl Heinz Buchegger schrieb:>> wolf schrieb:>>>>>>>> pin 9 vom uln muss doch nirgends hin oder?>>> bzw. was soll der überhaupt machen?>>>> Ähm.>> Wenn ein Pin im Datenblatt mit GND beschriftet ist, dann solltest du den>> auch tunlichst an GND anhängen. Und dieses 'solltest' ist kein 'du>> kannst es dir aussuchen' sondern ein amerikanisches 'du machst das so!'>>>> Also hatte Peter doch recht. Alter Fuchs.>>> bei mir ist der pin 8 gnd, pin 9 sind die "common free wheeling diodes".
Mein Fehler.
Ich hab beim 2803 nachgesehen.
Da ist 9 GND
Hi
Mir fällt auf, das du in deinem verlinkten Beitrag die 8 anders
definierst...
>unsigned char zahl_0=0x3f;>unsigned char zahl_1=0x86;>unsigned char zahl_2=0x5b;>unsigned char zahl_3=0x4f;>unsigned char zahl_4=0x66;>unsigned char zahl_5=0x6d;>unsigned char zahl_6=0x7d;>unsigned char zahl_7=0x87;>>unsigned char zahl_8=0x00;>unsigned char zahl_9=0x6f;
Kann es sein, das der obige Code gar nicht im Controller ist und immer
noch der Code aus dem anderen Beitrag ?
Gruß oldmax
oldmax schrieb:> Hi> Mir fällt auf, das du in deinem verlinkten Beitrag die 8 anders> definierst...>>>unsigned char zahl_0=0x3f;>>unsigned char zahl_1=0x86;>>unsigned char zahl_2=0x5b;>>unsigned char zahl_3=0x4f;>>unsigned char zahl_4=0x66;>>unsigned char zahl_5=0x6d;>>unsigned char zahl_6=0x7d;>>unsigned char zahl_7=0x87;>>>unsigned char zahl_8=0x00;>>unsigned char zahl_9=0x6f;>> Kann es sein, das der obige Code gar nicht im Controller ist und immer> noch der Code aus dem anderen Beitrag ?> Gruß oldmax
folgendes steht im controller:
#define eight 0b01111111
Hi
Wirklich ? Ich hab das auch gelesen, aber es ist seltsam, wenn mann mal
so über die Antworten liest und es scheinbar keine Erklärung gibt. Du
sagst ja selbst, andere Zahlen funktionieren und wenn du die Bits bei
der Acht nicht ausmaskierst, was ich bei meinen bescheidenen
C-Kenntnissen auch nicht sehe, kann es nur sein das du glaubst, das die
Definition von eight im Controller steht. (Oder gibt es bei "C" ein
reserviertes Wort "eight"?
Gruß oldmax
oldmax schrieb:> Definition von eight im Controller steht. (Oder gibt es bei "C" ein> reserviertes Wort "eight"?
Nein, gibt es nicht.
Softwareseitig ist soweit alles in Ordnung, wenn das hier ganz am Anfang
gepostete Programm so im Controller geflasht wurde.
Kann nur noch ein Hardwareproblem sein.
Hi
>Kann nur noch ein Hardwareproblem sein.
Dann muss er aber externe Bauteile an der Skizze vorbei gelogen haben.
Ich glaub eher daran, und das ist einfach augenscheinlich, das das
Programm aus dem anderen Post drin ist. Mir leuchtet nicht ein, wie bei
einer 8 (Alls Segmente ein) plötzlich alls duster werden soll. Ist
absolut nicht logisch, aber ich bin wirklich mal auf die Auflösung
gespannt.
Gruß oldmax
oldmax schrieb:> Hi>>>Kann nur noch ein Hardwareproblem sein.> Dann muss er aber externe Bauteile an der Skizze vorbei gelogen haben.> Ich glaub eher daran, und das ist einfach augenscheinlich, das das> Programm aus dem anderen Post drin ist.
Daher ja auch die Einschränkung "wenn geflasht wie gepostet".
Tja.
Solange er nicht davon abgeht, da ständig seine Zahlenreihe
durchzulaufen, und stattdessen einfach mal eine 8, und nur eine 8, auf
den Port ausgibt, damit man mal in aller Ruhe messen kann (zb ob auch
alle Portpins auf 1 sind, ob am ULN alle Bits da sind, etc), wird das
auch nichts.
Auch Fehlersuche will gelernt sein.
(Ich denke trotzdem immer noch, dass irgendwo die Masse fehlt. Peter hat
ein Szenario beschrieben, welches genau passen würde:
Im ULN sind alle Treiber masseseitig verbunden und es gibt eine
Substratdiode von der Masse zum Eingang. Fehlt dem ULN die direkte
Masseverbindung, dann gehts über diese Diode auf den Eingang und da
mindestens 1 Eingang über den Mega-Portpin auf Masse liegt, hat der ULN
sowas wie eine "Hilfsmasse". Sind aber alle Pins vom Mega auf 1, dann
ist es Essig mit dieser 'Hilfsmasse'.
Als Szenario ist das plausibel und es würde genau der Beobachtung
entsprechen. Entscheiden kann man das aber nur, indem man alle IC aus
dem Sockel nimmt und am Sockel den bewussten Pin nach Masse
durchklingelt. Ich wette das hat er nicht getan, sondern die IC im
Sockel gelassen, wodurch das durchklingeln nur noch bedingt
aussagekräftig ist.
Oder aber man gibt einfach mal eine 8 aus und tippt mit einem Stück
Draht, der an einem Ende ganz sicher auf Masse liegt einfach mal den GND
Pin vom ULN an. Kann ja auch eine kalte Löststelle sein.
so ich habs jetzt endlich...und es war die masse :)
das problem lag daran, dass ich mein atmega32 nicht mit dem selben
netzteil betrieben hatte als die segmente. somit keine gemeinsame masse.
also riesen dank für die hilfe leute.
wolf schrieb:> so ich habs jetzt endlich...und es war die masse :)
Schön, dass es keine Hexerei war! Und Glückwunsch an Peter Dannegger,
der schon sehr früh auf diesen Fehler gekommen war!
Gruß Dietrich
wo ein problem schon das nächste:
ich hab ja 4 solche segmente. zusätzlich habe ich ja noch zusätzlich 7
taster die ich einlesen muss (heim +, heim -, gast +, gast-, uhr start,
uhr stopp, uhr auf 45min stellen).
das geht sich allerdings nicht mit den pins aus. was soll ich eurer
meinung nach machen? multiplexen? wäre es vielicht gleich besser eine
tastatur zu verwenden? dazu ist die steuerungseinheit ca. 100m von der
anzeigetafel entfernt. also ist auch einiges an kabelaufwand nötig. ist
es möglich so etwas über funk zu steuern, oder gar nicht besser?
schon mal großen dank für die hilfe.
Anzeige multiplexen.
Dann bleiben dir für die Tasten noch gengend Pins übrig.
An deiner Stelle würde ich allerdings tatsächlich eine Trennung zwischen
Anzeige und Bedieneinheit anstreben.
> ist es möglich so etwas über funk zu steuern
Mein persönliches Credo: Wer Funk kennt, nimmt Kabel.
gewöhnliche rs232 mit 9600 Baud sollte ausreichend schnell sein.
wolf schrieb:> ist> es möglich so etwas über funk zu steuern, oder gar nicht besser?
Möglich schon, aber nachdem du 2 Wochen gebraucht hast für eine fehlende
Masseverbindung, trotz aktiver Hilfe, hättest du längst weisse Haare bis
du etwas brauchbares empfängst. Fang lieber ganz einfach an.
Gruss Reinhard
Hi N
na ja, sicherlich, ist es nicht einfach, aber mit dem Projekt hast du
die Chance, richtig was zu lernen. Wenn es tatsächlich so ist, das die
Anzeige weit weg ist, warum nimmst du für die Bedienung nicht einen PC.
Den Controller läßt du nur die Anzeige machen und die Zeit erfassen.
Diese Info schickst du dann an den PC der dann die Daten speichert. Auf
dem PC läßt sich solch eine Anwendung z.B. in Visual Basic schreiben.
Die Anzeige wirst du auf jeden Fall multiplexen müssen. Dazu rufst du im
Zeitinterrupt jede mSek. den Multiplexer auf. Die aufbereiteten Werte
stellst du in einem Puffer bereit.
Vorgang:
Anzeige aus ( gem. Anoder oder Kathode)
nächsten Wertecode laden
auf die Segmente schalten
Anzeige ein ( gem. Anoder oder Kathode)
Immer dran denken erst ausschalten.
Gruß oldmax
Ich vermute mal, das ganze wird eine Anzeigetafel für eine Sportstätte
(Fussball?).
d.h. ausser Punktezählen und die 45 Minuten zu zählen, gibts da nichts
zu tun. PC ist da ein wenig Overkill. Das seh ich so wie der TO.
Karl Heinz Buchegger schrieb:> Ich vermute mal, das ganze wird eine Anzeigetafel für eine Sportstätte> (Fussball?).>> d.h. ausser Punktezählen und die 45 Minuten zu zählen, gibts da nichts> zu tun. PC ist da ein wenig Overkill. Das seh ich so wie der TO.
so ist es. ok d.h. ich muss multiplexen. hätte natürlich einen riesen
vorteil wenn ich so wenig wie möglich kabel brauche.
leider hab ich keine ahnung wie ich das angehen soll.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
das tut hilft mir auch nicht viel weiter, da ich assembler nur ganz
wenig beherrsche.
ich hoffe ihr könnt mir zum erfolg verhelfen.
wolf schrieb:> leider hab ich keine ahnung wie ich das angehen soll.>> http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige>> das tut hilft mir auch nicht viel weiter, da ich assembler nur ganz> wenig beherrsche.
Und?
Im Abschnitt über Multiplexing ist eine Schaltung und das
Funktionsprinzip.
Wenn du mit Timern klar kommst, ist es keine Hexerei mehr, wenn man erst
mal das Prinzip verstanden hat.
Und sooooo schwer ist Assembler dann auch wieder nicht zu lesen.