Problem mit Pullup bei ATtiny13

Gast #1631104
Hallo zusammen,
ich möchte erstmal zum Testen ein Programm schreiben, das mit 
eingeschaltetem Pullup ausliest, ob die Verbindung PB0 zu Ground (über 
1kO) geschlossen ist, und dann eine LED an PB3 zum Leuchten bringt, 
falls ja.
Bei diesem Code:
1
.include "tn13def.inc"
2
rjmp Start
3
Start:
4
sbi ddrb, 3
5
sbi portb, 0
6
sbi portb, 1
7
Anfang:
8
sbic pinb, 0
9
rjmp Anfang
10
sbi portb, 3
11
rjmp Anfang

Kommt immer Dauerleuchten.
Was mache ich falsch?
Vielen Dank für eure Hilfe!
Wie willst du den sbi portb, 3 erreichen?

Den PB0-Pin kannst du direkt auf GND legen. Mit dem 1 K - Widerstand 
ergibt sich zusammen mit dem Pullup ein Spannungsteiler, der den Pin 
dann irgendwo im Niemandsland hängen läßt. (Das kannst du mit einem 
Voltmeter gegen Masse messen.)

Der Widerstand sollte besser mit der LED in Reihe geschaltet sein.
Gast
1
Anfang:
2
  sbic   pinb, 0
3
  rjmp  b
4
  sbi   portb, 3
5
  rjmp   Anfang
6

7
b:
8
  sbi   portb, 3
9
  rjmp   Anfang

Uhu Uhuhu schrieb:
> Mit dem 1 K - Widerstand
> ergibt sich zusammen mit dem Pullup ein Spannungsteiler, der den Pin
> dann irgendwo im Niemandsland hängen läßt. (Das kannst du mit einem
> Voltmeter gegen Masse messen.)

So niederohmig ist der Pullup nun auch wieder nicht.
Gast
Bei diesem Code:
.include "tn13def.inc"
rjmp  Start
Start:
sbi ddrb, 3
sbi portb, 0
sbi portb, 1
Anfang:
  sbic   pinb, 0
  rjmp  b
  sbi   portb, 3
  rjmp   Anfang

b:
  cbi   portb, 3
  rjmp   Anfang
immer noch das gleiche.
Gast
Rolf schrieb:
> Bei diesem Code:
> .include "tn13def.inc"
> rjmp  Start
> Start:
> sbi ddrb, 3
> sbi portb, 0
> sbi portb, 1
> Anfang:
>   sbic   pinb, 0
>   rjmp  b
>   sbi   portb, 3
>   rjmp   Anfang
>
> b:
>   cbi   portb, 3
>   rjmp   Anfang
> immer noch das gleiche.

Oh gott wie unaufmerksam von mir
So jetzt soll's gehen
1
Anfang:
2
  sbic   pinb, PB0
3
  rjmp  b
4
  sbi   portb, PB3
5
  rjmp   Anfang
6

7
b:
8
  sbi   portb, PB3
9
  rjmp   Anfang
Alex |_. schrieb:

> Oh gott wie unaufmerksam von mir
> So jetzt soll's gehen

Kann nicht sein.
Es MUSS einen sbi und einen cbi geben.
Solange im ganzen Code nur sbi vorkommen kann es nicht sein, dass
die LED einmal ein- und einmal ausgeschaltet wird.
Gast
> Kann nicht sein.
> Es MUSS einen sbi und einen cbi geben

Richtig habe aus versehen wieder den alten Code kopiert
1
Anfang:
2
  sbic   pinb, PB0
3
  rjmp  b
4
  sbi   portb, PB3
5
  rjmp   Anfang
6

7
b:
8
  cbi   portb, PB3
9
  rjmp   Anfang

So jetzt aber :-)
Rolf schrieb:
> Hallo Alex,
> vielen Dank.
> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.
> Ist das richtig so, oder eine Fehlfunktion?

Das kommt drauf an, wie deine LED verschaltet ist.

Ist deine LED vom Portpin nach GND verschaltet, dann wird sie mit einer 
1 am Ausgang eingeschaltet
Ist die LED vom Portpin nach Vcc verschaltet, dann wird sie mit einer 0 
am Ausgang eingeschaltet.
Rolf schrieb:
> Wenn VCC gegenüber RES liegt, leider ja!

KLemm mal deinen Draht ab, nimm ein Multimeter und miss mal nach welche 
Spannung du am Pin PB0 misst (ohen das sonst irgendetwas dranhängt)

Da du den Pullup eingeschaltet hast, müssen da +5V vorhanden sein.
Gast
Alex Code:
Anfang:
  sbic   pinb, PB0
  rjmp  b
  sbi   portb, PB3
  rjmp   Anfang

b:
  cbi   portb, PB3
  rjmp   Anfang

Statt sbic müsste doch sbis stehen.
Trotzdem erstaunlich das mit VCC satt Ground.
Mein ganzer Code sieht mit Alex' Methode dann so aus:
.include "tn13def.inc"
rjmp  Start
Start:
sbi ddrb, 3
sbi portb, 0
sbi portb, 1
Anfang:
  sbic   pinb, PB0
  rjmp  b
  sbi   portb, PB3
  rjmp   Anfang

b:
  cbi   portb, PB3
  rjmp   Anfang
Rolf schrieb:
> PB0-GND: 0,53V
> PB0-VCC: 4,33V
> Was mache ich beim einschalten des Pullups falsch?

Hmm.
Eigentlich nichts.

Preobiers mal so
1
.include "tn13def.inc"
2

3
      ldi r16, 0x08
4
      out DDRB, r16
5

6
      ldi r16, 0x03
7
      out PORTB, r16
8

9
Loop:
10
      sbic  PINB, PB0
11
      rjmp  Led_Aus
12

13
      sbi   PORTB, PB3
14
      rjmp  Loop
15

16
Led_Aus:
17
      cbi   PORTB, PB3
18
      rjmp  Loop
Gast
Rolf schrieb:
> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.
> Ist das richtig so, oder eine Fehlfunktion?
> Verwechsele ich gerade Pullup und -down?

Das wolltest du doch auch, oder?

Siehe Beitrag 1.
PinB0 = 0V   LED soll leuchten?
Alex |_. schrieb:
> Rolf schrieb:
>> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.
>> Ist das richtig so, oder eine Fehlfunktion?
>> Verwechsele ich gerade Pullup und -down?
>
> Das wolltest du doch auch, oder?

Schon. Aber die Logik ist falsch.
Eigentlich sollte der Pin per default auf High sein (wegen 
eingeschaltetem Pullup) und eine Verbindung mit GND löst den 
Schaltvorgang aus.
Ob die LED jetzt bei 1 leuchtet oder nicht, ist erst mal ziemlich 
uninteressant. Wichtig ist, warum der Pullup nicht wirkt.

Hmm. Kann es sein dass da ein Misverständnis vorliegt

Vcc .... 5V
GND .... Masse

So sind die Begriffe aufzufassen.

(aber wenn er das verwechselt hätte, dann hätte sein Messgerät negative 
Spannungen angezeigt)
Gast
Hallo Karl Heinz,
ich habs nun mal so probiert.
Immer wenn ich den Taster drücke leuchtet die LED (von PB1 -GND), 
allerdings viel zu dunkel, wieso ist das so?
Vielen Dank!
Gast
Ich habs, so geht es:
.include "tn13def.inc"

      ldi r16, 0x08
      sbi DDRB, PB1
      sbi PORTB, PB0

Loop:
      sbic  PINB, PB0
      rjmp  Led_Aus

      sbi   PORTB, PB1
      rjmp  Loop

Led_Aus:
      cbi   PORTB, PB1
      rjmp  Loop

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.