Ратмир писал(а):Светодиод вообще не мигает, а на оциле такая воть хрень при 0,05V/дел без нагрузки, не работает прога.
Зато нулевая нога порта дергается почему-то (пока что переключите светодиод на PORTD.0 - увидите мигание). Жаль, у меня сейчас времени нет разбираться, только ночью засяду. =)
SubDia писал(а):
Зато нулевая нога порта дергается почему-то (пока что переключите светодиод на PORTD.0 - увидите мигание). Жаль, у меня сейчас времени нет разбираться, только ночью засяду. =)
сделал как вы сказали все ОК!!! Вот это мозг!
А теперь поменяйте в двух строках управления портом "PORTD.1" на "1", и у Вас замигает и первый вывод - PORTD.1 (или на "2", и будет дергаться второй). В общем, использование имени ноги порта не прокатывает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего ) MrYuran: Самые ортодоксальные — это PICудеи ) Katz: Не, 51-ники. )
Ратмир писал(а):Изменил порт ни хрена только на PD0 мигает
Дык я же говорил писать не "_BV(PORTD.1)", а "_BV(1)". Вы не то написали.
Получается так: командой "PORTD |= _BV(1)" мы накладываем маску 0b00000010 на порт (а там у нас 0). В итоге на PORTD.1 появляется высокий уровень. Дальше мы выполняем команду побитного И значения PORTD (в данный момент 0b00000010) с инвертированным значением маски (а это - число 0b11111101). В результате этой операции у нас получится так, что там, где были в маске нули, в значении PORTD биты обнулятся независимо от того, какие числа там стояли (а все прочее останется неизменным). В итоге второй бит PORTD обнулится в соответствии с накладываемой маской.
Этот вариант работает.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего ) MrYuran: Самые ортодоксальные — это PICудеи ) Katz: Не, 51-ники. )
Ратмир писал(а):Изменил порт ни хрена только на PD0 мигает
Дык я же говорил писать не "_BV(PORTD.1)", а "_BV(1)". Вы не то написали.
Получается так: командой "PORTD |= _BV(1)" мы накладываем маску 0b00000010 на порт (а там у нас 0). В итоге на PORTD.1 появляется высокий уровень. Дальше мы выполняем команду побитного И значения PORTD (в данный момент 0b00000010) с инвертированным значением маски (а это - число 0b11111101). В результате этой операции у нас получится так, что там, где были в маске нули, в значении PORTD биты обнулятся независимо от того, какие числа там стояли (а все прочее останется неизменным). В итоге второй бит PORTD обнулится в соответствии с накладываемой маской.
Этот вариант работает.
Все порядок, все работает. Теперь поиграюсь с портами
"Мы так жить будем, что наши внуки нам завидовать будут" В.С. Черномырдин
На хрен (извиняюсь) Вам её переделывать?
CvAVR имеет генератор начального кода, воспользуйтесь им. Генерит нормальный код, который не нужно переделывать.
Здравствуйте снова Товарищи судари...
постала предо мной непостижимая задача...
пишу свой ваттметр...катастрофически не хватает памяти...
много текстов и менюшек..а мега 8
так вот....много текста я уже вынес из флеши в еепрому...
но есть ещё туева хуча конструкций типа
Если катастрофически не хватает памяти, то в первую очередь нужно отказаться от printf.
При том, что я сам его люблю и при первой же возможности прикручиваю...
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
clawham писал(а):пишу свой ваттметр...катастрофически не хватает памяти...
много текстов и менюшек..а мега 8
Я предвидел это .... И изначально взял Mega16.
Ненамного дороже, зато теперь нет проблем ни с printf, ни с плавающей точкой (ну люблю я её ), ни с какой-то лишней периферией, если понадобится.
Зато теперь и кнопки, и индикатор, и режим калибровки и плавающая точка. И флэшки ещё 40% свободно - пиши что хочешь.
А с 8 мегой одни проблемы - то памяти мало, то ног не хватает. Кварц не поставишь, ибо он от порта B ноги отбирает и т.п.
Доп. EEPROM тоже надо куда-то подключать и писать код для работы с ним.
Мой совет - возьмите контроллер покруче и не мучайтесь.