Установил AS7 при отладке программы в окне I\O не понятно почему регистр PIN не меняет свое состояние в соответствии с регистром PORT....порт настроен на вход, т.е. DDR выставлен в 0....так и должно быть или нужно что-то настроить?
AVR studio в вопросах и ответах
Здравствуйте!!
Установил AS7 при отладке программы в окне I\O не понятно почему регистр PIN не меняет свое состояние в соответствии с регистром PORT....порт настроен на вход, т.е. DDR выставлен в 0....так и должно быть или нужно что-то настроить?
Установил AS7 при отладке программы в окне I\O не понятно почему регистр PIN не меняет свое состояние в соответствии с регистром PORT....порт настроен на вход, т.е. DDR выставлен в 0....так и должно быть или нужно что-то настроить?
- Реклама
что за предупреждение????
я только начал изучать, прошу терпения...
Warning control reaches end of non-void function [-Wreturn-type]
#include <AVR/io.h>
#include <stdint.h>
unsigned char i=0;
int nastroika(void)
{
DDRA=0x00;
PORTA=0xFF;
DDRB=0xFF;
PORTB=0x00;
}
int var()
{
if ((PINA&(1<<0))==0)
{
i=1;
}
if ((PINA&(1<<1))==0)
{
i=2;
}
}
int main(void)
{
nastroika();
while (1)
{
var();
PORTB=i;
}
}
я только начал изучать, прошу терпения...
Warning control reaches end of non-void function [-Wreturn-type]
#include <AVR/io.h>
#include <stdint.h>
unsigned char i=0;
int nastroika(void)
{
DDRA=0x00;
PORTA=0xFF;
DDRB=0xFF;
PORTB=0x00;
}
int var()
{
if ((PINA&(1<<0))==0)
{
i=1;
}
if ((PINA&(1<<1))==0)
{
i=2;
}
}
int main(void)
{
nastroika();
while (1)
{
var();
PORTB=i;
}
}
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
Любая функция у которой тип возвращаемых данных отличен от void должна завершаться return
Это Си
Это Си
Приветствую уважаемые радиокоты! В программировании только начинаю, поэтому не судите строго) Собрал первый программатор (самый простой, тот что Громова) Приобрел AVR-микроконтроллер по имени ATMEGA 8А. Прошить удалось (вроде бы
) двумя пробными прошивками, но подскажите пожалуйста:
1) Как проверить на практике то, что я прошил? Что должно быть и на каких выводах МК?
2) как самому написать (или исправить уже имеющуюся) прошивку таким образом, чтобы на выводах микросхемы были сигналы допустим по 1 секунде длительностью , и по 1 секунде скважностью, которые идут например друг за другом...
3) Какие выводы МК из всех, что в датащите вообще подлежат программированию?
4) В датащите на данный МК выводы показаны разноцветными цветами. Что обозначают этими цветами?
=================
Прошивки прилагаю:
1) Как проверить на практике то, что я прошил? Что должно быть и на каких выводах МК?
2) как самому написать (или исправить уже имеющуюся) прошивку таким образом, чтобы на выводах микросхемы были сигналы допустим по 1 секунде длительностью , и по 1 секунде скважностью, которые идут например друг за другом...
3) Какие выводы МК из всех, что в датащите вообще подлежат программированию?
4) В датащите на данный МК выводы показаны разноцветными цветами. Что обозначают этими цветами?
=================
Прошивки прилагаю:
- Вложения
-
- 022M48.hex
- (398 байт) 338 скачиваний
-
- add.hex
- (125 байт) 320 скачиваний
- Реклама
1. Лучше бы даташит с раноцветными выводами выложили и где вы такой нашли....
2. А также, его можно было почитать чуток, там же написано, какие выводы "поддаются программированию".
3. Без дизассемблирования вы ХЕКС файл никак не подправите (сюда же относят и знания самого ассемблера).
4. Проверить записанное в МК можно просто прочитав тем же программатором и сравнив его ХЕКС с оригиналом.
5. И вообще, начните с обучалки и будет вам счастье!
З.Ы. Прошивки ваши практически бесполезны. Никто даже смотреть не будет. Это не исходник.
2. А также, его можно было почитать чуток, там же написано, какие выводы "поддаются программированию".
3. Без дизассемблирования вы ХЕКС файл никак не подправите (сюда же относят и знания самого ассемблера).
4. Проверить записанное в МК можно просто прочитав тем же программатором и сравнив его ХЕКС с оригиналом.
5. И вообще, начните с обучалки и будет вам счастье!
З.Ы. Прошивки ваши практически бесполезны. Никто даже смотреть не будет. Это не исходник.
Станислав
Э не, это так не работает.
Что должно быть на выводах работающего контроллера зависит ИСКЛЮЧИТЕЛЬНО от прошивки(и битов конфигурации контроллера - он может тупо не заработать из-за неверной установки источника тактовых импульсов) которую в него залили. На этот вопрос ответить может только автор прошивки, если не заниматься реверсингом прошивки(дело это крайне хлопотное, гораздо затратнее чем написать с нуля по поставленному Т.З.).
В даташите на МК нет разноцветных выводов, ты скачал не оригинальный даташит а по всей видимости какой-то переработанный для удобства кому-то, вот у него и спрашивай. Но в качестве предположения - цветами определяется группы выводов по функциональному назначению - например питания, сброса, универсальных, входы АЦП и т.д.
Лучше скачай оригинальный даташит, но он правда на английском. На контроллер ATMEGA8A даташит идёт одним файлом и полностью исчерпывающий, надо только тщательно его изучить вдоль и поперёк. Прочитав даташит ты узнаешь что и как можно делать буквально с каждым выводом, но с наскоку это не получится. Сначала, бывает очень трудно понять зачем контроллеру две пары выводов питания, и почему обязательно их подключать но это обусловлено техническими ограничениями. Не все доступные выводы можно использовать одинаково эффективно, читай даташит и ужасайся - в реальных схемах практически не получается использовать ни один порт контроллера полностью на все 8 бит, в этом отношении он не из самых удобных.
Да, и имей в виду что MEGA8 и практически всё семейство контроллеров(с индексами 8A 8P 8PA - это несколько разные модификации контроллеров не совместимые на уровне прошивок но совместимые на уровне ассемблера и ЯВУ и небольшими ньюансами в реализации некоторых функций) это весьма простые для понимания контроллеры. Простые как валенок, по сравнению с другими современными контроллерами.
Что должно быть на выводах работающего контроллера зависит ИСКЛЮЧИТЕЛЬНО от прошивки(и битов конфигурации контроллера - он может тупо не заработать из-за неверной установки источника тактовых импульсов) которую в него залили. На этот вопрос ответить может только автор прошивки, если не заниматься реверсингом прошивки(дело это крайне хлопотное, гораздо затратнее чем написать с нуля по поставленному Т.З.).
В даташите на МК нет разноцветных выводов, ты скачал не оригинальный даташит а по всей видимости какой-то переработанный для удобства кому-то, вот у него и спрашивай. Но в качестве предположения - цветами определяется группы выводов по функциональному назначению - например питания, сброса, универсальных, входы АЦП и т.д.
Лучше скачай оригинальный даташит, но он правда на английском. На контроллер ATMEGA8A даташит идёт одним файлом и полностью исчерпывающий, надо только тщательно его изучить вдоль и поперёк. Прочитав даташит ты узнаешь что и как можно делать буквально с каждым выводом, но с наскоку это не получится. Сначала, бывает очень трудно понять зачем контроллеру две пары выводов питания, и почему обязательно их подключать но это обусловлено техническими ограничениями. Не все доступные выводы можно использовать одинаково эффективно, читай даташит и ужасайся - в реальных схемах практически не получается использовать ни один порт контроллера полностью на все 8 бит, в этом отношении он не из самых удобных.
Да, и имей в виду что MEGA8 и практически всё семейство контроллеров(с индексами 8A 8P 8PA - это несколько разные модификации контроллеров не совместимые на уровне прошивок но совместимые на уровне ассемблера и ЯВУ и небольшими ньюансами в реализации некоторых функций) это весьма простые для понимания контроллеры. Простые как валенок, по сравнению с другими современными контроллерами.
Это все равно, что сказать "длиной в 1 килограмм" . Не употребляй слов, значения которых не знаешь. Скважность - отношение периода к длительности импульса, безразмерная величина.Олегыч1 писал(а): по 1 секунде скважностью
Прошу прощения, видимо не так понял значение слова скважность. В моем понимании это "пробелы" между импульсами. У них соответственно тоже есть временная длинна (ну это я так подумалЭто все равно, что сказать "длиной в 1 килограмм"
А здесь тот самый датащит на мою атмегу. http://www.atmel.com/images/atmel-8159- ... asheet.pdf
Еще вопрос назрел. Ассэмблер говорят довольно не простой язык программирования для новичка. Я собирался С++ попробовать в освоении для написания несложных прошивок.
1) С помощью этого языка можно исправлять НЕХ -файлы?
2) И, если не затруднит, подскажите пожалуйста, сколько независимых друг от друга светодиодов можно повесить на данную атмегу?
все выводы, которые с буквой Р, вы можете сделать как входом, так и выходом.
Светодиодов можно повесить хоть 1000 штук и больше, главное, знать как вешать и что вам от них нужно еще.
Станислав
1. С помощью никакого языка нельзя мсправлять НЕХ-файлы. Точнее, их можно исправлять в обычном Блокноте, но для этого квалификация программера должна быть очень выше среднего, до чего еще очень далекооооо. А так - для взлома чужого хексика ( если бы свой, то был бы исходник ) нужно сделать декомпиляцию, и уж в полученный псевдо-исходник вносить правки, потом компилировать заново. Язык - чтобы попробовать и убедиться, что это - не твое, можно начать (и кончить
Си), а если зацепит блажь серьезно заниматься МК-ми, ассемблер знать крайне желательно, т.к. владение ассемблером предполагает детальное знакомство с "нутром" МК.
2. Столько, сколько есть выходов в МК. Если надо больше, число выходов можно увеличить до любого разумного предела путем подключения внешних регистров.
А вообще очень чувствуется, что автор не заходил сюда : http://radiokot.ru/start/mcu_fpga/avr/ . А зря. Там много разумного, доброго, вечного, как говорил Некрасов.
--------------------------------------------
Не стоит благодарности, достаточно тискануть +
2. Столько, сколько есть выходов в МК. Если надо больше, число выходов можно увеличить до любого разумного предела путем подключения внешних регистров.
А вообще очень чувствуется, что автор не заходил сюда : http://radiokot.ru/start/mcu_fpga/avr/ . А зря. Там много разумного, доброго, вечного, как говорил Некрасов.
--------------------------------------------
Не стоит благодарности, достаточно тискануть +
Есть еще Чарли мультиплексинг, кроме них.Jack_A писал(а):путем подключения внешних регистров.
Да, и на Си++ оооооочень мало кто конкретно программирует МК. Обычно Си и Ассемблер. Остальное от лукавого.
Станислав
Однако, ATMEL переформатировала всю документацию?
На С++ много под этот контроллер не напишешь - сразу же упрёшься в маленький объём памяти, ему для комфорта подавай ATMEGA328.
Начинать надо однозначно с ассемблера, иначе все остальные языки будут просто магией. Ну или если совсем не хочешь заморачиваться, начинай с ардуины.
На С++ много под этот контроллер не напишешь - сразу же упрёшься в маленький объём памяти, ему для комфорта подавай ATMEGA328.
Начинать надо однозначно с ассемблера, иначе все остальные языки будут просто магией. Ну или если совсем не хочешь заморачиваться, начинай с ардуины.
Jack_A благодарю за полезную ссылку. Буду вникать глубже, дабы не задавать глупых вопросов).
Теперь буду знать, что СИ и СИ++ это не одно и тоже)
Теперь буду знать, что СИ и СИ++ это не одно и тоже)
так вот в чем дело значит ща проверим)))спасибо!axillent писал(а):Любая функция у которой тип возвращаемых данных отличен от void должна завершаться return
Это Си
Я с этим методом знаком только понаслышке, но сомневаюсь, что все возможные независимые комбинации зажигания диодов могут быть реализованы. А про СИ++ я не говорил, я на нем даже для ПК не пишуСКАЗОЧНИК писал(а): Есть еще Чарли мультиплексинг, кроме них.
Конечно не все комбинации. Максимум можно зажечь половину всех светодиодов, если их переключать то можно зажечь все светодиоды, но уже со скважностью равной 2 - гораздо лучше чем при динамической индикации. Но код который будет управлять этим делом усложнится неймоверно и... возникает простое желание использовать для этих целей регистры висящие на SPI. Код получается простой, поддержка внешних регистров - аппаратная...
Да, я так и делал. Динамическая индикация через Чарлиплексинг. 12 светодиодов, которые вращаются вокруг центра, в нужный момент включаются. Эта хреновина даже буквы писала. Вот такой своеобразный телевизер.
И заняли они у меня всего 4 вывода на МК.
Станислав
Подскажите пожалуйста еще один момент. На примере атмега 8. Мне необходимо, чтобы после отпускания кнопки лампочки еще выполнили определенную команду. Получается, AVR должен быть все время запитан? Сколько он будет потреблять, когда никакая команда не выполняется ( то есть в покое). И можно ли этот момент как-то обойти, чтобы потребление тока было равно нулю в состоянии покоя?
А "лампочки" святым духом питаться будут? В даташите есть ответ на этот вопрос. Чем выше рабочая частота тем больше потребляет, и если б это было не так то современные ноуты работали бы от батарей месяцами.



