У меня AVR Studio 5 версии. Вроде все пишут, что версия 4,19 самая лучшая, но у меня она почему то глючила. Так что работаю в "5".
Что неправильно в коде ?
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Пробовал найти "Оптимизацию", и не нашел, в меню "Проект" тоже ничего нет похожего, и нет - >Configuration Options->.
У меня AVR Studio 5 версии. Вроде все пишут, что версия 4,19 самая лучшая, но у меня она почему то глючила. Так что работаю в "5".
У меня AVR Studio 5 версии. Вроде все пишут, что версия 4,19 самая лучшая, но у меня она почему то глючила. Так что работаю в "5".
- Реклама
Погуглил...
https://radiokot.ru/forum/viewtopic.php ... 08#p822808Нужно не в Solution свойства открывать, а именно проекта. Там очень много полезностей.
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
УРА !!!! БОльшое спасибо. Долго искал и наконец нашел где спрятана эта оптимизация. Установил Os, и ЧУДО, вместо бывших 9 килобайт скомпилированный файл занял только 312 байт. СУПЕР. И в Протеусе все работает как нужно.
- Сообщения: 12867
- Зарегистрирован: Сб дек 18, 2021 19:25:32
Хорошо, что получилось. Хотя разница в размере что-то очень уж большая, но, наверное, для Протеуса такое в норме.
Однако, ждём-с, чтобы заработало вне Протеуса
Однако, ждём-с, чтобы заработало вне Протеуса
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Это разница в объеме не "ДЛЯ ПРОТЕУСА", а я смотрел объем фактически откомпилированного файла .HEX. И получается что до оптимизации этот файл бал объемом - более 8 килобайт, а после оптимизации всего 312 байт. Это действительно так.
Теперь о программе которую я поставил целью написать:
А задумка была такая, есть МК, к нему к порту "D" подключен 7-сегментный индикатор. А к порту "В" подключены 3 кнопки, к "В0", к "В1" и к "В2". После запуска программы индикатор ничего не высвечивает, а при нажатии на кнопки высвечивает соответствующие цифры.
Ничего у меня не получалось. А вот покопался, и кое что уже получается. Пока что эмуляция в Протеусе идет и кое что так как было задумано.
Вот исходный текст программы:
Но еще работает не совсем так как нужно.
При эмулировании в Протеусе сразу после запуска выполнения, появляется случайная комбинация сегментов индикатора.
На нажатие кнопок нет реакции, кроме последней 4 кнопки.
После ее нажатия уже выводиться на индикаторе цифра "3", и после этого цуже все начинает работать так как нужно.
Т.е. после нажатия на кнопку "1" загорается цифра "0"
после нажатия на кнопку "2" загорается цифра "1"
после нажатия на кнопку "3" загорается цифра "2"
после нажатия на кнопку "4" загорается цифра "3"
И работает так как нужно, каждая кнопка вызывает свою цифру на индикаторе.
Вот в прилождении подсылаю соответствующий файл Протеуса.
Теперь о программе которую я поставил целью написать:
А задумка была такая, есть МК, к нему к порту "D" подключен 7-сегментный индикатор. А к порту "В" подключены 3 кнопки, к "В0", к "В1" и к "В2". После запуска программы индикатор ничего не высвечивает, а при нажатии на кнопки высвечивает соответствующие цифры.
Ничего у меня не получалось. А вот покопался, и кое что уже получается. Пока что эмуляция в Протеусе идет и кое что так как было задумано.
Вот исходный текст программы:
Код: Выделить всё
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
//---------------------------------------------
void segchar (unsigned char i)
{
switch (i)
{
case 1: PORTD = 0b11111001; break;
case 2: PORTD = 0b10100100; break;
case 3: PORTD = 0b10110000; break;
case 4: PORTD = 0b10011001; break;
case 5: PORTD = 0b10010010; break;
case 6: PORTD = 0b10000010; break;
case 7: PORTD = 0b11111000; break;
case 8: PORTD = 0b10000000; break;
case 9: PORTD = 0b10010000; break;
case 0: PORTD = 0b11000000; break;
}
}
//---------------------------------------------
int main(void)
{
unsigned char i;
//unsigned butcount=0,butstate=0;
DDRD = 0xFF;
DDRB = 0x00;
PORTD = 0b00000000;
PORTB = 0b00000000;
while(1)
{
if (!(PINB&0b00000001))
{
i=0; segchar(i);
}
if (!(PINB&0b00000010))
{
i=1; segchar(i);
}
if (!(PINB&0b00000100))
{
i=2; segchar(i);
}
if (!(PINB&0b00001000))
{
i=3; segchar(i);
}
if (PINB==11111111)
{
i=9; segchar(i);
}
_delay_ms(50);
}
}
При эмулировании в Протеусе сразу после запуска выполнения, появляется случайная комбинация сегментов индикатора.
На нажатие кнопок нет реакции, кроме последней 4 кнопки.
После ее нажатия уже выводиться на индикаторе цифра "3", и после этого цуже все начинает работать так как нужно.
Т.е. после нажатия на кнопку "1" загорается цифра "0"
после нажатия на кнопку "2" загорается цифра "1"
после нажатия на кнопку "3" загорается цифра "2"
после нажатия на кнопку "4" загорается цифра "3"
И работает так как нужно, каждая кнопка вызывает свою цифру на индикаторе.
Вот в прилождении подсылаю соответствующий файл Протеуса.
- Реклама
- Сообщения: 12867
- Зарегистрирован: Сб дек 18, 2021 19:25:32
if (PINB==11111111) забыт признак двоичной системы
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
ВСе уже сделал правильно, заработало так как нужно.
Да существенно что программа написана для Attiny261.
После запуска в Протеусе, 7-сегментный индикатор не светиться, программа ждет реакции на кнопки.
Если нажимать кнопки от "1" до "5" подключенные к ногам А0....А4 порта "А", то на индикатору будут высвечиваться соответствующие цифры - от "0" до "4", в зависимости от того какая кнопка нажата.
Теперь осталось только запрограммировать МК Attiny261 т проверить работу на реальний схеме. Как только это сделаю отпишусь.
Здесь привожу полный текст программы:
Да существенно что программа написана для Attiny261.
После запуска в Протеусе, 7-сегментный индикатор не светиться, программа ждет реакции на кнопки.
Если нажимать кнопки от "1" до "5" подключенные к ногам А0....А4 порта "А", то на индикатору будут высвечиваться соответствующие цифры - от "0" до "4", в зависимости от того какая кнопка нажата.
Теперь осталось только запрограммировать МК Attiny261 т проверить работу на реальний схеме. Как только это сделаю отпишусь.
Здесь привожу полный текст программы:
Код: Выделить всё
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
//---------------------------------------------
void segchar (unsigned char i)
{
switch (i)
{
case 1: PORTB = 0b11111001; break;
case 2: PORTB = 0b10100100; break;
case 3: PORTB = 0b10110000; break;
case 4: PORTB = 0b10011001; break;
case 5: PORTB = 0b10010010; break;
case 6: PORTB = 0b10000010; break;
case 7: PORTB = 0b11111000; break;
case 8: PORTB = 0b10000000; break;
case 9: PORTB = 0b10010000; break;
case 0: PORTB = 0b11000000; break;
}
}
//---------------------------------------------
int main(void)
{
unsigned char i;
DDRB = 0xFF;
DDRA = 0x00;
PORTB = 0b11111111;
PORTA = 0b11111111;
while(1)
{
if (!(PINA&0b00000001))
{
i=0; segchar(i);
}
if (!(PINA&0b00000010))
{
i=1; segchar(i);
}
if (!(PINA&0b00000100))
{
i=2; segchar(i);
}
if (!(PINA&0b00001000))
{
i=3; segchar(i);
}
if (!(PINA&0b00010000))
{
i=4; segchar(i);
}
_delay_ms(5);
}
}
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
И опять облом!!! Не могу залить программу в Attiny261.
Мучаюсь второй день.
Уже пытался пробовать залить простейшую программу мигания светодиода, .... и никак.
ПРобовал используя AvrDUDEPROG.EXE. версии 3.3 Вроде все правильно, программатор обнаружился, порт установлен правильно, чип правильный - Attiny261. При нажатии на "ЧТЕНИЕ" процесс проходит так как нужно и выдает сообщение - ЦКалибровочные ячейки генератора считаны ОК"
Запускаю программирование - программирование идет и посте 10-12 сек. миргания выдает сообщение -
Сброс Lick битов ... ОК
Очистка Flash.....ОК
Программирование Flash ....ОК
Верификация Flash ....ОК
А программа не работает, светодиод не моргает. Хотя в Протеусе программа работает нормально и светодиод моргает.
Что это может быть ????
Мучаюсь второй день.
Уже пытался пробовать залить простейшую программу мигания светодиода, .... и никак.
ПРобовал используя AvrDUDEPROG.EXE. версии 3.3 Вроде все правильно, программатор обнаружился, порт установлен правильно, чип правильный - Attiny261. При нажатии на "ЧТЕНИЕ" процесс проходит так как нужно и выдает сообщение - ЦКалибровочные ячейки генератора считаны ОК"
Запускаю программирование - программирование идет и посте 10-12 сек. миргания выдает сообщение -
Сброс Lick битов ... ОК
Очистка Flash.....ОК
Программирование Flash ....ОК
Верификация Flash ....ОК
А программа не работает, светодиод не моргает. Хотя в Протеусе программа работает нормально и светодиод моргает.
Что это может быть ????
Ничего не знаю о Вашем "железе" и не вижу фото тестовой конструкции, поэтому банально спрашиваю: после программирования есть ли высокий уровень на RESET (напр. резистор 10 kOm к +)?
---
hex для сравнения: AТtiny261 blink на PB3 (pin 4):
---
hex для сравнения: AТtiny261 blink на PB3 (pin 4):
- Вложения
-
- blink_pb3_pin4.zip
- (731 байт) 91 скачивание
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Да, RESET подтянут к "+" через 11ком. !0ком не нашел, я думаю что это не критично. И еще кондексатор 10uF между RESET и землей, прочитал от этом в сатье, что нужно обязательно.
На счет схемы соединений, каюсь, не подумал, постараюсь нарисовать и показать.
Да е еще информация, как то сразу от этом не подумал, что можно ведь провести верификацию заливки, для этого есть средства.
Так что сегодня повторил и провел верификацию, и вот результат:
Поле верификации сообщение - "Верификация Flash....OK!"
И еще ниже информация:
\Debug\test9.hex":a
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Т.е. какая т о ошибка при инициализации, вроде неправильность с подсоединении. Но я сто раз проверял. Буду искать.
Добавлено after 3 hours 15 minutes 49 seconds:
Вот нарисовал подключение контролера к программатору:

[/img]
В процессе рисования обнаружил ошибку в подключении RESET, была подключена к 8 ноге МК(не понимаю как я так сделал), а нужно к 10 ноге.
Перепаял. Снова проделал процесс программирования в AVRDUDEPROG. И ничего не изменилось, сообщение что программирование и проверка прошло ОК. А в нижнем окне все равно вот твкое сообщение:
\Debug\test9.hex":a
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
ПРооверил подключение еще раз - все подключено теперь правильно, но программа не работает.
На счет схемы соединений, каюсь, не подумал, постараюсь нарисовать и показать.
Да е еще информация, как то сразу от этом не подумал, что можно ведь провести верификацию заливки, для этого есть средства.
Так что сегодня повторил и провел верификацию, и вот результат:
Поле верификации сообщение - "Верификация Flash....OK!"
И еще ниже информация:
\Debug\test9.hex":a
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
Т.е. какая т о ошибка при инициализации, вроде неправильность с подсоединении. Но я сто раз проверял. Буду искать.
Добавлено after 3 hours 15 minutes 49 seconds:
Вот нарисовал подключение контролера к программатору:
[/img]
В процессе рисования обнаружил ошибку в подключении RESET, была подключена к 8 ноге МК(не понимаю как я так сделал), а нужно к 10 ноге.
Перепаял. Снова проделал процесс программирования в AVRDUDEPROG. И ничего не изменилось, сообщение что программирование и проверка прошло ОК. А в нижнем окне все равно вот твкое сообщение:
\Debug\test9.hex":a
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude.exe done. Thank you.
ПРооверил подключение еще раз - все подключено теперь правильно, но программа не работает.
Подключите ATtiny261 RESET не к Arduino RESET, а к D10 (Arduino as ISP?), либо отключите его (пусть он будет присоединен резистором к +) и вручную заземлите во время записи.
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Сделал все по рекомендации, вот схемка:

[/img]
Пробовал снова хапрограммировать.
Все та же самая история, все тот же результат и те же сообщения.
[/img]
Пробовал снова хапрограммировать.
Все та же самая история, все тот же результат и те же сообщения.
Дайте фото если можно, будет что-то элементарное: монтаж или что-то там ...
Попробуйте файл blink_pb3_pin4 сообщения вверх, светодиод мигает на pin 4.
Попробуйте файл blink_pb3_pin4 сообщения вверх, светодиод мигает на pin 4.
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Давать фото бесполезно, я сделал все на унниверсальной плате, все припаяно навесным монтажем, по фотографии трудно будет разобраться.
Я вот что сделаю, смонтирую все на макетной плате чтобы все было хорошо видно. Сделаю фото и выставлю.
Но это займет немного времени.
А пока по вашему совету (пару постов выше) я замерил напряжение на "RESET"ю
До программирования было - 4,63В
После програамирования - тоже 4,63В
Сделал кнопку и пробовал программировать наверное раз 15 чтобы вовремя в начале программирования нажать кнопку. Ничего не получилось, все как и прежде, напряжение на "RESET" - 4,63 В.
Сделаю на макетке и пришлю фотку.
Я вот что сделаю, смонтирую все на макетной плате чтобы все было хорошо видно. Сделаю фото и выставлю.
Но это займет немного времени.
А пока по вашему совету (пару постов выше) я замерил напряжение на "RESET"ю
До программирования было - 4,63В
После програамирования - тоже 4,63В
Сделал кнопку и пробовал программировать наверное раз 15 чтобы вовремя в начале программирования нажать кнопку. Ничего не получилось, все как и прежде, напряжение на "RESET" - 4,63 В.
Сделаю на макетке и пришлю фотку.
10 мин назад для себя попробовал именно так и успешно записал для теста ATtiny13a. На бредборде.
Програматор: Arduino, с ArduinoISP. Софт: avrdudess_2.13_portable.
RESET AVR - к D10 Arduino. MCU записывается и читается нормально.
Скриншоты могут быть полезны для Вашего микроконтроллера.
Програматор: Arduino, с ArduinoISP. Софт: avrdudess_2.13_portable.
RESET AVR - к D10 Arduino. MCU записывается и читается нормально.
Скриншоты могут быть полезны для Вашего микроконтроллера.
- Вложения
-
- c3.jpg
- (238.13 КБ) 69 скачиваний
-
- c2.gif
- (17.57 КБ) 65 скачиваний
-
- c1.jpg
- (154.33 КБ) 67 скачиваний
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Вот высылаю как обещал фотку с монтажем на макетной плате. ТОже пробовал прорраммировать с кнопкой и5-6 раз и все то же самое.

[/img]
Спасибо за присылку скриншотов.
Уже скачал вашу версию АВРДУДЕ Портейбл.
Буду пробовать.
Еще раз спасибо за участие.
[/img]
Спасибо за присылку скриншотов.
Уже скачал вашу версию АВРДУДЕ Портейбл.
Буду пробовать.
Еще раз спасибо за участие.
На фото мало что видно из-за низкого разрешения, но думаю что ... микросхема подключили наоборот
- ключ для 1-го пина с другой стороны. Просто вставьте чип наоборот
и если он остался работающий ...
---
внизу: на втором фото - ATtiny261 из интернета - большой круг копуса: на контактах 10-11.
---
внизу: на втором фото - ATtiny261 из интернета - большой круг копуса: на контактах 10-11.
- Вложения
-
- s-l1600.jpg
- (38.52 КБ) 60 скачиваний
-
- 2rbk631t7p_w.jpg
- (220.71 КБ) 68 скачиваний
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37
Уже попробовал запрогреммировать в новом AVRDUDE.
Вроде запрограммировалось. Вот скрин зделал:

[/img]
ПРошу проверить, все ли так как нужно ?
Потому что программа не работает, светодиод не мигает.
Вроде запрограммировалось. Вот скрин зделал:
[/img]
ПРошу проверить, все ли так как нужно ?
Потому что программа не работает, светодиод не мигает.
- корпус был наоборот? (см. предыдущее сообщение)
- добавьте скорость передачи Baud rate: 19200
- попробуйте найти автоматически mcu: Detect
- попробуйте прочитать фюзы: Fuses & lock bits Read
- если с чтением все в порядке, fuses в порядке (были прочитаны), то можно попробовать записать hex.
- добавьте скорость передачи Baud rate: 19200
- попробуйте найти автоматически mcu: Detect
- попробуйте прочитать фюзы: Fuses & lock bits Read
- если с чтением все в порядке, fuses в порядке (были прочитаны), то можно попробовать записать hex.
Последний раз редактировалось veso74 Пн мар 28, 2022 11:37:34, всего редактировалось 1 раз.
- Сообщения: 27
- Зарегистрирован: Ср мар 23, 2022 01:17:37


