mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Komisches Verhalten Pollin Evaluationsboard


Autor: Tobias H. (matrix-ntn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe gerade nen kleinen Code für mein Pollin Evaluationsboard V 2.01 
geschrieben:
DDRD = 0xE0; // Die letzten 3 Ausgänge
while(1)
{
  if(bit_is_set(PIND,PD2))
  {
    PORTD |= (1<<PD5);
  }
  else
  {
    PORTD &= (1<<PD5);
  }

  if(bit_is_set(PIND,PD3))
  {
    PORTD |= (1<<PD6);
  }
  else
  {
    PORTD &= (1<<PD6);
  }

Der Code soll folgendes machen:
Wenn ich Taster1(PD2) drücke soll LED1(PD5) leuchten
Wenn ich Taster2(PD3) drücke soll LED2(PD6) leuchten
Beim loslassen sollen die LED jeweils zurückgesetzt werden.

Soweit so gut. Wenn ich meinen Code so ansehe, sollte es doch eigenlich 
gehen oder nicht?!

Programm geflasht und nach drucken des Tasters1 leuchtet LED1. Beim 
loslasen geht diese wieder aus. freu
Das gleiche auch bei Taster2 und LED2.
Wenn ich nun aber beide Taster drücke und lasse einen z.B. Taster1 los 
sieht man das die LED1 etwas (aber nur ganz gering) dunkler wird bleibt 
aber an. Erst wenn ich dann den Taster2 loslasse gehen beide aus. Dies 
funktioniert auch andersrum, wenn ich Taster1 gedrückt halte und Taster2 
loslasse.

An was liegt das? Ist der COde falsch oder ist da ein problem auf dem 
Board?

Bin um jeden tip Dankbar.

Grüße
Matrix-NTN

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sollte
PORTD &= ~(1<<PD6);
bzw
PORTD &= ~(1<<PD5);
lauten.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Code zum Ausschalten ist falsch, statt
  PORTD &= (1<<PD5);
muss es
  PORTD &= ~(1<<PD5);

heißen.

Edit:
Grmpf. Maik war schneller.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>    PORTD &= (1<<PD5);

    PORTD &= ~(1<<PD5);

Autor: Tobias H. (matrix-ntn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh... Ups.... wohl ein anfänger fehler :-)
Funktioniert nun perfekt auf dem Board...

Nun ist mein Ziel dies über ein Angeschlossenes IDE kabel zu machen...
Dabei setzte ich nun einen Ausgang(PA0) und sage, wenn der Eingang(PA1) 
kommt setze LED2 und ansonsten LED1.

Nun habe ich das IDE Kabel angeschlossen... Aber es leuchtet die LED2 
dauernd auser wenn ich den draht von PA1 mit meiner Hand berühre, dann 
gehen abundzu beide LEDs an und abundzu geht denn nur die LED1 an.
Wie wenn er irgendwie induktivitäten oder sowas hätte.

Hier noch der COde
PORTA |= (1<<PA0);
  if(bit_is_set(PINA,PA1))
  {
    PORTD |= (1<<PD6);
    PORTD &= ~(1<<PD5);
  }
  else
  {
    PORTD |= (1<<PD5);
    PORTD &= ~(1<<PD6);
  }

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interne Pullups für die Taster-Eingänge aktiviert?

So ein Kabel ist ne schöne Antenne und zieht Störungen magisch an. Wenn 
die Pins als Eingang geschaltet sind, dann haben die ne recht hohe 
Eingangsimpedanz. Deshalb wirken sich Störungen so extrem aus.

Abhilfe: Pullups aktivieren und den Schalter nach GND schalten lassen.

MfG
Marius

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.