# ATMEL mikrokontrolleri >  Paliidziet iesaaceejam!

## kaspars24

Paliidziet saprast ko es daru nepareizi.
Tiku pie atmega8535l-8PU un domaaju ka jaameegina kaut ko ieprogrameet.
Peec atrastajiem piemeeriem uzbuuveeju so te un cereeju ka darbosies. Bet nekaa! 
 :: [attachment=0:13uwd4ov]exp1.jpg[/attachment:13uwd4ov]



#include <avr/io.h>          
#include <compat/ina90.h>
#define F_CPU 1000000UL  // 1 MHz
    //#define F_CPU 14.7456E6
    #include <util/delay.h>




void wait_delay_ms()
{
register unsigned short int t = 0;

while(++t);
}

int main()
{
DDRA  = 0xFF;  // PA0..PA3 as output
PORTA = 0x00;  // all PORTA output pins Off

while(1)
{
PORTA ^= 0x01;
wait_delay_ms(10);
PORTA ^= 0x02;
wait_delay_ms(10);
PORTA ^= 0x04;
wait_delay_ms(10);
PORTA ^= 0x08;
wait_delay_ms(10);
PORTA ^= 0x10;
wait_delay_ms(10);
PORTA ^= 0x20;
wait_delay_ms(10);
PORTA ^= 0x40;
wait_delay_ms(10);
PORTA ^= 0x80;
wait_delay_ms(10);

}
return 0;
}

----------


## kaspars24

Kaa to kodu dabuut taadaa lodzinaa?

----------


## dmd

izmanto [code] tagu vai pogu  ::

----------


## karloslv

esi pārliecināts, ka tavs kods kompilējas?

tava wait funkcija ir definēta bez argumentiem, bet izsauc tu viņu ar kaut kādu int parametru. es kompilatora vietā apvainotos un nekompilētu nemaz.

pēc loģikas gan izskatās pareizs kods. vienīgi aiztures cikls, 256 reizes kaut ko noskaitot un pārbaudot uz nulli, tomēr aizņems stipri mazāk nekā 1 ms laika pat uz 1 MHz.

----------


## Helmars

Pirmkārt, AVR GCC ar noklusētajiem uzstādījumiem tos tukšos ciklus vispār ignorē, tāpēc labāk mēģini lietot _delay_ms(ms) no <util/delay.h>. Otrkārt, vai RESET ir kaut kur pievienots?

----------


## kaspars24

Kaa ta reset isti straadaa? Lai programma darbotos reset pinaa jaapadod spriegums?

Man ir AVR Studio 4    kompileejas tas kods un simulaators arii straadaa tikai mikrenee nekas nenotiek.

Varbuut probleema ir pasaa failaa ko caur PonyProg2000 programeeju?
Es izmantoju to pasu failu ar paplasinaajumu  .c  no AVR Studio 4 

C valoda man ir svesa es veel nekaa nesaprotu.
Taapeec es te buros lai saprastu ku tie veezi ziemo.

----------


## Helmars

Paskaidrojums no http://www.atmel.com/dyn/resources/p...nts/AVRISP.chm:



> To enter programming mode AVRISP needs to pull RESET low. It is important that the external pull-up resistor on RESET pin is not so strong that it forces (holds) the pin high. To avoid this problem it is recommended that the RESET pull-up resistor should be no less than 4.7 kOhm.


 Tātad caur pretestību pie VCC.
AVR Studio debug režīmā Processor logā ir redzams laiks (Stop Watch). View/Disassembler rāda procesora instrukcijas. Ar šiem rīkiem vari pārliecināties, kā ir nokompilēts "while(++t);" un cik ilgi tas izpildās.

----------


## Delfins

ja gribi skriejošās gaismiņas ,labāk izmantot "masīvu" un "drukāt" portā, lai nav katr reiz jāraksta porta izvade "pa savējam".
Tā var sakodēt visādus efektus un t.t.

----------


## kaspars24

Pieliku rezistoru 4.79k Paspeeleejos ar kodu, vienalga nekaa.
Viss kompilejas simulaatora straadaa, bet mikrenee nee.



```
#include <avr/io.h>
#define F_CPU 1000000UL // 1 MHz
//#define F_CPU 14.7456E6
#include <util/delay.h>
#define _AVR_IOM8535_H_ 1

uint8_t k;
void wait_delay_ms(ms)
{
uint8_t i;
for(i=0;i<5;i++) _delay_ms(10);
}
int main()
{
DDRA = 0xFF; // PA0..PA8 as output
PORTA = 0x00; // all PORTA output pins Off

while(1)
{
PORTA ^= 0x01;
wait_delay_ms(10);
PORTA ^= 0x02;
wait_delay_ms(10);
PORTA ^= 0x04;
wait_delay_ms(10);
PORTA ^= 0x08;
wait_delay_ms(10);
PORTA ^= 0x10;
wait_delay_ms(10);
PORTA ^= 0x20;
wait_delay_ms(10);
PORTA ^= 0x40;
wait_delay_ms(10);
PORTA ^= 0x80;
wait_delay_ms(10);

}
return 0;
}
```

----------


## Vikings

Pag pag - jāprogrammē taču .hex fails nevis .c! Tas nozīmē ponyprogā izvēlies gaismiņas.hex nevis gaismiņas.c.

----------


## kaspars24

A kur taadu atrast?

----------


## Helmars

Droši vien <projekta direktorija>\default .

----------


## kaspars24

Vinkaarsi unikaali! Aizgaaja!   
LIELAIS PALDIES!!!  ::

----------

