Hi, mein Problem mag wohl simpel erscheinen, aber ich bekomms echt nicht auf die Reihe einen Taster richtig einzulesen!
Sobald ich 5V an den Eingang lege, geht die LED zwar an, jedoch wird sie sehr dunkel oder der AVR (ist ein Mega16) Resettet sogar. Eine Strommessung hat über 500mA ergeben, die fließen wenn ich den Taster drück. Ich hab auch schon versucht die Pullups über PORTC = 0b11111111; zu aktivieren und in der if Abfrage dann nach 0b11111110; zu fragen, aber da geht die LED garnicht an. Hab auch schon die Forensuche bemüht und in den Tutorials gelesen, aber ich bin mir recht sicher das ich es richtig gemacht hab.
Was mich immer verwirrt, ist diese Zuordnung Bitweise. Mal steht da dann DDRB &= ~(1 << PB0) und dann wieder PORTB |= (1 << PB0), warum wird hier nicht beide male | (oder) verwendet? Bei dem ersten wird die Zahl ja sogar noch invertiert, was hat das für einen Sinn? Und warum dann ein &? Das ist vllt auch das, warum es bei mir nicht geht, weil mir da noch das Verständnis fehlt, kann das vllt wer erläutern?
Hier mal noch mien Code:
Code:
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB = 0b11111111;
DDRC = 0b00000000;
PORTC = 0b00000000;
while (1)
{
if (PINC == 0b00000001)
{
_delay_ms(50);
PORTB = 0b11111111;
}
}
return 0;
}
Danke schonmal für jede Antwort!
Lesezeichen