mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm läuft nicht, wieso eigentl. nicht ??


Autor: Studiologe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo habe nun alles so wie ich es in den Tutorials gefunden habe
angeschlossen.
Also +5V -> R(10kOhm) -> PORTD0
GND -> Taster -> PORTD0
+5V -> R(330Ohm) -> grüne LED -> PORTA0
+5V -> R(330Ohm) -> rote  LED -> PORTA1

so wird nun der Taster gedrückt, soll die LED an PORTA0 (grün) leuchten
und die rote soll aus sein,
wird der Taster wieder losgelassen, grüne LED aus, rote wieder an....
hier das Programm:

#include <avr/io.h>
#include <stdint.h>

void main(void)
{
  DDRA = 0xff;        //Port A als Ausgang definieren
  DDRD = 0x00;        //PortD ist Eingang
  PORTA = 0b11111111;      //alle  LED  aus

  while(1)
  {
    if(PORTD == 0b11111110)
    {
      PORTA = 0b11111110;  //grüne  LED  an
    }
    else
    {
      PORTA = 0b11111101;  //rote  LED  an
    }
  }
}

Aber nur die rote LED leuchtet und das unabhängig ob ich den Schalter
drück oder nicht :(
Könnt ihr mir sagen, woran das liegt ??

DANKE ihr seid definitiv die allerbesten :D !!!!!!

Autor: Olaf_K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du den PortD lesen willst, mußt Du PIND benutzen, also

...
while(1)
  {
    if(PIND == 0b11111110)
    {
...

Damit die unbenutzen Eingänge nicht herumklappern, solltest Du die
interen Pull-Ups zuschalten, also irgendwo am Anfang noch

PORTD = 0xff; //enable pull-ups

einfügen, dann kannst Du Dir auch den 10k-Widerstand am Taster sparen.

MfG Olaf

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du das Tutorial WIRKLICH gelesen hättest, wüsstest Du, dass man das
PIND-Register und nicht das PORTD-Register abfragen muss... Außerdem
wirst Du ohne Taster-Entprellung eh keinen definierten Zustand kriegen

Autor: Studiologe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE olaf DANKE johnny.m

UUpps, ja stimmt
ihr voll recht, hätte ich besser lesen sollen :)
das mit der taster entprellung ist ne gute sache,
aber es läuft auch ohne und das macht mich schon verdammt stolz !!
ist ja erst mein dritter tag mit controllern!
Mach richtig bock !! :D

Autor: Studiologe (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey jo,
hätt da noch ne klitze kleine Frage, hab im Anhang mein Datenblatt des
ATMega16 Controllers, könnt ihr mir sagen wie ich die dort drauf
montierten Relais schalte, also anspreche ??

Autor: Thomas Forster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Links neben PD2 sind wohl 2 Pins, genau ist das nicht zu erkennen.

wenn du an diese Pins, die dann über die Widerstände auf die
Transistoren gehen, 5V anlegst, ziehen die Relais an.

Du führst also diese an einen Pin des Atmega, z.B A3 oder A4, da du
diese ja schon als Ausgang gestetzt hast (DDRA=$FF) und kannst so die
Relais schalten: PORTA=0b00011000

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.