Forum: Mikrocontroller und Digitale Elektronik Atmega16 PortD


von Martin B. (deathgockel)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein kleines Problem, ich habe eine QlockTwo nachgebaut.
Ich verwende aber keine Schieberegister sondern habe nur einen ATMEGA16 
der alles treibt.
Der PORTD PIND0-7 treibt die Zeilen Transistoren, sowie PORTA PINA7-5. 
An PINA0 hängt ein LDR an PORTA 1 und 2 Taster zum stellen der Zeit.
Nun mein Problem die LEDs die von PORTA getrieben werden sind heller als 
die die von PORTD getrieben werden. Obwohl laut Ansteuerung die PORTDs 
einen Tick länger an sind.
Ich hab meine Schaltung schon mit einem Oszi gemessen. An PORTA sind es 
die gewünschten 4,5 Volt und an PORTD sind es "nur" 3,7 Volt.
Warum? Weis es jemand? Die maximal Strombelastung des Ports ist ja nicht 
überschritten.
Ich poste dazu mal ein paar Bilder was ich vergessen habe einfach fragen 
dann lad ich es hoch.

Der Ansteuerungsquelltext ein Auschnitt:
1
   PORTB=0b10000000;
2
   PORTD |= (( select[0]<<Zeile0) | (select[11]<<Zeile1) | (select[22]<<Zeile2) | (select[33]<<Zeile3) | (select[44]<<Zeile4)| (select[55]<<Zeile5) | (select[66]<<Zeile6) | (select[77]<<Zeile7));
3
  PORTA |= (( select[88]<<Zeile8) | (select[99]<<Zeile9) | (select[110]<<Zeile10));
4
   delay2();
5
   PORTD=0x00;
6
   PORTA=0x00;
7
   _delay_us(50);

Danke schon mal im Vorraus, vielleicht hat jemand ja einen schlauen 
Einfall.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

1) Bildformate. Die Fotos deines HTC One X musst du erst 
komprimieren.
2) Zeig uns mal deinen Schaltplan

von Martin B. (deathgockel)


Lesenswert?

Kann man die Bilder löschen hab sie jetzt verkleinert. Hab auch den 
Schaltplan angehängt vom Controller.

von Mike (Gast)


Lesenswert?

Martin B. schrieb:
> Hab auch den Schaltplan angehängt vom Controller.

Haben deine Bauteile auch irgendwelche Werte?
Speziell R4

von holger (Gast)


Lesenswert?

Was für eine grottige Ansteuerung;)
NPN mit Kollektor an 12V und an der Basis maximal 5V.
Schliess mal R1 kurz.

von Martin B. (deathgockel)


Angehängte Dateien:

Lesenswert?

Ja R4 hat 47 Ohm, hab ich mich hier Orientiert

http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

von Luca E. (derlucae98)


Lesenswert?

Abblockkondensator zwischen VCC und GND fehlt.

von Martin B. (deathgockel)


Lesenswert?

holger schrieb:
> Was für eine grottige Ansteuerung;)
> NPN mit Kollektor an 12V und an der Basis maximal 5V.
> Schliess mal R1 kurz.

Was sollte das bringen?

von holger (Gast)


Lesenswert?

>> Schliess mal R1 kurz.
>
>Was sollte das bringen?

Dann fliesst vieleicht genug Strom in die Basis
um den Emitter auf 4,4V zu heben. Oder miss einfach mal
in deiner Schaltung wie sie jetzt ist die Spannung an der
Basis. Der Basisstrom erzeugt logischerweise einen
Spannungsabfall an R1.

von Martin B. (deathgockel)


Lesenswert?

holger schrieb:
>>> Schliess mal R1 kurz.
>>
>>Was sollte das bringen?

Ok Missverständnis, ich weis jetzt was du meinst. Das bringt leider 
nichts hab die Widerstände schon mal versuchsweise von 1K Ohm auf einmal 
470 Ohm und 10 KOhm geändert. Ohne Erfolg.

Die Schaltung mag Mängel haben aber bis auf das beschriebene Problem 
funktioniert sie.

von holger (Gast)


Lesenswert?

>hab die Widerstände schon mal versuchsweise von 1K Ohm auf einmal
>470 Ohm und 10 KOhm geändert.

Transistor falsch rum eingelötet?

>Die Schaltung mag Mängel haben aber bis auf das beschriebene Problem
>funktioniert sie.

Schrott bleibt Schrott.

von Martin B. (deathgockel)


Lesenswert?

Transistoren sind richtig herum und es ist ja auch sehr ungewöhnlich mit 
Transistoren an Mikrokontrollern 12 Volt und mehr zuschalten. Was 
würdest du nehmen Schieberegister oder was?

von Stromverdichter (Gast)


Lesenswert?

Mir fällt es schwer mir vorzustellen, wie du das genau aufgebaut hast. 
Hättest du noch jeweils ein Bild deiner Platine von unten und von oben 
abgelichtet?

von Martin B. (deathgockel)



Lesenswert?

Hoffentlich nützt es was.
Das Grundproblem ist das die LEDs die in der Matrix von den PINAs 
getrieben werden heller sind als die welche von PINDs getrieben werden.
An PORTC und PORTB hängen die MosFets.

von holger (Gast)


Lesenswert?

>Das Grundproblem ist das die LEDs die in der Matrix von den PINAs
>getrieben werden heller sind als die welche von PINDs getrieben werden.

Dann tausch doch mal bei zwei Transistoren die Anschlüsse.
Nimm einen der sonst an PORTA hängt und papp ihn an PORTD,
und umgekehrt. Was passiert dann?

von Martin B. (deathgockel)


Lesenswert?

holger schrieb:
> Dann tausch doch mal bei zwei Transistoren die Anschlüsse.
> Nimm einen der sonst an PORTA hängt und papp ihn an PORTD,
> und umgekehrt. Was passiert dann?

Hatte ich auch schon probiert die Zeilen die an PORTA hängen (egal 
welche Zeile) leuchten heller.

Deswegen hatte ich ja nach PORTD gefragt, ich dachte eigentlich das es 
fehlertechnisch mehr bei Fuses oder generellen Einschränkungen am PortD 
liegt.

von Stromverdichter (Gast)


Lesenswert?

Für mich sieht das aus als überlastest du ja deinen PortD und kommst 
damit auf deine 3,6Volt, bei der die LEDs nur dunkel leuchten. Dein 
LED-Strom kommt sicher nicht aus dem PortD? Das kannst du ja einfach 
messen, ich würde einfach auch mal ein paar LED-Segmente abhängen und 
dann den jeweiligen Portstrom nochmal messen. Vielleicht hast du auf 
deiner Platine auch irgendwo einen Schluss im Bereich Basis Emitter? 
Naja, wenn du sukzessive den problematischen teil abhängst und wieder 
anschließt, müsste der Fehler doch zeitnah zu finden sein.
Ich würde die Leitungen nicht fest auf die Platinen Löten, ich verwende 
da gerne Stecker und Buchsenleisten. Ist beim testen auch angenehmer, 
wenn man einfach mal etwas umstecken kann.

von holger (Gast)


Lesenswert?

>oder generellen Einschränkungen am PortD liegt

Es gibt keine Einschränkungen an PORTD.
Bei PORTC kann die JTAG Fuse eine Rolle spielen.

von der alte Hanns (Gast)


Lesenswert?

Also erklären kann ich mir das auch nicht, der einzige Unterschied ist 
doch R4 in der Versorgung für PORTA. Was passiert, wenn Sie diesen 
kurzschließen?

von holger (Gast)


Lesenswert?

>Es gibt keine Einschränkungen an PORTD.

Ahh, Moment mal;)

Hast du PORTD auf Ausgang geschaltet?
Sonst schaltest du nur die Pullups an und aus.
Das reicht dann nicht für deine Transistoren
und die LEDs sind dunkler.

von Martin B. (deathgockel)


Lesenswert?

Stromverdichter schrieb:
> Für mich sieht das aus als überlastest du ja deinen PortD und
> kommst
> damit auf deine 3,6Volt, bei der die LEDs nur dunkel leuchten. Dein
> LED-Strom kommt sicher nicht aus dem PortD? Das kannst du ja einfach
> messen, ich würde einfach auch mal ein paar LED-Segmente abhängen und
> dann den jeweiligen Portstrom nochmal messen. Vielleicht hast du auf
> deiner Platine auch irgendwo einen Schluss im Bereich Basis Emitter?
> Naja, wenn du sukzessive den problematischen teil abhängst und wieder
> anschließt, müsste der Fehler doch zeitnah zu finden sein.
> Ich würde die Leitungen nicht fest auf die Platinen Löten, ich verwende
> da gerne Stecker und Buchsenleisten. Ist beim testen auch angenehmer,
> wenn man einfach mal etwas umstecken kann.

Dann werde ich mich noch mal auf die Suche begeben.

von der alte Hanns (Gast)


Lesenswert?

> Hast du PORTD auf Ausgang geschaltet?
Prima Idee, Glückwunsch! Das passt.
Aber bitte, das kann doch nicht wahr sein?

von Martin B. (deathgockel)


Lesenswert?

der alte Hanns schrieb:
>> Hast du PORTD auf Ausgang geschaltet?
> Prima Idee, Glückwunsch! Das passt.
> Aber bitte, das kann doch nicht wahr sein?

Das hab ich definiert.

  //IO Definieren
  // PortA = 0b11110000
  // PA3 - PA0 für Input
  DDRA=0xE0;

  // Rest auf Output zum Multiplexing
  DDRB=0xff;
  DDRD=0xff;
  DDRC=0xff;

von holger (Gast)


Lesenswert?

>Das hab ich definiert.
>
>  DDRD=0xff;

Nimm dein Osci, halt es an PORTD und schau nach.

von der alte Hanns (Gast)


Lesenswert?

Nun ja, mit diesen Schnipseln ist es so eine Sache, könnten Sie Ihr 
komplettes Programm einstellen?
Die Idee von holger passt zu gut auf das Symptom, um sie so einfach von 
der Hand zu weisen.

von Martin B. (deathgockel)


Angehängte Dateien:

Lesenswert?

Das Oszi Bild von PORTD gibt es schon IMAG0825.jpg.
Den Quelltext eigentlich nur ungern, da mein Programmierstil nicht der 
beste ist... Ich häng die .c und .h an

von Martin B. (deathgockel)


Lesenswert?

Habe gerade alle bis auf einen der PORTDs entfernt, um die Überlast 
auszuschließen. Keine Änderung der Helligkeit.

von der alte Hanns (Gast)


Lesenswert?

Vielleicht gibt es doch einen Zusammenhang mit R4; schließen Sie diesen 
mal kurz, oder legen Sie im Programm die Helligkeitssteuerung probeweise 
still.

von Stromverdichter (Gast)


Lesenswert?

Martin B. schrieb:
> Habe gerade alle bis auf einen der PORTDs entfernt, um die Überlast
> auszuschließen. Keine Änderung der Helligkeit.

und welchen Strom hast du am Portpin? Das kannst du jetzt auch einfach 
prüfen. Einfach nochmal Strom und Spannung messen.

von Martin B. (deathgockel)


Lesenswert?

Die Subroutine Helligkeit() wird im Moment gar nicht aufgerufen, 
trotzalledem habe ich die Initialisierung des ADC rausgenommen und 
gerade auch einen anderen Controller geflasht. Beide Sachen haben keine 
Veränderung gezeigt.

von holger (Gast)


Lesenswert?

Entweder der Controller ist im Arsch oder
die Verbindung die unter dem Controller zu
VCC geht ist nicht in Ordnung.

Wie hoch sind die Spannungen an PORTB, PORTC?

von Uwe (de0508)


Lesenswert?

Hallo Martin,

in Programm (WordClock4.c) gibt es diese IF Bedingungen
1
if ((ADC>=0) && (ADC<=150))
2
{
3
  hell0=0;
4
}
5
if ((ADC>=150) && (ADC<=200))
6
{
7
  hell0=1;
8
}

Das empfinde ich als etwas ungeschikt,

Wenn Du alle ADC werte auf 1/50 skalierst, dann kannst Du die Helligkeit 
|hell0| über ein Array im Flash steuern.

Auch sind immer zwei Bedingungen bei jeweils genau einem Wert TRUE.

von Martin B. (deathgockel)


Lesenswert?

holger schrieb:
> Wie hoch sind die Spannungen an PORTB, PORTC?

Kann ich im Moment nicht messen da ich den Oszi nicht zur Hand hab und 
durch das pulsen mein Multimeter nichts vernünftiges anzeigt.

Uwe S. schrieb:
> Hallo Martin,
>
> in Programm (WordClock4.c) gibt es diese IF Bedingungenif ((ADC>=0) &&
> (ADC<=150))
> {
>   hell0=0;
> }
> if ((ADC>=150) && (ADC<=200))
> {
>   hell0=1;
> }
> Das empfinde ich als etwas ungeschikt,
>
> Wenn Du alle ADC werte auf 1/50 skalierst, dann kannst Du die Helligkeit
> |hell0| über ein Array im Flash steuern.
>
> Auch sind immer zwei Bedingungen bei jeweils genau einem Wert TRUE.

Die Routine ist auch noch nicht 1. im Einsatz 2. ausgereift.
Hatte die nur Testweise in das Programm übernommen.
Aber danke für den Hinweis.

von holger (Gast)


Lesenswert?

>> Wie hoch sind die Spannungen an PORTB, PORTC?
>
>Kann ich im Moment nicht messen da ich den Oszi nicht zur Hand hab und
>durch das pulsen mein Multimeter nichts vernünftiges anzeigt.

Dann miss mit deinem Multimeter mal am VCC Pin wie hoch die
Spannung da ist. Und zwar von oben am IC. Wie hoch ist die
Spannung da? Steckt das Beinchen im Sockel oder nicht?

von Martin B. (deathgockel)


Lesenswert?

holger schrieb:
> Entweder der Controller ist im Arsch oder
> die Verbindung die unter dem Controller zu
> VCC geht ist nicht in Ordnung.

Ja Recht hatte er. Irgendwie waren da nur 3,3 Volt am Vcc des 
Controllers war wohl die Leiterbahn angekratzt oder kein Plan. Auf jeden 
Fall funktoiniert es jetzt wie es soll.

Ein Hoch auf das Forum und Danke an alle die ihre Ideen gepostet haben 
und so viel Geduld mit mir hatten. Wenn ich die Uhr fertig habe werde 
ich noch mal ein Bild posten.

Bis dahin.

von der alte Hanns (Gast)


Lesenswert?

Und herzlichen Glückwunsch an holger für seine gelungene Ferndiagnose!

von Martin B. (deathgockel)


Lesenswert?

Genau vielen Dank holger.
Kommst aus dem raum Dresden wäre mir glatt ein paar Bier wert.

von der alte Hanns (Gast)


Lesenswert?

Wäre der Fehler mit gesetztem BOD schneller einzukreisen gewesen?

von Alex W. (a20q90)


Lesenswert?

Max H. schrieb:
> 1) Bildformate. Die Fotos deines HTC One X musst du erst
> komprimieren.

Beitrag "Re: was ist das?"

von Martin B. (deathgockel)


Lesenswert?

der alte Hanns schrieb:
> Wäre der Fehler mit gesetztem BOD schneller einzukreisen gewesen?

Da hätte ich es 1. Aktivieren müssen und 2. auch eine Schaltung dazu 
bauen müssen, dann hätte es mir das bestimmt angezeigt. Bezeihungsweise 
den Controller resettet.
Allerdings bin ich leider nicht daraufgekommen, da es ja eine feste 
Stromversorgung hat und nicht über Batterie läuft also konstant mit 
Spannung versorgt wird (theoretisch).

Alex W. schrieb:
> Max H. schrieb:
>> 1) Bildformate. Die Fotos deines HTC One X musst du erst
>> komprimieren.
>
> Beitrag "Re: was ist das?"

Wie du unschwer erkennen kannst, sind die später eingefügten Bilder 
komprimierter als die ersten und auf die Frage wie man Bilder aus dem 
Post löschen kann, hat sich keiner gemeldet. Wenn jemand sagt wie und ob 
es geht, werde ich selbstverständlich die Bilder aus dem ersten Post 
noch nacheditieren.

von Karl H. (kbuchegg)


Lesenswert?

Martin B. schrieb:
> Wenn jemand sagt wie und ob
> es geht, werde ich selbstverständlich die Bilder aus dem ersten Post
> noch nacheditieren.

a) geht nicht
b) haben die Mods das schon erledigt. Das soll aber keine Entschuldigung 
fürs nächste mal sein :-)

von Martin B. (deathgockel)


Lesenswert?

Karl Heinz schrieb:
> a) geht nicht
> b) haben die Mods das schon erledigt. Das soll aber keine Entschuldigung
> fürs nächste mal sein :-)

Danke. Ich werde es mir für das nächste mal merken.

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.