Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
1

Не работает по программе atmega8-16pu

21.07.2020, 23:22. Просмотров 344. Ответов 15

Добрый день.

Столкнулся с проблемой работы программы на Си после записи в микроконтроллер atmega8-16pu.
Программа точно рабочая (взял из источники, и не одну уже проверял)
Читается чип, хорошо работает с flash памятью, но после успешной записи программа не работает.

Искал на форумах, ничего подобного не нашёл и создал тему.

Собирал программу в Atmel Studio 7
Записывать программу пытался с avrdude, atmel studio, khazama

Прикрепляю фото сборки, фото отладочного и код самой программы (источник https://ph0en1x.net)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#define F_CPU 1000000UL  // укажем компилятору частоту ЦПУ
#include <avr/io.h>      // Подключим файл io.h
#include <util/delay.h>  // Подключим файл delay.h
 
int main(void) {                // начало программы
    // -- установим параметры --
    int delay_ms_1 = 100;        // задержка для светодиода
    int delay_ms_2 = 300;        // задержка между светодиодами
    
    // -- настроим пины порта --
    DDRD |= (1 << PD0);          // пин PD0 порта DDRD на вывод
    DDRD |= (1 << PD1);          // пин PD1 порта DDRD на вывод
    
    // -- основной цикл программы --
    while (1) {                  // реализация бесконечного цикла
        PORTD |= (1 << PD0);     // на пине PD0 высокий уровень
        _delay_ms(delay_ms_1);   // задержка по времени 1
        PORTD &= ~(1 << PD0);    // на пине PD0 низкий уровень
        _delay_ms(delay_ms_1);
        PORTD |= (1 << PD0);
        _delay_ms(delay_ms_1);
        PORTD &= ~(1 << PD0);
        
        _delay_ms(delay_ms_2);   // задержка по времени 2
        
        PORTD |= (1 << PD1);     // на пине PD1 высокий уровень
        _delay_ms(delay_ms_1);   // задержка по времени 1
        PORTD &= ~(1 << PD1);    // на пине PD1 низкий уровень
        _delay_ms(delay_ms_1);
        PORTD |= (1 << PD1);
        _delay_ms(delay_ms_1);
        PORTD &= ~(1 << PD1);
    }
}
0
Миниатюры
Не работает по программе atmega8-16pu   Не работает по программе atmega8-16pu  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2020, 23:22
Ответы с готовыми решениями:

Отличия Atmega8A-PU - Atmega8-16PU
Atmega8A-PU и Atmega8-16PU Чем отличаются данные МК? Какие ещё есть разновидности Atmega8 в...

Не прошивается atmega8-16pu через usbasp.
Пытаюсь прошить atmega8-16pu через китайский usbasp. Светодиод на программаторе загорается при...

Принцип работы микроконтроллера Atmega8-16PU с радиомодулем
Доброе время суток всем). Решился я свинтить машину на р/у. Машина должна уметь 1) Ездить...

Не работает в железе (работает в Proteus, ATmega8, ASM)
Прошивка работает в протеусе (V 7.7 SP 2), но не работает в железе. На счет фьюзов не совсем уверен...

15
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
22.07.2020, 07:35 2
Про фьюзы не забыли?
1
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
22.07.2020, 11:05  [ТС] 3
Спасибо за отклик.
Из 5 микроконтроллеров у меня читалась сигнатура у 2..

Позже я подумал, а что если мне прислали с нерабочими фьюзами (я не менял на протяжении всех попыток), я зашёл в avrdudeprog выбрал нужный микроконтроллер и во вкладке fuses кликнул "по умолчанию", после чего выставились нужные* (наверное) флаги, и я нажал "программировать", после чего на именно этом микроконтроллере перестала читаться сигнатура((

Прилаживаю скрин с настройками фьюзов
0
Миниатюры
Не работает по программе atmega8-16pu  
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
22.07.2020, 11:25 4
Фьюзы заводские, в полном порядке. Частоту программирования не пробовали дергать?
1
Модератор
8201 / 6071 / 811
Регистрация: 14.02.2011
Сообщений: 21,062
22.07.2020, 11:49 5
Echkaa, давно не работал с AVR но помню что у разных программаторов разная логика с работами фьюзов
фьюзы по умолчанию равны 1(стерты), так вот у одних галочка означает записать, сиречь равно 0
у других галочка означает фьюз равен 1, т.е не записывать
вот фьюза CKSEL3, CKSEL2,CKSEL1,CKSEL0 SUT1, SUT0 задают от чего будет тактироваться камень
если они равны 1110 01 то это внешний кварц
а если 0001 10 то внутренний RC генератор
взято отсюда https://radioaktiv.ru/avr_fuse... rt=ATmega8

Добавлено через 1 минуту
Цитата Сообщение от Echkaa Посмотреть сообщение
я зашёл в avrdudeprog выбрал нужный микроконтроллер и во вкладке fuses кликнул "по умолчанию", после чего выставились нужные* (наверное) флаги,
Я обычно считывал установленные фьюзы, при необходимости редактировал и записывал
1
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
22.07.2020, 12:29  [ТС] 6
Частоту пробовал внутри программы менять на 1000000UL и 8000000UL.
Но частоты это именно в данном примере, я пробовал и без задержек просто поиграть с пинами (хотя бы программно включить, но без толку).

Даже если в тупую в теле main() включить порт на вывод и включить его, тоже не работает.

Насчёт того что фьюзы могут инвертироваться в зависимости от программатора.
Да, может быть, но это не решает первоначальную проблему, я же взялся поиграться с фьюзами уже когда не работало по программе.
Могу второй прошить с инвертироваными фьюзами..

Заказал ещё одну мини партию МК))

(умом не понять, не вышло заказал ещё...)
(хотя может логично было бы сменить микроконтроллер...)
0
Модератор
8201 / 6071 / 811
Регистрация: 14.02.2011
Сообщений: 21,062
22.07.2020, 12:34 7
Цитата Сообщение от Echkaa Посмотреть сообщение
Могу второй прошить с инвертироваными фьюзами..
для начала напаяй кварц мегагерц так на 8
если будет читаться, значит дело в фьюзах
1
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
22.07.2020, 14:29  [ТС] 8
Я думаю что проблема во фьюзах..

Были фьюзы как на фото Screenshot_2.png

Потом я сделал фьюзы как в одном из увиденных в видео


для atmega8, вышло как на фото Screenshot_3.png

После записи МК не читается(

Заказал Atmega328 надеюсь это решит проблему
0
Миниатюры
Не работает по программе atmega8-16pu   Не работает по программе atmega8-16pu  
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
23.07.2020, 11:30 9
Галка в USBASP_AVRDUDE_PROG означает прошитый фьюз. И первый ваш скриншот показывает, что тактирование микроконтроллера от внутреннего генератора. Никакого внешнего генератора или кварца не надо.
Я имел ввиду частоту тактирования самого программатора, а не программы. Программа при прошивке совершенно ни при чём.
1
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
23.07.2020, 21:11  [ТС] 10
Спасибо всем за ответы.

Хорошо, буду знать "Галка в USBASP_AVRDUDE_PROG означает прошитый фьюз."

Контроллеры я успешно убил, завтра будут atmega328, надеюсь проблема уйдёт
0
2514 / 1559 / 335
Регистрация: 09.09.2017
Сообщений: 6,301
24.07.2020, 00:14 11
Цитата Сообщение от Echkaa Посмотреть сообщение
Хорошо, буду знать "Галка в USBASP_AVRDUDE_PROG означает прошитый фьюз."
лучше ориентируйтесь на бит SPIen. Если программатор сумел подключиться по SPI, то этот бит включен. Вот и смотрите, какое состояние соответствует включенному биту.
Еще хороший бит RSTdisable - он должен быть выключен, но он есть не во всех контроллерах.
Цитата Сообщение от Echkaa Посмотреть сообщение
Контроллеры я успешно убил,
Ничего страшного, когда освоитесь с фьюзами, сможете собрать fusebit doctor и с его помощью оживить коматозников.
1
901 / 541 / 81
Регистрация: 15.05.2012
Сообщений: 3,168
24.07.2020, 11:26 12
Цитата Сообщение от Echkaa Посмотреть сообщение
убил
Совсем не факт.
1
57 / 49 / 17
Регистрация: 18.07.2017
Сообщений: 357
24.07.2020, 13:57 13
Цитата Сообщение от Echkaa Посмотреть сообщение
программа не работает
У выводов контроллера банально может не хватать мощей для питания светодиода. Можешь мультиметром посмотреть уровень напряжения на ноге, либо подключить светодиод через резистор с транзистором, а транзистором управлять с ноги мк
1
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
24.07.2020, 14:04  [ТС] 14
Проблема решена.

И она заключалась в моей неграмотности.

На самом деле нужно было просто поперебирать скорости записи usbasp..

И на скорости 2 KHz всё отлично записалось.

Может кому будет полезно. С этой скоростью и Atmega8 и Atmega328 успешно записались
0
404 / 192 / 40
Регистрация: 21.09.2008
Сообщений: 661
26.07.2020, 06:42 15
Echkaa, а какая скорость была выбрана первоначально?
Я "шью" МК на частоте 32 кГц, всё-таки 2 кГц весьма малая величина и даже 8 кБ будут литься долго.
Попробуйте оболочку averdudess со встроенным averdude.
0
0 / 0 / 0
Регистрация: 26.04.2020
Сообщений: 9
28.07.2020, 21:31  [ТС] 16
Добрый вечер.

Я уже точно не могу сказать какая была в начале, только начинал, внимание именно на это не обратил.

Пробовал на авто тоже, не работало.

Я думаю со временем буду играться, в данный момент мне интересные какие-то отдельные функции..
А когда буду собирать полноценную программу, то обязательно поиграюсь с этим параметром.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2020, 21:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Atmega8 не работает Timer1
Не могу понять в чем проблема, Timer0 запустил и работает, а первый вообще не работает. Не могу...

Не работает SPI на ATMEGA8
Имеется код: #define ClearBit(reg, bit) reg &amp;= (~(1&lt;&lt;(bit))) //пример: ClearBit(PORTB,...

ATmega8 + DS18B20. Не работает
Мужики, помогите пожалуйста разобраться с термометром ничего в голову уже не лезет. Буду благодарен...

Не работает ШИМ МК AtMega8
Делаю импульсный блок питания 30В, 5А. Пишу не сложную прошивку для МК AtMega 8, в протеусе все...

ATmega8 странно работает процедура задержки.
Здравствуйте, уважаемые. Подскажите, пожалуйста, начинающему. Вообщем, такая ситуация: ATmega8 +...

Не работает внешнее прерывание в ATMega8 (CodeVisionAVR 3.10)
Среда CodeVisionAVR 3.10, вот код #include &lt;mega8.h&gt; interrupt void ext_int0_isr(void) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.