-
-
Sei() Cli() Atmega 16 Timer starten/stoppen
Hallo Leute,
da ich vorhabe eine Stoppuhr zu programmieren habe ich mir zum Testen folgendes Programm ueberlegt:
[//define all external dependencies
#include <avr/io.h>
#include <avr/interrupt.h>
//declare all used functions
void Sensor_init(void);
void LED_SW_init(void);
//define variables
volatile unsigned int z;
void TIMER2_interrupt_init(void)
{
TCCR2 = (1<<WGM21)|(0<<WGM20)|(1<<CS22)| (1<<CS21) |(0<<CS20); //CTC mode und Prescaler auf 256
TCNT2=0;
OCR2=249; //alle 0.008 s Interrupt
TIMSK = (1<<OCIE2);
}
ISR(TIMER2_COMP_vect) //LED soll alle 1 leuchten
{
z++;
if(z==125)
{
PORTB ^= (1<<PB0);
z=0;
}
}
int main(void)
{
Sensor_init();
LED_SW_init();
TIMER2_interrupt_init();
while(1)
{
if(!(PIND & (1<<PD0))) sei(); //Mit Pin 0 soll Timer gestartet werden
if(!(PIND & (1<<PD7))) cli(); //Mit Pin 7 soll Timer stoppen
}
}
void Sensor_init(){
DDRA=0x00; // Port A has to be used as a digital input
PORTA=0xff; // activate internal pull-up resistors for PORTA
}
void LED_SW_init(){
DDRB=0xFF; // PORTB is output for LEDs
PORTB=0xFF; // all LEDs off
}
]
Wenn ich den Taster 0 druecke soll der Timer aktiviert werden und wenn ich den andren Taster Pin 7 druecke soll er deaktiviert werden und nicht mehr zaehlen bzw die LED hier nicht mehr im sekundentakt blinken. Dieses Programm habe ich nur geschrieben um das Grundprinzip meines Programms zu testen...
Jetzt meine Probleme:
1) Die LED blinkt immer und reagiert auf keinen Taster:
2) Wenn ich von Port D die Bruecke zu RXD TDX drin habe, blinkt zu Beginn gar nichts. Erst wenn ich sie rausnehm fängt die LED an zu blinken.
Später will ich mit meinem Programm die Zeit stoppen, d.h. wenn der Taster 0 gedrueckt ist, soll der Timer starten und wenn der Taster 7 gedrueckt ist soll der Timer stoppen. Wie krieg ich das hin, dass meine LED nach gedruecktem Taster 0 blinkt und wenn ich Taster 7 einmal druecke aufhoert ?
Vielen Dank und viele Gruesse,
Jimmy[/code]
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen