ne ich habe ja nicht die Led vom Board, dass weiß ich das die so funktionieren...
Habe eine externe led mit widerstand an port d4 gesteckt..
habe auch den Fehler behoben trotzdem ist die led die ganze zeit an, außer wenn ich auf PB4 auf masse gehe!
Werbung
ne ich habe ja nicht die Led vom Board, dass weiß ich das die so funktionieren...
Habe eine externe led mit widerstand an port d4 gesteckt..
habe auch den Fehler behoben trotzdem ist die led die ganze zeit an, außer wenn ich auf PB4 auf masse gehe!
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Ich kenne das Board nicht und weis jetzt auch nicht wie die Taster da drauf verschalten sind falls überhaupt schon welche drauf sind - oder wie du sie selbst verschalten hast falls du die selber da dran gebaut hast.
Aber ich würde mal tippen, dass du den Pulldown-Widerstand nach GND vergessen hast![]()
(Ein offener Eingang wird als high erkannt, weil da ca. 1.6V von der Innenbeschaltung zurücksprotzen)
ja nach den Grundkenntnisse heißt es ja das man
1) DDRB = (1<<PB0); Eingang
2) PORTB = (1<<PB0); Pulldown widerstand aktivieren
das was ich dann versucht hatte war auch:
PINB = (1<<PB0); um den Eingang auf 0 zu setzen
also ich habe die LED selbst dran gemacht und den Taster ersetze ich damit das ich den Kabel auf 5V kontaktiere
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Für mich heißt dass, dass der ganze Port (also PB0 bis PB7) Eingang ist, bis auf den PB0, der dann Ausgang ist.DDRB = (1<<PB0); Eingang
PORTB = (1<<PB0); Pulldown widerstand aktivieren
- AVRs haben doch nur PullUps?! oO
- Was du da machst ist den Ausgang PB0 auf 5V setzen
das was ich dann versucht hatte war auch:
PINB = (1<<PB0); um den Eingang auf 0 zu setzen
- Wenn ein Pin als Eingang gesetzt ist kann man mit dem Register "PINB" die PullUps aktivieren und deaktivieren (1 = Pullups aktiv, 0 = vollkommen offener Eingang)
- Du kannst keine Eingänge setzen, nur Ausgänge
- Um Ausgänge auf 0V / 5V zu setzen wird das PORTB-Register verwendet
Mir scheint du hast da bisschen was durcheinander gebracht. Könnte aber auch an der Uhrzeit liegen(Was du da schreibst erinnert mich an die PICs, dort kommt so Schwachsinn (meine Meinung), dass 1 ein Eingang ist und das man PullDowns reinbaut)
Viele Grüße
Ja kann die Uhrzeit auch gut sein werd glaub ich auch jetzt Richtung Bett gehen.
Hab viel durcheinander gebracht aber wie im Code:
Hab ich DDRB auf null gesetzt.
Aber wie frage ich den Pin denn ab, nach 5V.
Ich habe ein Kapazitäten Schalter und wenn er auf high ist, gibt er 5V ab.
Und ich möchte gerne das mit den AVR diese 5V abgreifen, ich möchte aber nicht auf etwas warten,
wo man da nichts mehr machen kann.
Wie krieg ich das realisiert wenn ein Eingang automatisch auf 5 V liegt?
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
D.h. das hier ist deine Schaltung?
Dann sollte das hier gehen:Code:_________________ AVR | | PB0--+--------- Kapazitiver Schalter, liefert 0V oder 5V | | ___ LED PD4--+------|___|---|>|---+ | | | ---GND _________________|
Code:#include <avr/io.h> #include <util/delay.h> int main(void) { DDRD = 0b00010000; // Pin 4 des PortD auf Ausgang DDRB = 0b00000000; // Alle 8 Pins des PortB auf Eingang while(1) { if(PINB & 0b00000001) // Wenn der Schalter 5V liefert... { PORTD |= 0b00010000; // ...die LED anschalten... } else // ...ansonsten... { PORTD &= 0b11101111; // ...die LED ausschalten } } }
sorry hab schon alles zusammen gepackt und kann das jetzt nicht ausprobieren,
aber ist das nicht genau das, was ich im Code stehen hab.
Das Problem ist ja das der Eingang schon 5 V ausgibt und die LED die ganze zeit an ist,
ich glaub nicht das ich dann in PB0 noch 5 V einspeisen kann?
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Lesezeichen