lese zustand PA5 gebe ihn auf PA4 aus
Hallo zusammen!
ich wollte diese kleine Aufgabe :
Lese von Port A, Pin 4 den Zustand eines Tasters ein und gebe ihn auf Port A, Pin 5 aus (wo eine LED eingesclossen ist )
für ATMEGA32
Code:
//*******************************************
// READ FROM AP03 WRITE TO AP04
//*******************************************
#include <avr/io.h>
#define LED 4
#define TASTER 3
#define LED_ON PORTA |= (1 << LED )
#define LED_OFF PORTA &= ~( 1<< LED )
#define VALUE_TASTER bit_is_set (PINA, TASTER)
uint8_t VALUE;
// Initialisierung
void init (void)
{
DDRA |= (1 << LED); // PIN5 von DDRA als ausgang
DDRA &= ~( 1<< TASTER); // PIN4 von DDRA als eingang
PORTA |= (1 << TASTER); // Interne Pullup einschalten
}
int main (void)
{
init();
VALUE = VALUE_TASTER;
while (1)
{
if ( VALUE==1)
LED_ON;
else
LED_OFF;
}
return 0;
}
kompilieren war min 0 fehler
aber wurde mir gesagt dass es nicht funktionnieren wird weil es wird nur der Status des Tasters beim Einlesen festgehalten und auf die LED abgebildet.
Ich habe den fehler aber nicht gefunden, könnt ihr mir bitte helfen??
Danke!
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
wies aussieht arbeite ich alle alten threads durch :) ich hab nämlich hier auch ein kleines problem.
folgender code:
Code:
#include <avr/io.h>
#define LED (1)
#define BUTTON (1)
int main(void)
{
/* PORTB.PIN1 to output */
DDRB |= _BV(LED);
/* PORTA.PIN1 to input */
DDRA &= ~_BV(BUTTON);
/* activate internal pullups */
PORTA |= _BV(BUTTON);
PORTB |= _BV(LED);
for (;;) {
if (bit_is_set(PINA, BUTTON)) {
if (!bit_is_set(PINB, LED)) {
PORTB |= _BV(LED);
} else {
PORTB &= ~_BV(LED);
}
}
}
return(0);
}
mit der beschaltung wie im anhang.
ich habe jetzt das problem, dass die LED an PINB1 immer schwach leuchtet. Sobald ich den Taster drücke, leuchtet die LED heller bzw. hört ganz auf zu leuchten, jedoch wechselt sie immer wieder in den schwach-leuchte-zustand zurück, sobald man den taster loslässt.
-- 1: wieso leuchtet die LED immer schwach?
-- 2: Sollte folgender Befehl die LED nicht durchgehend leuchten lassen
und durch den untenstehenden befehl beim nächsten tastendruck wieder ausschalten?
Code:
PORTB &= ~_BV(LED);
Jedenfalls würd ich das Datenblatt so interpretieren.
Ist sicher was ganz dummes aber ich komm einfach nicht drauf..
danke nochmal + lg