Forum: Gesperrte Threads erster gehversuch mit interrut


von juliana (Gast)


Lesenswert?

hallo, ich  hab angefangen ein bisschen mit den interrupts rumzuspielen. 
hab aber folgendes problem.
benutze atmeg8515 und avrstudio mit winavr und stk500
den folgenden code habe ich aus einem buch abgeschrieben. aktiviert wird 
der INT0. bei drücken des taster2(PIND2) soll an portB raufgezählt 
werden. raufzählen funktioniert soweit ganz gut, nur manchmal wird 
einmal gezählt wenn ich draufdrücke und einmal wenn ich wieder loslasse, 
aber ich denke das kommt vom prellen, oder??

weiter im text: bei drücken des taster4 soll der zähler gelöscht werden. 
da tut sich aber überhaupt nix. kann mir vielleicht einer sagen wiseo??

vielen dank

CODE:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <avr/delay.h>

SIGNAL(SIG_INTERRUPT0)
{PORTB--;
_delay_ms(3000);}

void main(void){

    DDRB=0xff;
    PORTB=0xff;
    PORTD=0xff;


    MCUCR|=(1<<ISC01);

    GICR|=(1<<INT0);

    SREG|=(1<<7);

    while(1)
    { while(!PIND & (1<<PD4))
    PORTB=0;
    while((PIND & (1<<PD4)));  }

    }

: Verschoben durch Admin
von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Über dem Beitragsformular steht:

"Wichtige Regeln - erst lesen, dann posten!

* Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon 
einen ähnlichen Beitrag
* Aussagekräftigen Betreff wählen
* Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
* Groß- und Kleinschreibung verwenden
* Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang"

Bitte daran halten, das macht das Benutzen des Forums für alle 
angenehmer.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.