Hej
Jestem poczatkujacym w dziedzienie uP dlatego prosze o wyrozumialosc
. Stworzylem ostatnio prosty uklad ktory ma sterowac praca 3 diod. Napisalem program w C:
i to wszystko dziala bez problemu, ale poniewaz chcialem zeby kod byl "ladniejszy" to napisalem jeszcze cos takiego:
obydwa programy kompiluja sie bez problemu, natiomiast przy tym drugim wystpuje problem z wgraniem go do uP. Avrdude wyswietla cos takiego:
Co nie tak zrobilem? Przypomne ze ten pierwszy program dzialal jak nalezy, a ten drugi nie chce sie wgrac nie wiem z jakiego powodu (program ma takie samo zadanie jak ten pierwszy), pozdrawiam i dziekuje za zainteresowanie
Jestem poczatkujacym w dziedzienie uP dlatego prosze o wyrozumialosc
#include <avr/io.h>
#define F_CPU 8000000
#include <util/delay.h>
int main()
{
int dioda_zolta = 0x01;
int dioda_zielona = 0x02;
int dioda_czerwona = 0x04;
int czas = 10;
while(1)
{
DDRB = dioda_zolta;
PORTB = 0x00;
_delay_ms(czas);
PORTB = 0xff;
_delay_ms(czas);
DDRB = dioda_zielona;
PORTB = 0x00;
_delay_ms(czas);
PORTB = 0xff;
_delay_ms(czas);
DDRB = dioda_czerwona;
PORTB = 0x00;
_delay_ms(czas);
PORTB = 0xff;
_delay_ms(czas);
}
}
i to wszystko dziala bez problemu, ale poniewaz chcialem zeby kod byl "ladniejszy" to napisalem jeszcze cos takiego:
#include <avr/io.h>
#define F_CPU 8000000
#include <util/delay.h>
void mrygacz(int ktora_dioda, int jak_dlugo)
{
DDRB = ktora_dioda;
PORTB = 0x00;
_delay_ms(jak_dlugo);
PORTB = 0xff;
_delay_ms(jak_dlugo);
}
int main()
{
int dioda_zolta = 0x01;
int dioda_zielona = 0x02;
int dioda_czerwona = 0x04;
int czas = 10;
while(1)
{
mrygacz(dioda_zolta, czas);
mrygacz(dioda_zielona, czas);
mrygacz(dioda_czerwona, czas);
}
}
obydwa programy kompiluja sie bez problemu, natiomiast przy tym drugim wystpuje problem z wgraniem go do uP. Avrdude wyswietla cos takiego:
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e910a
avrdude: erasing chip
avrdude: reading input file "C:\avr\diodki\main.hex"
avrdude: input file C:\avr\diodki\main.hex auto detected as Intel Hex
avrdude: ERROR: address 0x0810 out of range at line 129 of C:\avr\diodki\main.hex
avrdude: write to file 'C:\avr\diodki\main.hex' failed
avrdude done. Thank you.
Co nie tak zrobilem? Przypomne ze ten pierwszy program dzialal jak nalezy, a ten drugi nie chce sie wgrac nie wiem z jakiego powodu (program ma takie samo zadanie jak ten pierwszy), pozdrawiam i dziekuje za zainteresowanie
