Forum: Mikrocontroller und Digitale Elektronik Interner PullUp eines Atmegas644


von Alex (Gast)


Lesenswert?

Hallo zusammen,

Folgende Frage. Ich habe ein Board entwickelt, welches ein wenig 
fehlgeschlagen ist. Ein Schalter verbindet einen Pin eines ATmega644 mit 
entweder GND oder VCC. Wobei VCC = 3,3 V ist. Fals ich nun den Schalter 
umlege (auf VCC), springt die Strombegrenzung ein und das Board geht 
nicht mehr. Kann ich mittels des internen Pullups des ATmegas das Board 
so anhalten, das die Platine nicht ausgeht ?

             ------ VCC
--uC-Pin---\
             ------- GND

Bin für jede hilfe dankbar!

Grüße
Alex

von spess53 (Gast)


Lesenswert?

Hi

>...welches ein wenig fehlgeschlagen ist...

Untertreibe bitte nicht.
Trenne die VCC vom Schalter ab und schalte den Pull-Up ein. Fertig.

MfG Spess

von Alex (Gast)


Lesenswert?

Hmm ganz so einfach geht das nicht leider :/. Ich habe mal die VCC 
leitung durchtrennt. Ausserdem habe ich den internen pull up aktiviert.
DDRC  &= ~(1<<PC4);    // Schalter der Platine ( Auf Eingang)
PORTC |= (PC4);

(sollte doch so gehen oder?)

Leider erkennt der atmega keine signale über den Pins. Liegt das hier am 
Schalter oder habe ich mir den ATmega zerstört?

Gruß
Alex

Laut deiner Schaltung sähe das ja so aus

             ------ (nix)
--uC-Pin---\
             ------- GND

von Michael U. (amiga)


Lesenswert?

Hallo,

Alex schrieb:
> Folgende Frage. Ich habe ein Board entwickelt, welches ein wenig
> fehlgeschlagen ist. Ein Schalter verbindet einen Pin eines ATmega644 mit
> entweder GND oder VCC. Wobei VCC = 3,3 V ist. Fals ich nun den Schalter
> umlege (auf VCC), springt die Strombegrenzung ein und das Board geht
> nicht mehr. Kann ich mittels des internen Pullups des ATmegas das Board
> so anhalten, das die Platine nicht ausgeht ?
>
>              ------ VCC
> --uC-Pin---\

kläre, wo dann der Strom langfließt! Ein Eingang eines AVR zieht keinen 
Strom, der eine Strombegrenzung zum Ansprechen bringt, dazu müßte sie im 
µA Bereich ansprechen...

Ein Ausgang könnze das vielelicht schaffen, wenn er auf L programmiert 
ist, ich habe nie getestet, wieviel da wirklich fließt bis der AVR-Pin 
stirbt.
Ich würde aber auch nur im Bereich von 100-200mA vermuten.

Gruß aus Berlin
Michael

von holger (Gast)


Lesenswert?

>Kann ich mittels des internen Pullups des ATmegas das Board
>so anhalten, das die Platine nicht ausgeht ?

             ------ VCC
--uC-Pin---\
             ------- GND

>Bin für jede hilfe dankbar!


Schalte den Pin nicht auf Ausgang, dann geht das auch so.

von Alex (Gast)


Lesenswert?

Hmm selbst wenn ich den pin jetzut in den Pin jetzt ganz seperat 
angeschlossen habe sagt mir dieser ich habe ein low signal anliegen. 
aber die konfiguration mittels
DDRC  &= ~(1<<PC4);    // Schalter der Platine ( Auf Eingang)
PORTC |= (PC4);
 dochwar richtig oder ?

Gruß Alex

von Flo (Gast)


Lesenswert?

Ersetz mal die Zeile

PORTC |= (PC4);

durch

PORTC |= (1<<PC4);

von thiemo (Gast)


Lesenswert?

Moin,

Alex schrieb:
> DDRC  &= ~(1<<PC4);    // Schalter der Platine ( Auf Eingang)
> PORTC |= (PC4);
>  dochwar richtig oder ?

Oben benutzt Du "1<<PC4" (viermal 'ne eins shiften ins Byte), unten dann 
"PC4" -- in Deinem Fall wohl die Zahl 4, 0b00000100.
Damit duerfte die 1 an der falschen Stelle landen und der falsche Pullup 
aktiviert werden -- oder halte ich ein schwieriges Problem fuer 
einfacher als es ist?

Tschau,
  Thiemo

von Alex (Gast)


Lesenswert?

Das mit den Shiften halte ich für Richtig. Leider habe ich mir irgendwie 
bei dem Versuchen den ATmega geschrottet. Kann es darum leider nicht 
wiklich test :(  Danke Trotzdem.

Gruß Alex

von Alex (Gast)


Lesenswert?

Hmm also nachdem ich alles durchgetestet habe scheint der uC doch noch 
OK zu sein. Ich habe an ner anderen Stelle ne Sicherung durchgehauen die 
ich erstmal ersetzen muss :). Allerdings habe ich mich auch entschlossen 
die Platine neu zu bauen.  Die Frage ist nun, wie hoch sollte so ein 
Vorwiderstand vor einem I/O Port sein?

Die Schaltung sieht folgendermaßen aus:

VCC----------| R |-------------I/O-Pin
                        \
                         \          /
                          \--------/  |--GND




/  = Schalter. Dieses soll als sicherung dienen damit nicht der Ganze 
Strom von VCC auf Maße liegt. Jemand eine Idee. Die Spannug beträgt 3,3V

Gruß
Alex

von Thiemo N. (thiemo)


Lesenswert?

Moin,

kennst Du AVR-Tutorial: IO-Grundlagen? Da werden 10k genommen. Auch 
sonst ganz lesenswert, denke ich.

Tschau,
  Thiemo

von Torben (Gast)


Lesenswert?

Hallo, musst Du Richtlinien beachten oder wieso musst du einen externen 
Pullup benutzen?


 I/O Pin 0--------SWITCH--GND

In dieser Schaltung kannst Du den internen Pullup aktivieren und ein 
tastendruck wird über eine logische 0 erkannt. Ist der Uc im Reset bzw. 
beim Power Up, dann sind die Pins als Tristate konfiguriert.

Mfg,

Torben

von Volker S. (volkerschulz)


Lesenswert?

Torben schrieb:
> Hallo, musst Du Richtlinien beachten oder wieso musst du einen externen
> Pullup benutzen?

Wenn er irgendeine Richtlinie haette, muesste er wohl nicht nach der 
Dimensionierung eines Pull-Ups fragen. ;)

Ich bin auch der Meinung, dass der interne Pull-Up hier ausreichend ist.

Volker

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.