ATTiny13 und Inputs

Gast #1380740
Lesenswert?

Hallo allerseits,
ich versuche gerade mich in die AVR-Assembler-Programmierung 
einzuarbeiten. Dafür wollte ich folgende Testanwendung schreiben:
- Pin3 als Output; es ist eine Led plus Widerstand angeschlossen
- Pin4 als Input; es ist ein Schalter angeschlossen
- Wenn auf Pin4 ein High-Signal anliegt, soll Pin3 auch auf High gehen, 
bzw. die Led soll angehen

Als erstes mal eine ganz einfache Frage:
Wie muss ich den Schalter an den Pin4 anschliessen? Muss ich den 
Schalter an Masse oder VCC anschliessen? Einen zusätzlichen Widerstand 
brauche ich eigentlich nicht, wenn ich den Pullup aktiviere, oder?

Bezüglich der Konfiguration bin ich folgendermaßen vorgegangen:
PORTB = 0b00101111
PINB  = 0b00010000

Wie kann ich in AVR-Studio den Input "simulieren"? Muss ich dafür den 
PINB (bzw. nur den Pin4) per Hand setzen (im Debug-Fenster)?

Tschoe, Hansi.
Persönliche Seite #1380789
Lesenswert?

Hansi schrieb:

> Hallo allerseits,
> ich versuche gerade mich in die AVR-Assembler-Programmierung
> einzuarbeiten.

Gerade mit dem Attiny13 könnte das Franzis-Paket dazu interessant sein:
http://www.elo-web.de/elo/mikrocontroller-und-programmierung/avr-grundlagen/experimente-mit-dem-attiny13

> Dafür wollte ich folgende Testanwendung schreiben:
> - Pin3 als Output; es ist eine Led plus Widerstand angeschlossen
> - Pin4 als Input; es ist ein Schalter angeschlossen
> - Wenn auf Pin4 ein High-Signal anliegt, soll Pin3 auch auf High gehen,
> bzw. die Led soll angehen

Lobenswert einfache Anfangsaufgabe!

> Als erstes mal eine ganz einfache Frage:
> Wie muss ich den Schalter an den Pin4 anschliessen? Muss ich den
> Schalter an Masse oder VCC anschliessen? Einen zusätzlichen Widerstand
> brauche ich eigentlich nicht, wenn ich den Pullup aktiviere, oder?

Du willst einen Active-High Schalter (Taster) haben. Im Nichtaktiven 
Zustand (Ruhezustand) soll der Schalter LOW liefern. Beim Drücken 
(Aktion), soll der Schalter den Pegel HIGH liefern. Da hilft ein 
interner Pullup-Widerstand nicht weiter 
(http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter).

> Bezüglich der Konfiguration bin ich folgendermaßen vorgegangen:
> PORTB = 0b00101111
> PINB  = 0b00010000

Schau dir die Bedeutung von DDRB an. Mit PORTB setzt du bei Ausgängen 
den Ausgangspegel und bei Eingängen den internen Pullup-Widerstand. Mit 
PINB fragst du Eingänge ab, ein Setzen von PINB macht man i.d.R. nicht.

> Wie kann ich in AVR-Studio den Input "simulieren"? Muss ich dafür den
> PINB (bzw. nur den Pin4) per Hand setzen (im Debug-Fenster)?

Yes.
Gast #1381770
Lesenswert?

Hallo Stefan,
danke für die Hinweise.

Bzgl. des Pullups:
Im grunde genommen kann ich auch einen Active-Low Schalter einsetzen. 
Das entspricht zwar nicht den Anforderungen, ist aber nicht tragisch, 
schließlich ist es nur eine selbstgestellte Anfangsaufgabe.

Bzgl. Franzis-Paket:
Ist eine gute Sache, keine Frage. Ich war aber etwas geizig und habe mir 
einen eigenen Parallel-Programmer gebaut (auf Basis eines HC 244). Es 
läuft soweit ganz gut. Beim Eval-Board habe ich ebenfalls was eigenes 
gebaut, daher auch die Fragen mit dem Schalter. Der Link ist 
diesbezüglich sehr hilfreich. Beim eigenen Rumstöbern bin ich leider 
nicht auf diese Seite gestossen.

Bzgl. PORTB und PINB:
Da habe ich mich vertippt. Ich meinte eigentlich:
DDRB  = 0b00101111
PORTB = 0b00010000
(Das kommt davon, wenn man nicht den "echten" Code postet).

Ich werde es mal anpassen und schauen, ob es klappt.

Tschoe, Hansi.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren