# ATMEL mikrokontrolleri >  Atmega8 neresetojas, kā nākas

## java

Programmas ideja ir ieslēgt divas gaismas diodes, sagaidīt pogas piespiedienu un pēc tā piespiediena ieslēgt vienu vai otru diodi atkarībā no tā vai poga ir, vai nav piespiesta.


```
#define F_CPU 8000000

#include <avr/io.h>
#include <util/delay.h>

#define LED_1_ON PORTD |= (1<<PD0)
#define LED_1_OFF PORTD &= ~(1<<PD0)
#define LED_2_ON PORTD |= (1<<PD1)
#define LED_2_OFF PORTD &= ~(1<<PD1)

#define BUTTON !((PINC >> PC5) & 1)

int main() {
	DDRD |= (1<<PD0) | (1<<PD1);
	PORTD |= (1<<PD0) | (1<<PD1);
	PORTC |= (1<<PC5);
	while (!BUTTON);
	while (1) {
		if (BUTTON) {
			LED_1_ON;
			LED_2_OFF;
		}
		else {
			LED_1_OFF;
			LED_2_ON;
		}
	}
}
```

 Problēma ir tāda, ka pēc barošanas atvienošanas un pievienošanas atpakaļ (pat ja barošana tika atvienota uz 10 sekundēm), citreiz neiedegas abas diodes (kas ir pieslēgtas pie PD0 un PD1), bet iedegās tikai viena (PD1), kas liecina par to, ka kods kaut kā nebūt ir ticis ārā no pirmā cikla un iegājis otrajā. Ja resetoju, izmantojot reset pinu un nevienojot nost no barošanas, vienmēr viss nostrādā korekti.

Shēmā nav nekādu kondensatoru, viekārši +5V uz VCC pinu no 7805 stabilizatora (kuru baroju ar 9 voltiem).

Kādam ir idejas, kas varētu būt pie vainas?

----------


## next

Varbuut laika aizturi vajag pie iesleegshanas, kapacitaate jau ir ne tikai kondensatoriem.
Sheemu iepostee.

----------


## bbarda

Iespamošu  ne par tēmu jo citu topiku nav jēga sākt,jautājums sekojoš-kam paredzēts MICRO-1 FC1A-PL1E DATA LOADER PRESET TIMER/COUNTER MONITO .Man te tāds aizmētājies.

----------


## java

Uzzīmēju shēmu

----------


## Vikings

Kāpēc no 28. izvada nav rezistors uz +5V?

----------


## next

Tai sheemai var piekasiities visur.
Saakot no taa ka 7805 nav blokjeejosho kondensatoru (gjeneraacija!), LEDiem reziiklju nav un beidzot ar to ka baterija pievienota otraadi.
Nav zinaams kas ziimeejot novienkaarshots un kur iisti feileri dziivo.

----------


## java

28. kājai nav rezistors uz +5V, jo tai kājai ir ieeneiblots iekšējais pull-ups (PORTC |= (1<<PC5) :: ;
Gaismas diodēm nav rezistoru, jo tās ir 5V gaismas diodes;
Stabilizatoram nav kondensatoru, jo nezinu, kādus tur vajag likt;
Baterija otrādāk uzzīmēta, jo uzskatīju par pareizu, bet acīmredzot ir nepareizi uzzīmēts tad, taču varu apgalvot, ka reālajā shēmā baterija ir pievienota pareizi.

----------


## Vikings

Nu tad atliek vien piekrist next - pie ieslēgšanās ļoti daudzas lietas ir nenoteiktas tā kā labāk būtu pagaidīt kaut vai 0,5s pēc ieslēgšanās (kas pietiktu atliektiem galiem) lai visi pārejas procesi beigtos. Tas arī izskaidro to, ka ar reset pogu viss notiek kā vajag, bet ieslēdzoties bieži vien nē.

----------


## kaspich

veel viena niansite par baroshanu - paskati, kaada ir minimaalaa pateereejamaa straava konkreetajam 7805 modelim.
zem taas izejas spriegums buus neadkvaats.
blokjeejoshie:
0.47uF keramika pirms un peec 7805.

----------


## java

Labi, es biš sadirsu. Šodien novēroju, ka resetojot caur reset pinu reizēm notiek tas pats.

----------


## java

Nākamais novērojums: Ja es pogu lasu trīs reizes (no sērijas: while(1) if (button) if (button) if (button) break :: , viss ir kārtībā (neiziet no cikla nepiespiežot pogu). Ja divas - iziet.

----------


## Delfins

To fišku sauc par debouncing. Pameklē netā, neesi pirmais kas uzraujās uz to.

----------

