Im Ansatz richtig, in der Ausführung nicht ganz.
1. In Deiner main-Funktion steht nur
DDRA = 0x00;
Die if Schleife steht völlig außerhalb jeder Funktion, da würde der Compiler meckern.
2. Die DDR-Register werden normalerweise nur einmal beim initialisieren des Controllers gesetzt. Einen Port zur Laufzeit von Eingang zu Ausgang zu wechseln oder umgekehrt macht man eigentlich nicht.
3. So wie Du's jetzt hast, würde PA1 nur ein einziges mal abgefragt, danach steht der Controller still. Da müsste noch eine Endlosschleife hin.
4. Du hast ein paar Semikola vergessen...
Hier mal das Programm, wie's korrekt aussehen würde:
Code:
include <avr/io.h>
int main (void)
{
DDRA = 0x04;
while(1)
{
if (PINA & 0x02)
{
PORTA = 0x04;
}
}
return 0;
Allerdings würde so PA2 angehen, wenn PA1 auf High geht - aber nie wieder aus. Da müsste dann noch was dazu, aber da lasse ich Dich erst mal basteln....
Ach ja: ADC = Analog-Digital-Wandler = Eingang, um analoge Spannungen zu messen.
Gruß,
askazo
Lesezeichen