mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega PC (DDRC) macht Probleme


Autor: Stephan M. (pmgzed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe das Problem, das wenn ich PC (DDRC=0x00) auf eingang schalte, 
das irgendwelche zufällige Werte zurückgegeben werden.
DDRC = 0x00;
DDRB = =0xFF;
eingabe = PINC,
if (eingabe != 0){
  PORTB = eingabe;
}
an PORTB sind 8 LED´s angeschlossen so das man also sehen kann was für 
ein wert in der Variable eingabe ist
versorge ich nun das ganze mit Strom leuchten zufällig led´s
wenn an der Platine gewackeld wird leuchten andere LED´s bzw wenn beim 
Atmega8 einer der C Pins berührt wird

nehme ich aber anstelle von DDRC DDRD dan klapt es so wie es soll es 
scheint an den C Pins zu liegen mit den D Pins ist alles so wie es sein 
soll
Ich habe jetzt auch schon ein 2ten neuen Atmega8 zum testen genommen das 
selbe Problem
was mache ich falsch?

ich habe bei den C Pins sogar schon die verbindung mit den Tastern 
getrennt also es ist nicht mal was an den C Pins angeschlossen

Autor: Jan S. (jan_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du mal die Pull-Ups eingeschaltet?
Also z.B. PORTC=0xCC

> DDRB = =0xFF;
Sieht irgendwie merkwürdig aus mit zwei "=". ;-)

Autor: Stephan M. (pmgzed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll nur ein = sein
Probiere dein Vorschlag mit 0xCC gleich mal aus :-)
Bin noch neu auf den gebiet was ist mit Pull-Ups gemeint?

Autor: Jan S. (jan_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh Sorry 0xFF, Tippfehler.

Autor: Jan S. (jan_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan M. schrieb:
> Bin noch neu auf den gebiet was ist mit Pull-Ups gemeint?
Ein Eingangsport muss auf einen definierten Zustand gezogen werden, also 
ebtweder ca. 0V oder ca. 5V. Ein Pull-Up Widerstand zieht den Pin auf 
5V, ein Taster muss dann gegen Masse schalten um den Pin auf 0V zu 
bringen.

Ansonsten wirf bitte mal einen Blick ins AVR-Tutorial. Da stehen noch 
ein paar Grundlagen mehr drinne, die Dir ja anscheinend fehlen.

Autor: Stephan M. (pmgzed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh jetzt weis ich was du meinst im Tutoral war ein Zeichnung dazu :-)
Bei der Zeichnung war aber keine angabe wie viel Ohm der Wiederstand 
haben
edit: ok im Text steht 10 KOhm

Zu den 0xFF dann wären doch alle Pins als Ausgang geschaltet 0x00 sollen 
laut Tutorial als Eingag schalten?

Autor: Jan S. (jan_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan M. schrieb:
> Zu den 0xFF dann wären doch alle Pins als Ausgang geschaltet 0x00 sollen
> laut Tutorial als Eingag schalten?

PORTC  != DDRC ;-)
Wenn über eine 0 im  DDR Register ein Pin als Eingang geschaltet ist, 
dann kann man mit einer "1" im PORT Register den Pull-Up einschalten.

Autor: Stephan M. (pmgzed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohh ups da habe ich wohl noch gepennt^^
Ok ich werde mir schnell noch was zu essen besorgen dann werde ich so 
wie im Tutorial 
(http://www.mikrocontroller.net/articles/Datei:Acti...) gezeigt 
die Wiederstände anbringen

das habe ich leider noch nicht :-( habe ich irgendwie verdrängt denke 
mal das das mit der fehler sein wird
Bei PIND funkioniert es warscheinlich weil die LED´s als 
"Ersatzwiederstand" dienen nur bei PINC sind halt keine dranne

ich melde mich dann wenn ich soweit bin schonmal ein großes DANKE :-)

Autor: Stephan M. (pmgzed)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Es funktioniert :-)
Es waren die fehlenden Wiederstände die die Pins mit GND verbinden.
Die habe ich im Eifer des Gefechts irgendwie verdrängt :-(
Das Thema mit den Pull-Up wiederständen war es :-)
Wenn ich das mit den Externen wiederständen mache mit den bild was ich 
oben Verlinkt habe klapt es so wie es soll
nutze ich die internen Wiederstände ist es Invertiert sehe ich das 
richtig?
da es dann der Schaltung entspricht 
http://www.mikrocontroller.net/articles/Datei:Active_Low.gif?
mit den Externen wiederständen hatte ich 
http://www.mikrocontroller.net/articles/Datei:Acti...
danke danke danke :-) der Tag ist gerettet :-)

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.