Forum: Compiler & IDEs abtasten von Eingängen


von Elias 1. (alajas)


Lesenswert?

Hallo,

ich habe einen USB Teensy 2++, und möchte damit gerne eine Flanke 
abtasten.
Ich habe probehalber eine Simulation gebaut, die mir beim Eingang PIN F0 
eine Text Ausgabe geben soll, wenn ein 5Volt Signal anliegt.
1
int main (void)
2
3
{
4
  DDRF |= (1<<DDF0); //Setzt PINF0 auf Ausgang
5
  PORTF|= (1<<PORTF0); //schaltet den Pullup widerstand ein.
6
  PINF |= (1<<PINF0); //schaltet den PIN auf high
7
  
8
  while (1)
9
  {
10
  empfangen();
11
  }
12
  
13
  return 0;
14
}
15
16
int empfangen (void)
17
18
{
19
if ( (PINF & (1<<PINF0) )) //wenn PINF0 5Volt hat öffnet sich die If abfrage
20
{
21
count2 ++;
22
23
if (count2 == 10) //wenn der Eingang 10mal auf high/5V ist dann kommt eine Textausgabe
24
{
25
count3++;
26
printzahlen(count3);
27
print("\n");
28
count2 = 0;
29
}
30
}
31
}
Was ich nicht verstehe ist, dass warum ich den PIN F0 auf high schalten 
muss damit es funktioniert.

Ich lege an diesen Eingang 5V an und dann bekomme ich auch schon meine 
Ausgabe.

Vom Verständnis müsste doch dieser PIN auf Low gesetzt sein, damit ich 
high erkennen kann?
Wie geht das?

Im Endeffekt soll dann ein Echo Signal wie hier : 
http://elecfreaks.com/store/download/HC-SR04.pdf
beschrieben ist empfangen.

MfG Elias

von Arno (Gast)


Lesenswert?

Elias 1234 schrieb:
> DDRF |= (1<<DDF0); //Setzt PINF0 auf Ausgang

Elias 1234 schrieb:
> Ich lege an diesen Eingang 5V an und dann bekomme ich auch schon meine
> Ausgabe.

MfG, Arno

von Peter D. (peda)


Lesenswert?

Elias 1234 schrieb:
> PINF |= (1<<PINF0); //schaltet den PIN auf high

Der Kommentar ist definitiv falsch.

Bei älteren AVR ist PINx read only, bei neueren toggled dadurch PORTx.

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.