Forum: Mikrocontroller und Digitale Elektronik Pinabfrage ATMEGA


von Marco G. (grmg2010)


Lesenswert?

Moin zusammen,

ich stehe gerade auf dem Schlauch bezüglich einer einfachen Pin-Abfrage 
an einem ATMege644P.

Zum Aufbau: An PD6 und PD7 sind jeweils eine LED angeschlossen. Diese 
leuchten, wenn der Pin low ist. PD6 blinkt um ein Lebenszeichen zu 
signalisieren.

PD7 soll leuchten, wenn der als Eingang deklarierte PC0 auf low geht. 
Andernfall soll die LED ausgehen.
Leider ist dies nicht der Fall, netweder ist die LED aus oder bleibt an, 
je nachdem welchen Codeteil ich auskommentiere. Vermutlich sehe ich den 
Wald vor lauter Bäumen nicht:
1
#define F_CPU 8e6
2
3
#include <avr/io.h>
4
#include <util/delay.h>
5
6
7
int main(void)
8
{
9
  DDRC &= ~(1<<DDC0);        //PC0 als Eingang
10
  DDRD |= (1<<DDD6) | (1<<DDD7);  // PD6 und PD7 als Ausgang
11
  
12
  PORTC |= (1<<PC0);        //Setzen des Pull-Ups für PC0
13
  PORTD &= ~ (1<<PD7);      //Einschlten der LED an PD7
14
  _delay_ms(500);
15
  
16
    /* Replace with your application code */
17
    while (1) 
18
    {
19
    
20
    PORTD ^= (1<<PD6);      //Toggel Augang PD6
21
22
    if (!(PORTC & (PINC0)))    //Pinabfrage PC0 = 0
23
    {
24
      PORTD &= ~(1<<PD7);    //LED einschalten
25
    } 
26
    if (PORTC & (PINC0))    //Pinabfrage PC0 = 1
27
    {
28
      PORTD |= (1<<PD7);    //LED ausschalten
29
    }
30
    
31
    _delay_ms(250);
32
    }
33
}

Viele Grüße

von S. Landolt (Gast)


Lesenswert?

>  if (!(PORTC & (PINC0)))    //Pinabfrage PC0 = 0
>  if (PORTC & (PINC0))    //Pinabfrage PC0 = 1

PIN - Abfrage!

von S. R. (svenska)


Lesenswert?

Marco G. schrieb:
> if (!(PORTC & (PINC0)))    //Pinabfrage PC0 = 0

if (!(PINC & (1 << PC0))) ...

von Marco G. (grmg2010)


Lesenswert?

Wie ich gesagt habe, ich finde den Wald vor lauter Bäumen nicht...
Danke für die Korrektur

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.