Gast
#3133013
Hallo µC-Gemeinde,
ich möchte mit einem Tiny13 die Tastenbetätigungen hochzählen und beim
erreichen eines Wertes X einen Ausgang schalten...
Bzgl. µC und Programmierung bin ich Neuling, dass schonmal vorab.
Mein Problem ist nun, dass das Hochzählen der x nicht funktioniert.
Sollte durch Leuchten der led2 angezeigt werden (hier bei x=2 led2 an).
Was mache ich falls?
Der aktuelle Quellcode:
###############################################################
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 1200000UL // 1,2 MHz
#define WARTEPIN PINB
#define WARTEBIT PB0
//uint8_t x = 0;y;
int x;
int main(void)
{
DDRB &= ~_BV(PB0); // PB0 als Eingang
PORTB |= _BV(PB0); // Pull Up an der Stelle PB0 setzen
DDRB = (1<<DDB1)|(1<<DDB3)|(1<<DDB4); //PB1,PB3,PB4 als Ausgang
x=0;
while (1)
{
while (!(WARTEPIN & (1<<WARTEBIT)))
{
PORTB &=~((1<<PB3)); //led1 an
x=x+1;
PORTB|=(1<<PB1); //led3 aus
}
if (x==2) PORTB &=~((1<<PB4)); //led2 an
while (WARTEPIN & (1<<WARTEBIT))
{
PORTB |=(1<<PB4); //led2 aus
PORTB|=(1<<PB3); //led1 aus
_delay_ms(150); //led3 blinken
PORTB|=(1<<PB1);
_delay_ms(150);
PORTB&=~((1<<PB1));
}
}
return 0;
}
###################################################################
Schaltplan:
--o------------o------------------o-----------o----+5Vdc
| | | |
| | | |
| | | 10k | |
| |_| tiny13 | |
| | ____ | |
| __ led1 '---|1 8|-------' |
|- |__|--->|-----|2 7|-- led 3 __ |
'--|__|--->|-----|3 6|--------|<---|__|--'
led2 .--|4____5|-----.
| |
| | o led's mit 220 Ohm
| |=| Taster Vorwiderstand
| | o
| |
| |
----------------o---------------o-----------------GND
##################################################################
Vielen Dank im Voraus
MfG tiny 13