Einige anfängliche Fragen

Gast #206946
Lesenswert?

hallo

ich bin gerade dabei mit mikrocontrollern(ATmega8)und der
Programiersprache Assembler herumzuexperimentieren.
aber ich bin auf diesem gebiet noch ein neuling.

also meine Fragen

1. warum sollte man so programmieren , das 0V=1 und 5V=0 ist?


2. wie kann man mit diesen Pegeln einen Transistor ansteuern

am Transi muss man ja die Basis gegen +5V legen
und der contoller würde ja bei einer internen 1 0V am pin Anlegen.
oder sollte man die Ausgänge die einen Transi steuern wieder umgekehrt
ansteuern?
Übrigends welchen vorwiderstand muss man bei einen Standart
Transi(BC548B) verwenden wenn man ihn mit 5V ansteuern muss.
ich nehm immer 1Kohm



3.
wie aktiviert man die internen Pull up?



4. kann man wenn man die internen Pull ups aktiviert hat den Pin direkt
ohne Vorwiederstand auf GND legen?


danke schon im voraus

es werden sicher noch mehr Fragen von mir desbezüglich kommen

mfg Benedikt Lippert
Gast #206947
Lesenswert?

1.) ?? Wenn du nen pin= 1 setzt, ist er auch 5V (solange pullups
dransind, oder die internen aktiviert sind)

2.) einfach nen vorwiderstand dran (ich nehm immer 5,6k) und dann an
die basis

3.)Sind aktiviert, solange du sie nicht deaktivierst (zumindest beim
port als ausgang)

4.)Könnte gehen würds aber nich machen ... sicher is sicher
Gast #206948
Lesenswert?

> Wenn du nen pin= 1 setzt, ist er auch 5V (solange pullups
> dransind, oder die internen aktiviert sind)
Das hat mit den Pullups nix zu tun!

> Sind aktiviert, solange du sie nicht deaktivierst (zumindest beim
> port als ausgang)
auch falsch. Und gerade als Ausgang sind die Pullups nicht aktiv (da
push/pull-Endstufe).

> Könnte gehen würds aber nich machen ... sicher is sicher
geht und ist sicher!


ad 1.) Man "sollte nicht so programmieren", das ergibt sich daraus,
daß die ersten AVRs mehr strom "aufnehmen" als "abgeben" konnten,
deswegen wurden anzusteuernden LEDs (ich nehme an darauf beziehst du
dich) gegen Vcc geschaltet... daraus ergibt sich die von dir genannte
"Methode".

ad 2.) 1k ist ok. Damit steuert er auch wirklich ganz durch.

ad 3.) DataDirectionRegister auf Input und PORTRegister auf 1
schalten.

ad 4.) ja.

----, (QuadDash).
Gast #206949
Lesenswert?

Hallo,

zu 4.) Sowie QuadDash es sagt. Es funktioniert finde es sein gutes
Feature vom AVR (alte PIC's haben es nicht / mehr Bauteile somit).

Man sollte dann nur beim programmieren aufpassen das man den PIN nicht
als Output schaltet und dann auf GND legt. Zur Sicherheit koennte man
nen 1k in Reihe legen.

Mfg
Dirk
Gast #206950
Lesenswert?

Ich habe mir zwar auch erst vor 3 Wochen einen ATMEGA zum
Experimentieren zugelegt aber denke Deine Fragen gut beantworten zu
können:

zu 1.: warum sollte man so programmieren , das 0V=1 und 5V=0 ist?

Die Frage macht eigentlich nur Sinn wenn man sie auf das DDR bezieht.
Steht da eine 0 ist der zugehörige Pin ein Eingang. Steht da eine 1 ist
der zugehörtge Pin ein Ausgang.

zu 3.: wie aktiviert man die internen Pull up?

Den pin mit einer 0 im DDR als Eingang definieren und in den PORT eine
1 schreiben. Schickst Du eine 0 an den PORT wird der Pull up
abgeschaltet.

zu 4.: kann man wenn man die internen Pull ups aktiviert hat den Pin
direkt ohne Vorwiederstand auf GND legen?

Pull ups machen nur Sinn an Eingängen oder open drain Ausgängen.
Solange der Pin ein Eingang ist kann er bedenkenlos auf GND (z.B. durch
einen Taster) gelegt werden. Bei einem Ausgang ist Vorsicht geboten!
Dazu undedingt im Datenblatt nachlesen ob der Pin ein open drain
Ausgang ist, anderenfalls wird er sehr wahrscheinlich zurstört.

zu 2.: wie kann man mit diesen Pegeln einen Transistor ansteuern

Da gibts verschiedene Möglichkeiten. Als Inverter z.B. Emitter an GND,
Kollektor über den Lastwiderstand an VCC und die Basis über einen
Widerstand an den pin des AVR.
1KOhm ist ein guter Standardwert. Wer es komplziert machen will
berechnet den Kollektorstrom, teilt diesen durch die Stromverstärkung
und erhält so den benötigten Basisstrom. Dann zieht man von dem 1-Pegel
0,6 Volt Basis-Emitterspannung ab und teilt diese Differenz durch den
zuvor errechneten Basisstrom. Größer als der errechnete Wert soll der
Widerstand nicht sein.
Aber meißt möchte man ja ein Schaltverhalten des Transitors und kennt
auch nicht seine genaue Stromverstärkung. Also 470 bis 1KOhm sollten
für Relais und LEDs ausreichen.
Ansonsten sind Transistorschaltungen eine Thematik für sich.

Viele Grüße
TobiFlex
Gast #206951
Lesenswert?

hallo

danke für eure Antworten

Bez. Frage 1
im Tutorial wird so programmiert und ich finde das etwas umständlich da
man durch diese Programierart schlecht Transistoren o ä ansteuern kann.
hab mich jetzt so geeinigt:

Eingäng:
interner Pull up aktivieren und zum Betätigen mit einem Taster o.ä.
gegen GND ziehen.
(Logik vertauscht
5V= 0, 0V= 1)
spare ich mir äusere Pull down Wiederstände und spare geld)


Ausgänge :

5V=1
0V=0

was haltet ihr davon??

mfg Benedikt
Gast #206952
Lesenswert?

Das ist Dein gutes Recht als Programmierer. :)

Ob 5V = "AN" oder "AUS" bedeutet, hängt eigentlich nur von der
externen Beschaltung ab.

Wenn Du an einen Ausgang eine LED über einen Vorwiderstand nach +5V
legst, musst Du am Controller eine 0 Ausgeben um die LED
einzuschalten.
Wenn Du die LED nach Masse legst, dann musst Du den Ausgang auf 5V
schalten um die LED anzusteuern.

Um einen Transistor anzusteuern würde ich das aber genauso machen wie
Du.
Den COntroller über 5,6k an die Basis (die ja nach GND schaltet)
Dann bedeutet 5V = "AN", dass der Transistor durchschaltet.

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