Witam
Napotkałem dziwny problem z poniższym kodem:
[ panie kolego - przeczytaj NAJPIERW DOKŁADNIE to: topic7402.html i popraw ten post - mirekk36 ]Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Książkowy przykład mrugania diodą na procesorze Atmega8A
Ustawione taktowanie to 8 MHz (ustawione za pomocą mkAVRCalculator), podobnie w Project -> Properties, jednak procesor nie reaguje na zmianę programu. Jedyna jego reakcja następuje po zmianie ustawień taktowania na 1 MHz, oraz 16 MHz.
Może mieć to związek z tym, iż nie mogąc znaleźć rozwiązania uznałem, iż może nie działa ustawienie taktowania, więc:
W funkcji _delay_ms ustawiłem wartość 200, dla ustawionego taktowania 1 MHz. Program o dziwo zadziałał, jednak kolejna próba zmiany czasu opóźnienia nie powiodła się, dla jakiegokolwiek argumentu delay dioda mrugała z taką samą częstotliwością.
Więc zmieniłem taktowanie na 8 MHz i ustawiłem czas opóźnienia na 1000 ms, co również zadziałało, ale tak jak poprzednio nie było możliwości zmiany na jakikolwiek inny czas opóźnienia. Ostatecznie, ustawiłem _delay_ms(5000) i odpaliłem program przy taktowaniu (zmienionym w EclipseGadget) 16 MHz, zadziało.
Teraz sytuacja wygląda tak, iz cokolwiek ustawię w kodzie, wykonywanie programu zmienia się jedynie dla zmiany wartości taktowania procesora, co więcej: zmienia się na wartości, które ustawiałem dla kolejnych (1, 8, 16) taktowań...
Co zrobiłem źle? Przypomnę, że już na samym początku, zanim zacząłem "eksperymentować" procesor (mimo poprawnego wykrywania go w mkAVRCalculator, oraz bezbłędnej kompilacji) nie odpowiadał na zmianę wgrywanego programu...
Poniżej zamieszczam także wynik kompilacji:
Kod:
//Wynik kompilacji
02:19:33 **** Build of configuration Release for project PierwszyAVR ****
make all
Building file: ../Pierwszy.c
Invoking: AVR Compiler
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF"Pierwszy.d" -MT"Pierwszy.d" -c -o "Pierwszy.o" "../Pierwszy.c"
Finished building: ../Pierwszy.c
Building target: PierwszyAVR.elf
Invoking: AVR C Linker
avr-gcc -Wl,-Map,PierwszyAVR.map -mmcu=atmega8 -o "PierwszyAVR.elf" ./Pierwszy.o
Finished building target: PierwszyAVR.elf
Invoking: AVR Create Extended Listing
avr-objdump -h -S PierwszyAVR.elf >"PierwszyAVR.lss"
Finished building: PierwszyAVR.lss
Create Flash image (ihex format)
avr-objcopy -R .eeprom -R .fuse -R .lock -R .signature -O ihex PierwszyAVR.elf "PierwszyAVR.hex"
Finished building: PierwszyAVR.hex
Create eeprom image (ihex format)
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex PierwszyAVR.elf "PierwszyAVR.eep"
Finished building: PierwszyAVR.eep
Invoking: Print Size
avr-size --format=avr --mcu=atmega8 PierwszyAVR.elf
AVR Memory Usage
----------------
Device: atmega8
Program: 90 bytes (1.1% Full)
(.text + .data + .bootloader)
Data: 0 bytes (0.0% Full)
(.data + .bss + .noinit)
Finished building: sizedummy
02:19:35 Build Finished (took 1s.666ms)
oraz wynik wgrywania programu przez program Eclipse:
Kod:
//Wynik wgrywania programu:
Launching D:\Programy\MkAvrCalculator\AVRDUDE\avrdude -pm8 -cusbasp -Ereset,vcc -Uflash:w:PierwszyAVR.hex:a
Output:
Please wait ...
avrdude_mk.exe: WARNING: -E option not supported by this programmer type
avrdude_mk.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude_mk.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude_mk.exe: Device signature = 0x1e9307
avrdude_mk.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude_mk.exe: erasing chip
avrdude_mk.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude_mk.exe: reading input file "PierwszyAVR.hex"
avrdude_mk.exe: input file PierwszyAVR.hex auto detected as Intel Hex
avrdude_mk.exe: writing flash (90 bytes):
Writing | ################################################## | 100% 0.06s
avrdude_mk.exe: 90 bytes of flash written
avrdude_mk.exe: verifying flash memory against PierwszyAVR.hex:
avrdude_mk.exe: load data flash data from input file PierwszyAVR.hex:
avrdude_mk.exe: input file PierwszyAVR.hex auto detected as Intel Hex
avrdude_mk.exe: input file PierwszyAVR.hex contains 90 bytes
avrdude_mk.exe: reading on-chip flash data:
Reading | ################################################## | 100% 0.05s
avrdude_mk.exe: verifying ...
avrdude_mk.exe: 90 bytes of flash verified
avrdude_mk.exe: safemode: Fuses OK
avrdude_mk.exe done. Thank you.
Compiled special for http://forum.atnel.pl (v5.11.1)
avrdude finished
Pozdrawiam
