Forum: Mikrocontroller und Digitale Elektronik ATtiny24-Rätsel, PB0 wird nicht high


von Jan R. (janra)


Angehängte Dateien:

Lesenswert?

Hallo,
eine kleine ATtiny24-Schaltung hat 5 LED, von denen 4 Stück prima 
leuchten, eine nur dunkel glimmt, was sie nicht soll. Kathoden auf 
Masse, alle sind über jew. 1 kΩ an ihre t24-Pins angeschlossen; High am 
Pin macht sie also an. Es sind 2-mA-LED, die Farben sind rote, orange, 
gelbe. Boardspannung ist 5 V. Es glimmt eine der roten, während andere 
rote anständig leuchten.

Die Widerstände sind alle auf den Punkt 1k. Keiner weicht um mehr als 1 
Ω ab. Den LED kann ich bei spannungslosem Board testweise mit einer 
kleinen Pinzette mit voneinander isolierten Backen und mit Anschlüssen 
(für'n Multimeter zB) einzeln 2 mA bei 1,8 V geben. Dann sind alle 
gleich hell. Die eine LED ist also nicht matschig.

Wenn ich (immer noch bei spannungslosem Board) den 'Lastwiderstand' aus 
LED und R messe, der an jew. einem Pin hängt, dann habe ich da ca. 1,3 
MΩ ggü. Masse. Bei allen LED-Pins gleich. Der PB0, wo die dunkle LED 
dranhängt, muß also nicht mehr treiben als die anderen, er hat keine 
versteckte Last.

Trotzdem liefert PB0 nur 1,78 V, wenn die Schaltung an ist und ich 
seinen High-Pegel messe. Jeder andere LED-Pin liefert 5 V.

Der Code macht mit dem PB0 nichts anderes als mit den anderen PXy auch 
(s. Anhang).

Laut Datenblatt hat der PB0 nur eine einzigartige Besonderheit: Er kann 
als Eingang fungieren für einen ext. Takt (CLKI). Dafür muß man die 
CKSEL{3:0}-Fuses alle auf 0 machen, was ich nicht tat. Meine stehen auf 
Default 1101. Und vor allem den PB0 zum Eingang machen, was ich auch 
nicht tat.

Das war ungefähr der Punkt, wo ich dachte: Okay, Exemplarfehler, der Pin 
ist beschädigt. Also baute ich eine zweite Platine auf. Ergebnis: genau 
das gleiche.

Was da los??

VG, Jan.

von Einer K. (Gast)


Lesenswert?

Jan R. schrieb:
> Und vor allem den PB0 zum Eingang machen, was ich auch
> nicht tat.

Ja!
Nicht irgendwas verwechselt?

Denn:
Eingang ist er automatisch.
Zum Ausgang, muss man ihn machen.

von Arduinoquäler (Gast)


Lesenswert?

Jan R. schrieb:
> Meine stehen auf Default 1101.

Das ist nach meinem Datenblatt eine Einstellung für externen
Quarz oder Resonator.

Das passt dann zu deiner Aussage dass PB0 hochohmig, nämlich
in diesem Fall ein Quarz-Input ist.

von Arduinoquäler (Gast)


Angehängte Dateien:

Lesenswert?

Arduinoquäler schrieb:
> nach meinem Datenblatt

von Arduinoquäler (Gast)


Lesenswert?

Jan R. schrieb:
> attiny24_mit_5_led.png

C3 gehört übrigens nicht an +5V sondern an den Vcc Pin
und den Gnd Pin deines Tiny. Das ist ein kleiner aber
feiner Unterschied.

von HildeK (Gast)


Lesenswert?

Arduinoquäler schrieb:
> Jan R. schrieb:
>> Meine stehen auf Default 1101.
>
> Das ist nach meinem Datenblatt eine Einstellung für externen
> Quarz oder Resonator.

Ja, aber Vorsicht: 1 ist unprogrammiert, 0 ist programmiert.
Da wird gelegentlich in den Entwicklungstools der invertierte Wert 
angezeigt - und dann wäre es der interne Oszillator, so wie die Teile 
auch ausgeliefert werden.

von Arduinoquäler (Gast)


Lesenswert?

HildeK schrieb:
> und dann wäre es der interne Oszillator, so wie die Teile
> auch ausgeliefert werden.

Ja für die richtige Sprechweise muss der TO schon selbst sorgen.

Aber nachdem jetzt Schweigen im Walde herrscht wird er wohl
seinen Takt auf externen Quarz gesetzt gehabt haben ....

von molchi (Gast)


Lesenswert?

Arduinoquäler schrieb:
> Ja für die richtige Sprechweise muss der TO schon selbst sorgen.
>
> Aber nachdem jetzt Schweigen im Walde herrscht wird er wohl
> seinen Takt auf externen Quarz gesetzt gehabt haben ....

Arduinoquäler schrieb:
> C3 gehört übrigens nicht an +5V sondern an den Vcc Pin
> und den Gnd Pin deines Tiny. Das ist ein kleiner aber
> feiner Unterschied.

Eine unmißverständliche Ausdrucksweise fehlt dir aber auch völlig.

von Arduinoquäler (Gast)


Lesenswert?

molchi schrieb:
> Eine unmißverständliche Ausdrucksweise fehlt dir aber auch völlig.

Soll ich schreiben dass das Gras grün ist?

Wenn du es nicht verstehst und du dich ausgegrenzt fühlst dann
entschuldige bitte ....

von molchi (Gast)


Lesenswert?

Arduinoquäler schrieb:
> molchi schrieb:
>> Eine unmißverständliche Ausdrucksweise fehlt dir aber auch völlig.
>
> Soll ich schreiben dass das Gras grün ist?

Ja, für den, der es nicht weiß. Die anderen fragen ja auch nicht danach.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

HildeK schrieb:
> Ja, aber Vorsicht: 1 ist unprogrammiert, 0 ist programmiert.

 Log.1 bleibt immer noch 1 und Log.0 bleibt 0.

> Da wird gelegentlich in den Entwicklungstools der invertierte Wert
> angezeigt - und dann wäre es der interne Oszillator, so wie die Teile
> auch ausgeliefert werden.

 Das ist dann gelegentlich total falsch - bezeichnen ist eine Sache,
 Wert falsch anzeigen eine ganz andere.
 Atmel kann morgen entscheiden, dass Log.1 programmiert ist, aber
 deswegen wird sich der Wert von Log.1 nicht nach 0 ändern.

 Die meisten Tools haben gerade deswegen auch Checkbox daneben...

von Jan R. (janra)


Angehängte Dateien:

Lesenswert?

HildeK schrieb:
> Arduinoquäler schrieb:
>> Jan R. schrieb:
>>> Meine stehen auf Default 1101.
>>
>> Das ist nach meinem Datenblatt eine Einstellung für externen
>> Quarz oder Resonator.
>
> Ja, aber Vorsicht: 1 ist unprogrammiert, 0 ist programmiert.
> Da wird gelegentlich in den Entwicklungstools der invertierte Wert
> angezeigt - und dann wäre es der interne Oszillator, so wie die Teile
> auch ausgeliefert werden.

So ist es auch gem. meinem Datenblatt. Ich schrieb, ich ließ die 
CKSEL-Fuses auf Default und ergänzte 1101. Das sind nat. bei Atmel-Fuses 
inverse Bits und ich übernahm in meiner Schilderug das Inverse von dem 
schönen Tool Fuse Calculator (s. im Anhang unten links im Bild). Dort 
sieht man auch, daß zur Wirkung dann 0010 kommen (oben).

Da die Schaltung keinen ext. Quarz oder sonstige externe Taktquelle hat 
(s. Schaltplan im OP) und auch nix dafür im Code getan wird (s. 
Beispielcode), kann man beruhigt davon ausgehen, daß der µC seinen 
internen RC-Osz. nimmt und damit arbeitet. Auch wird im Code der PB0 als 
Ausgang konfiguriert.

von Jan R. (janra)


Lesenswert?

Arduinoquäler schrieb:
> Jan R. schrieb:
>> attiny24_mit_5_led.png
>
> C3 gehört übrigens nicht an +5V sondern an den Vcc Pin
> und den Gnd Pin deines Tiny. Das ist ein kleiner aber
> feiner Unterschied.

Der Unterschied ist bekannt und auch im Layout beherzigt worden.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jan R. schrieb:
> So ist es auch gem. meinem Datenblatt. Ich schrieb, ich ließ die
> CKSEL-Fuses auf Default und ergänzte 1101. Das sind nat. bei Atmel-Fuses
> inverse Bits

 Das ist natürlich überhaupt nicht natürlich.

 Und inverse bits gibt es nicht, vielleicht invertierte aber warum
 sollte man etwas was 0010 ist, als 1101 bezeichnen ?

 Und Fuse Calculator zeigt nicht Log.0 als 1 an, sondern hat ein
 Checkbox daneben, was etwas ganz anderes ist.

von Jan R. (janra)


Lesenswert?

Das Taktquellen-Nebenthema samt Fuses nimmt hier bislang den meisten 
Raum ein. Ich nahm es lediglich aus Gründlichkeit in den Thread auf, 
obwohl ja aus meiner Schilderung des Verhaltens der Schaltung klar 
werden sollte, daß sie läuft, also Takt hat, und daß PB0 als Ausgang 
grundsätzlich funktioniert.

Mir selbst fehlen jetzt Ansatzpunkte, und darum eröffnete ich den 
Thread, warum ein Ausgang bei korrekter Beschaltung und korrekter 
Konfiguration nur ~1,8 V High-Pegel liefern könnte, wenn gleichzeitig 
alle Nachbarn bei identischer Behandlung ordentlich funktionieren.

Ideen?

von Microwave (Gast)


Lesenswert?

Wie und unter welchen Messbedingungen hast du die Spannung von 1.78 V an 
PB0 gemessen? Schalte statt LED & Vorwiderstand einen 22 kOhm-Widerstand 
von PB0 zu Masse, und miss die Spannung darüber bei ein- und 
ausgeschaltetem Port B.

Grüsse - Microwave

von Stefan E. (sternst)


Lesenswert?

1
 DDRB  |=    (1<<DDB1) | (1<DDB0);
2
                           ^
Ergo: PB0 ist bei dir ein Eingang.

von Jan R. (janra)


Lesenswert?

Stefan E. schrieb:
>
1
>  DDRB  |=    (1<<DDB1) | (1<DDB0);
2
>                            ^
> Ergo: PB0 ist bei dir ein Eingang.

Ahh! Ohh Mann!

Was habe ich genau diese Codeteile angestarrt ...

Ich danke Dir ganz herzlich, Eagle-Eye-Ernst!

ps: läuft sofort korrekt.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jan R. schrieb:
> ps: läuft sofort korrekt.

 LOL.
 Kaum macht man es richtig...

 P.S.
 Ist wohl jedem schon mal passiert.

: Bearbeitet durch User
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.