Napisałem programik którego zadaniem ma być zliczanie impulsów, wydawało by się trywialne. gdy przeprowadzam symulacje działania programu wszystko dziala OK.
Po podłączeniu wyświetlacza i klawisza juz nie jest tak różowo.
wyświetlacz wyświetla zero i po wciśnięciu przycisku (zbocze opadające) wartość nie ulega zmianie(prawie ale o tym na końcu). co ciekawe gdy zmienię sposób wywoływania przerwania na wyzwalane poziomem niskim, wszystko dziala OK jak w bajce, tylko ze przytrzymanie klawisza powoduje ze wartość rośnie. Dlatego muszę mieć wyzwalanie zboczem.
Klawisz podciągany zewnętrznie do plusa przez rezystor 22K. schemat zaczerpnięty z NOWEGO ELEKTRONIKA 4/2001 str 40.
Dlaczego "prawie" - jak pomęczę przycisk tak kilka sekund poprzyciskam to wyświetlacz łaskawie zmieni wartość. Ponizej zamieściłem istotne fragmenty programu dotyczący deklaracji ustawień procesora.
cli
ldi A,low(RAMEND)
out SPL,A
WatchDog_Stop
ldi A,$08
out mcucr,A
ldi A,$80
out GIMSK,A
Sei
ldi R16,0xFF
out DDRB,R16
out PORTB,r16
ldi R16,0x73
out DDRD,R16
ldi R16,0xFF
out PORTD,r16
Po podłączeniu wyświetlacza i klawisza juz nie jest tak różowo.
wyświetlacz wyświetla zero i po wciśnięciu przycisku (zbocze opadające) wartość nie ulega zmianie(prawie ale o tym na końcu). co ciekawe gdy zmienię sposób wywoływania przerwania na wyzwalane poziomem niskim, wszystko dziala OK jak w bajce, tylko ze przytrzymanie klawisza powoduje ze wartość rośnie. Dlatego muszę mieć wyzwalanie zboczem.
Klawisz podciągany zewnętrznie do plusa przez rezystor 22K. schemat zaczerpnięty z NOWEGO ELEKTRONIKA 4/2001 str 40.
Dlaczego "prawie" - jak pomęczę przycisk tak kilka sekund poprzyciskam to wyświetlacz łaskawie zmieni wartość. Ponizej zamieściłem istotne fragmenty programu dotyczący deklaracji ustawień procesora.
cli
ldi A,low(RAMEND)
out SPL,A
WatchDog_Stop
ldi A,$08
out mcucr,A
ldi A,$80
out GIMSK,A
Sei
ldi R16,0xFF
out DDRB,R16
out PORTB,r16
ldi R16,0x73
out DDRD,R16
ldi R16,0xFF
out PORTD,r16