Forum: Mikrocontroller und Digitale Elektronik ATTiny13 und Inputs


von Hansi (Gast)


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.

von gasti (Gast)


Lesenswert?

Nabend,

http://www.mikrocontroller.net/articles/AVR-Tutorial

ist ein guter Anlaufpunkt.

MfG

von Stefan B. (stefan) Benutzerseite


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.

von Hansi (Gast)


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.

von Hansi (Gast)


Lesenswert?

Hat am Ende funktioniert. Wie gesagt waren die Links sehr hilfreich.

Danke für die Hilfe.

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.