xMega totaler Anfänger, Frage I/O

Gast #2204950
Lesenswert?
• ▲
▼
Hallo,

bin wirklich blutiger Anfänger, und möchte mich ein wenig mit 
Microcontrollern beschäftigen. Habe mir schon einige Tutorials 
durchgelesen, und habe nun ein evaluation-Board mit ATXMega 128A1 hier. 
Ich kann auch Code auf mein Board laden, habe aber eine Frage zu Ein- 
und Ausgängen.

Ich komme eher aus dem Bereich SPS, daher komm ich wohl auch nicht auf 
den richtigen PFad, hier mein Code:
1
#include <avr/io.h>
2
#include <stdint.h>
3

4
int main (void) {            
5
 
6
PORTE.DIR = 0x00;       // Alle Pins EINGANG
7
PORTE.DIR |= (1<<PIN5);     // PINE5 auf Ausgang
8

9
  while(1)
10
  {
11

12
// Ist das Signal an PIN0 von PORTE Low so ist der Vergleich wahr Tast nach GND
13
if (!( PORTE.IN & 0x01 )) {
14

15
PORTE.OUT |= (1<<PIN5); //PORTE Pin5 wird HIGH wenn PORTE PIN0 low ist
16
  }
17

18
} 
19
    return 0;
20
}

Ich möchte, dass der Ausgang PORTE PIN5 gesetzt wird, wenn der Eingang 
PORTE Pin0 high ist. Der Ausgang wird aber direkt gesetzt. Kann mir ein 
Profi vlt. einen kleinen Hinweis geben?

Ich bedanke mich jetzt schon mal ;-)

Gruss
Sven
Persönliche Seite #2205003
Lesenswert?
• ▲
▼
Sven schrieb:
> Ich möchte, dass der Ausgang PORTE PIN5 gesetzt wird, wenn der Eingang
> PORTE Pin0 high ist. Der Ausgang wird aber direkt gesetzt. Kann mir ein
> Profi vlt. einen kleinen Hinweis geben?

Weil du genau das umgekehrte Verhalten in C-Code umgesetzt hast. Wenn 
der Pin0 low ist, ist (PORTE.IN & 0x01) 0, negiert also 1 und dein 
Ausgang wird gesetzt. Im Kommentar ist es jedoch richtig.

Ansonsten, wenn du nur einen Taster dran hast, solltest du auch den 
Pull-Up-Widerstand aktivieren an Pin0 - ansonsten floatet dein Pin. Wenn 
nur einmal ein Low-Pegel erkannt wird, wird dein Ausgangspin gesetzt, 
jedoch nie mehr zurückgesetzt. Eventuell also noch ein else spendieren, 
sofern das Verhalten nicht gewünscht wird. Details zum Pull-Up sind in 
dem verlinkten Tutorial.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.