Что бы закончить тему . Вот почему она так себя ведёт
2. Interrupts may be lost when writing the timer registers in the asynchronous timer
The interrupt will be lost if a timer register that is synchronous timer clock is written when the
asynchronous Timer/Counter register (TCNTx) is 0x00.
Problem Fix/Workaround
Always check that the asynchronous Timer/Counter register neither have the value 0xFF nor
0x00 before writing to the asynchronous Timer Control Register (TCCRx), asynchronous
Timer Counter Register (TCNTx), or asynchronous Output Compare Register (OCRx).
int main (void)
{
init7Segs (); // инициализация индикатора
initButtons (); // инициализация кнопки
timerInit (); // инициализация таймера
resetTimer (); // обнуление таймера
viewEnable (); // разрешение вывода на индикатор
unsigned char btnPrevState = PIN_BUTTON; // предыдущее состояние кнопки
unsigned char state = 0; // состояние машины
while (1) // бесконечный цикл
{
if (PIN_BUTTON != btnPrevState) // если произошло действие(нажали/отпустили кнопку)
{
if (!(PIN_BUTTON&_BV(BUTTON_BIT))) // если нажали на кнопку
{
switch (state) // посмотрим что за состояние сейчас
{
case STATE_RESET: // состояние обнуления (когда горят все нули)
timerEnable (); // разрешаем счет таймера
state = STATE_ENABLE; // установим состояние (счет запущен)
break; // выйти
case STATE_ENABLE: // счет запущен
timerDisable (); // отключим таймер
state = STATE_DISABLE; // переключим на состояние стоп
break;
case STATE_DISABLE: // состояние стоп
resetTimer (); // обнулим таймер
state = STATE_RESET; // таймер обнулен
break;
}
}
btnPrevState = PIN_BUTTON; // запомним предыдущее состояние кнопки
}
}
}
При компиляции не создается hex файл, вот что пишется при компиляции:
mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Sec.o -MF dep/Sec.o.d -c ../Sec.c
/usr/bin/sh: -Wall: command not found
make: [Sec.o] Error 127 (ignored)
mmcu=atmega8 -Wl,-Map=Sec.map Sec.o -o Sec.elf
/usr/bin/sh: -Wl,-Map=Sec.map: command not found
make: [Sec.elf] Error 127 (ignored)
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature Sec.elf Sec.hex
avr-objcopy: 'Sec.elf': No such file
make: *** [Sec.hex] Error 1
Build failed with 1 errors and 0 warnings...
Компилю в AVR Studio через GCC компилятор, помогите кто-нибудь, скажите что за проблема!
Atmel с 4.19 версии убрал поддержку сторонних компиляторов типа WINAVR и возможно и стороних GCC. Выпустив свой под названием TOOLCHAIN. Вы можете попробывать откатится на 4.18 - очень не плохая студия со всеми ее добавками. Или хорошенько почистив ком (реестр ) от Вашего GCC учтановить avr-toolchain-installer-3.0.0.240-win32.win32.x86- это его первая версия. В архиве на сайте atmel ( http://www.atmel.com/tools/STUDIOARCHIVE.aspx) есть и постарше. Вообщем-то в инете полно тем по этому поводу , может кто-то и нашёл решение более короткое.
В версиях 5 и возможно 6 ( не проверял) studio можно отключать toolchain и пользоваться своим. Но 5-ка - это мама не горюй , по моему личному мнению.
Кто прогает на С? Помогите, пожалуйста, мне надо в данной программе изменить, чтобы на миллисекунды отводился 1 знак и на минуты 1 знак, а на секунды 2 знака, а здесь на все по 2 знака отводится, и чтобы индикатор был с общим катодом, а не анодом! Очень надо, кто понимает, исправьте пожалуйста!