www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny12 PortB Eingang geht nicht


Autor: Jürgen G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich mach jetzt schon 3h rum und bekomme das nicht hin:
Die Led an Portb PB4 soll leuchten wenn der Taster an Portb PB0
gedrückt wird.
In der Simulation (AVR Studio4) gehts einwandfrei.


;Led auf PortB Bit4 ausgeben wenn Port PB0 =0
;Led leuchtet wenn bit4=0; Pb0=0 wenn Taster gedrückt

 .nolist
 .include "tn12def.inc"
 .list

loop:
ldi r16, 0b00010000 ;Datenrichtung einstellen, PB4 als Ausgang,
                    ;PB0 als Eingang
out ddrb, r16

ldi R17, 0b00010000
out portb, r17    ;Led aussschalten

sbic portb,0    ;Tastenabfrage, wenn Bit0=0 (=gedrückt)
                        ;dann übersrpinge
rjmp loop

ldi R17, 0b00000000
out portb, r17    ;Led ein

Was überseh ich da?
Das ganz mach auf ich auf dem STK500.
Der Taster (0V/5V) kommt am IC (Pin5) an.
Ebenso kann ich die Led mit einem anderen Programm zum blinken
bewegen.
Die Led  leuchtet dauernd.
Das heisst ja, daß das Bit0 "Null" ist.
Aber es müsste doch eine "1" sein!
(ist der Taster nicht gedrückt, erscheint an Pin5 5Volt)
Hat das was mit den internen "Pull-ups" zu tun?

Danke mal schon im voraus, ein blutiger Anfänger ;-)

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast erstens keine Endschleife also fängt dein Programm immer wieder
von vorne an. Somit wird die LED immer ausgeschaltet, bis der Schalter
gedrückt wird dann müsste sie kurz angehen und sofort wieder ausgehen.
Und zweitens würde ich in der Loopschleife nicht immer die
datenrichtung festlegen, sie ändert sich doch nciht also musst des ja
nur einmal machen und des nicht in die Schleife rein tun.

MFG Marc

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei der Tastenabfrage PinB statt PortB !

Autor: Jürgen G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Henning,

hab ich mittlerweile auch gemerkt :-(
Trotzdem Danke! :-)
Blöderweise steht das NIRGENDS drin - auch nicht in DER Avr Bibel
ärger

Grüße Jürgen

Autor: Henning (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in meinem buch "AVR-RISC Mikrocontroller" ist das, wie ich finde,
super erklärt. das ist zwar sau teuer, aber für mich hat sich der
kaufpreis gelohnt. "böse zungen" (bewertungen) bei amazon.de
behaupten es sei zwar nur die abschriften/überetzungen der
datenblätter, was sich auch nicht ganz von der hand weisen lässt, aber
alleine hätte ich mich nicht so schnell zurecht gefunden.

das buch bezieht sich allerdings nur auf die "basic line"

zur pin/port/ddr-geschichte müsste man allerdings auch was im
entsprechenden datenblatt finden

Autor: elomt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Vielleicht kann mir hier auch einer weiter helfen.
Bei meinem Tiny kann ich nur an einem Port etwas einlesen wenn ich 
direkt das Register von PINB ( 0x16 ) eingebe.

...
in r20,pinb   ( erliest nichts ein r20 bleibt auf 00 )
...

...
in r20,0x16   ( erliest wie gewolt den Port ein )
...

In den Programm test vom AVR Studio klappt es aber auch mit pinb.

in der INCLUDE Datei steht aber drin das 0x16 = PINB sein soll.
Was mache ich falsch?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
elomt wrote:
> Hi
>
> Vielleicht kann mir hier auch einer weiter helfen.
> Bei meinem Tiny kann ich nur an einem Port etwas einlesen wenn ich
> direkt das Register von PINB ( 0x16 ) eingebe.
>
> ...
> in r20,pinb   ( erliest nichts ein r20 bleibt auf 00 )
> ...
>
> ...
> in r20,0x16   ( erliest wie gewolt den Port ein )
> ...
>
> In den Programm test vom AVR Studio klappt es aber auch mit pinb.
>
> in der INCLUDE Datei steht aber drin das 0x16 = PINB sein soll.
> Was mache ich falsch?

In der Simulation geht es, in der Realität nicht? - Dann vermute ich 
mal, dass Du keinen PullUp eingesetzt (oder eingeschaltet) hast und der 
Eingangspegel immer Low ist.

...

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.