www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit Pullup bei ATtiny13


Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
.include "tn13def.inc"
rjmp Start
Start:
sbi ddrb, 3
sbi portb, 0
sbi portb, 1
Anfang:
sbic pinb, 0
rjmp Anfang
sbi portb, 3
rjmp Anfang

Kommt immer Dauerleuchten.
Was mache ich falsch?
Vielen Dank für eure Hilfe!

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An der LED hängt auch noch ein 1KOhm Widerstand dran.
Gut, dann probier ich es mal nur mit ner Drahtbrücke,

Autor: gtf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfang:
  sbic   pinb, 0
  rjmp  b
  sbi   portb, 3
  rjmp   Anfang

b:
  sbi   portb, 3
  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.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PB0 an Ground gibt auch Dauerleuchten, komisch!
Was soll ich tun??????????????????????

Autor: gtf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrektur:
Anfang:
  sbic   pinb, 0
  rjmp  b
  sbi   portb, 3
  rjmp   Anfang

b:
  cbi   portb, 3
  rjmp   Anfang

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
irgendwann solltest du die LED wieder ausschalten :D

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Anfang:
  sbic   pinb, PB0
  rjmp  b
  sbi   portb, PB3
  rjmp   Anfang

b:
  sbi   portb, PB3
  rjmp   Anfang


Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann nicht sein.
> Es MUSS einen sbi und einen cbi geben

Richtig habe aus versehen wieder den alten Code kopiert
Anfang:
  sbic   pinb, PB0
  rjmp  b
  sbi   portb, PB3
  rjmp   Anfang

b:
  cbi   portb, PB3
  rjmp   Anfang

So jetzt aber :-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf schrieb:

> immer noch das gleiche.

Code nicht richtig geflasht?

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,
vielen Dank.
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie ist von PB3 nach Ground geschaltet, also doch eine Fehlfunktion?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf schrieb:
> Hallo Alex,
> vielen Dank.
> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.

Vcc. Sicher?
Oder nicht doch eher GND

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf schrieb:
> Sie ist von PB3 nach Ground geschaltet, also doch eine Fehlfunktion?

Mit Sicherheit nicht.
Ungewolltes Verhalten ist zu 99.9999% immer ein Programmierfehler.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn VCC gegenüber RES liegt, leider ja!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PB0-GND: 0,53V
PB0-VCC: 4,33V
Was mache ich beim einschalten des Pullups falsch?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf schrieb:
> PB0-GND: 0,53V
> PB0-VCC: 4,33V
> Was mache ich beim einschalten des Pullups falsch?

Hmm.
Eigentlich nichts.

Preobiers mal so
.include "tn13def.inc"

      ldi r16, 0x08
      out DDRB, r16

      ldi r16, 0x03
      out PORTB, r16

Loop:
      sbic  PINB, PB0
      rjmp  Led_Aus

      sbi   PORTB, PB3
      rjmp  Loop

Led_Aus:
      cbi   PORTB, PB3
      rjmp  Loop

Autor: Nop M. (gtf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, verwechselt hab ich das nicht.
Ich programmier das mit dem Lernpaket Mikrocontroller von Franzis, 
gekauft habe ich die Controller hier:
Ebay-Artikel Nr. 380177762248

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.