aber um den Pull up wiederstand zu aktivieren reicht doch
oder nicht?PORTA=(1<<PA7);
aber um den Pull up wiederstand zu aktivieren reicht doch
oder nicht?PORTA=(1<<PA7);
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Für die Messung muss man umschalten zwischen Ausgang-low und PullUp akitv. Dazu muss man sowohl das Daterichtungsregister (DRRA) ändern als auch das Ausgaberegister (PORTA).
Also etwa in der Reihenfolge:
DRRA=(1<<PA7);
PORTA=(0<<PA7);
etwas Warten
DRRA=(0<<PA7);
PORTA=(1<<PA7); // ab hier zählt die Zeit
In der Regel wird man das ganz auch noch mehrmals über 20 ms machen müssen und dann sehen wie oft man über die Schwelle kommt, bzw. was als Mittelwert rauskommt.
Hab nach ein bisschen rum testen gemerkt das er immer in der schleife bleibt, also er nimmt nie den high Pegel an???
#include<avr/io.h>
#defineF_CPU1000000UL// 1 MHz
#include<util/delay.h>
intmain(void)
{
inti=0;
intgrenzwert=5;//grenzwert eintragen
DDRA=(1<<PA7);
PORTA=(0<<PA7);
DDRA=(1<<PA2);
PORTA=(0<<PA2);
_delay_ms(1);
while(1)
{
PORTA=(0<<PA7);
_delay_ms(1);
DDRA=(0<<PA7);// ab hier zählt die Zeit
for(i=0;PINA&(1<<PA7);++i)
{
}
if(i<=grenzwert)
{
PORTA=(1<<PA2);
}
else
{
PORTA=(0<<PA2);
}
}
}
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Lesezeichen