Witam serdecznie!
Na wstępie chciałbym powiedzieć ,że korzystam z ATB rev 1.03 i w oparciu o książkę "mikrokontrolery AVR, Język C Podstawy programowania" doszedłem do przykładu 3 czyli multipleksowanie.
W płytce testowej posiadam Atmega 644p i nie wiem dlaczego ale wyskakują mi błędy podczas próby wgrania wsadu do mikrokontrolera. Sporo szukałem na ten temat i owszem sporo znalazłem ale żaden wątek nie rozwiązał mojego problemu. A więc do rzeczy:
Korzystam ze środowiska AVR STUDIO. Cały wsad jest skopiowany z dołączonej do książki płyty. Jest on przygotowany pod środowisko eclipse więc musiałem go skopiować ręcznie. Cały wsad składa sie z main.c , d_led.c i d_led.h . Przekopiowując wsad do avr studio tworzyłem nowe pliki poprzez klikniecie prawym klawiszem na "source files"/"create new source file.." nadawałem nazwe z rozszerzeniem .c i wklajelem odpowiednia czesc wsadu. Analogicznie postapilem z d_led.h. z tym ze prawym klawiszem klikalem na "header Files" i plik byl z rozszrzeniem .h.
Nastepna rzeczą jaką musiałem zmienić było ustawienie timera. Zrobiłem to tak:
Kod:
// ustawienie TIMER0
TCCR0A |= (1<<WGM01); //tryb ctc
TCCR0B |= (1<<CS02); //preskaler 1024
TCCR0B |= (1<<CS00);
OCR0A = 39; //dodatkowy podzial przez 39
TIMSK0 |= (1<<OCIE0A); //zezwolenie na przerwanie COMPARE MATCH
Kolejna niewielka zmiana w kodzie czyli zmiana nazwy przerwania:
Kod:
ISR(TIMER0_COMPA_vect)
Moje pytanie: Czy opisane przeze mnie zmiany, zostały wykonane prawidłowo? Powinno to działać? ( zakladam ze tak bo wkoncu wyswietlacz pokazuje to co chce)
Przy wgrywaniu wsadu dotyczacego diody led i microswitchow nie było najmniejszego problemu, wszystko odbywało się prawidłowo. Przed wgraniem wsadu odnosnie multipleksowania mikrokontroler laczyl sie bezproblemowo z mkavrcalculator ale kiedy wsad zostal juz wgrany to ( po ktorejs probie z kolei) wyswietlacz sie odezwal i faktycznie wyswietla takie cyfry jak powinien ale wgrywaniu wsadu towarzyszyla mrugajaca czerwona dioda led na plytce testowej.
Wyswietlacz wciaz wyswietla cyfry takie jakie powinien ale teraz przy probie klikniecia przycisku "sprawdz podlaczony avr" wyskakuje mi taki blad AVR DUDE.
"avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
ft245r_drain called but queue is not empty 1
avrdude.exe: drain OK
ft245r: bitclk 4800 -> ft baud 2400
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x0f4b05
avrdude.exe: Expected signature for ATMEGA8 is 1E 93 07
avrdude.exe: reading signature memory:
Reading | ################################################## | 100% 0.00s
avrdude.exe: writing output file "C:\Documents and Settings\Intel\Moje dokumenty\mkAVRCalculator\sig_tmp.hex"
avrdude.exe: safemode: Fuses OK
avrdude.exe done. Thank you."
Natomiast kiedy probuje wykonac kasowanie pamieci flasch badz przy odczytywaniu/zapisywaniu fusow wyskakuje mi taki blad AVR DUDE
"avrdude: BitBang OK
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
ft245r_drain called but queue is not empty 1
avrdude: drain OK
ft245r: bitclk 230400 -> ft baud 115200
avrdude: ft245r_program_enable: failed
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you."
Nie potrafie poradzic sobie z tym problemem i bardzo prosze o pomoc, podpowiedz co robie nie tak.