Hallo und Guten Abend,
ich hab kurz was hingeschrieben, hier der Quelltext:
#include <avr/io.h>
int main()
{
DDRB = (1 << PB1 );
while( 1!=2 )
{
if ( PIND & (1<<PIND2) )
{
PORTB = (1<<PB1);
}
else
{
DDRB = (1 << PB1 );
TCCR1A = (1<<COM1A1) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);
ICR1 = 0x6FFF;
OCR1A = 0x10FF;
}
}
}
Ich will dass eine LED per PWM auf einer bestimmten Helligkeit leuchtet
und wenn ich den Taster drücke, soll sie hell Leuchten.
Leider funktioniert das ganze irgendwie nicht. Wenn ich beim resetten
den Taster drücke ist die LED hell und wenn ich sie loslasse wird sie
dunkler.
Resette ich ohne den Taster zu rücken ist sie gleich gedimmt.
Wenn ich aber dann die Taste drücke bleibt die LED gedimmt.
Wenn ich in AVR Studio debugge läuft das alles... Das heißt er Springt
in den richtigen if teil.
Das ganze läuft auf einem Atmega8.
Danke
> c ist eine Script-Sprache, wusste ich noch gar nicht... Welchen> C-Interpreter verwendest du?
Es ist aber gegen meine Stolz diese paar Zeilen 'Quatschcode' als
Programmieren zu bezeichnen.
> na dann hoffe ich, dass du schon den Unterschied zwischen Interpreter> und Compiler kennst, auch wenn es dein(e) Stolz nicht zulässt...
Boah ja, ich kenn ihn. Was soll denn diese i-dipfales-scheißerei?
Also, geh deine Frau ärgern!
Ach ja, ich hätte das gerne per Interrupt gemacht, aber ich bin zu blöd
dazu.
Würd mich freuen wenn mir jemand dabei helfen kann.
Der Taster hängt an PD2 bzw. int0.
Danke
Hi
>Ach ja, ich hätte das gerne per Interrupt gemacht, aber ich bin zu blöd
dazu.Würd mich freuen wenn mir jemand dabei helfen kann.
Dumme Idee. Hast du eine Vorstellung, wie viele Interrupts dein Taster
auslöst?
MfG Spess
Tasten per Interrupt, noch dazu bei so einer simplen Aufgabenstellung,
ist immer wieder nett zu lesen.
Vielleicht verrät mal ein User warum er einen Interrupt für so etwas
braucht? Warum er sich in die Welt der prellenden Schalter begeben will?
Was eigentlich ein Hauptprogramm noch machen soll?
Wär doch mal eine Idee: Ein uC, der nur mit Interruptroutinen läuft,
kein Main mehr braucht, die beliebten Zeitschleifen hardwäremäßig
realisiert, einen C-Interpreter auf dem Chip hat.
Nun im Ernst: Wozu Interrupt für die Taste?
... auf jeden Fall nicht dabei, dass man irgendwelche eindeutige
Definitionen(!) verdreht..., sondern dabei, durch logisches Überlegen,
triviale Fehler findet...
"Nun im Ernst: Wozu Interrupt für die Taste?"
Um ihn den Rest der Zeit ins idle zu setzen.
Methoden um das Prellen zu berücksichtigen, ob nun in HW oder SW, die
implementiert man einmal und kann sie immer wieder verwenden.
Polling (busy waiting im Allgemeinen) ist meines Erachtens etwas, dass
man ,wo man es kann, vermeiden sollte. Auch für soetwas Kleines.