реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Непонятки со 128 мегой
Сергей Борщ
сообщение Jan 28 2011, 10:05
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 11:48) *
Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам
Скорее вы неправильно понимаете то, что применяете. Выражение 1<<x дает единицу в бите x. Выражение !(1<<x) дает ноль, просто ноль. Делая Y &= !(1<<x) вы сбрасываете в 0 все биты Y вне зависимости от значения x. Выражение ~(1<<x) дает все биты в 1 кроме бита x, который будет равен нулю. Что даст Y= ~(1<<x) - "идем изучать двоичную логику и срр".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 10:17
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(XVR @ Jan 28 2011, 13:01) *
А вы в курсе, что произойдет, когда завершится main()?
Интересно: что по Вашему мнению произойдёт? Во всех известных мне трансляторов с языка Си: после выхода из main выполняется бесконечный цикл. Т.е. если нет необходимости выполнять некие действия в бесконечном цикле (цикл - пустой, что практически бывает исключительно редко), то и ничего катастрофического не происходит при выходе из main...


Цитата(AlexTech @ Jan 28 2011, 13:05) *
Да вроде все проверил 10к раз ((
Проверьте правильность установки fuse; замерьте напряжение, потребляемый ток (сравните с расчетным)...
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 10:18
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(XVR @ Jan 28 2011, 13:01) *
Разницу между операциями '!' и '~' представляете?
Делая Y &= !(1<<x) вы сбрасываете в 0 все биты Y вне зависимости от значения x

Понимаю, именно поэтому написано не != а &= !_BV
В конце концов он делает именно то что нужно - ВЫКЛЮЧАЕТ, а все биты или нет не важно, ибо больше ничего полезного на этом порту не висит
Лан, с этим проехали, я попробовал так как "положено" делать, ничего не изменилось

Цитата(XVR @ Jan 28 2011, 13:01) *
А вы в курсе, что произойдет, когда завершится main()?

Нет, не в курсе, с МК я действительно не очень близок, но выше уже писал, что если есть while(1) то перезапуск при любом вызове изнутри него

Цитата(XVR @ Jan 28 2011, 13:01) *
Не тех, кто задает вопросы, а тех, кто игнорирует ответы с указаниями на банальнейшие и очевидные ошибки с аргументацией - 'всегда так пишу и у меня всегда это работает'.

Я попробовал ваши советы, прежде чем отрицать, положительного результата нет к сожалению

Цитата(XVR @ Jan 28 2011, 13:01) *
И это сильно подрывает веру в заявления типа 'Я свободно пишу на c++, c#, delphi, sh, perl и php' (а в совокупности с фразой 'Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам,' применительно к разнице между '!' и '~' вообще вызывает сомнения в профпригодности это написавшего как программиста, если он конечно не Индус и пишет не на Java)

А я и не говорил что я профессиональный программист, я вообще нач.тех. отдела и работаю в основном с людьми и с бумажками, но пишу на каждом из этих языков уже лет 7 как минимум, но это тоже в общем не решает проблему (((
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2011, 10:56
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (AlexTech @ Jan 28 2011, 13:18) *
но пишу на каждом из этих языков уже лет 7 как минимум, но это тоже в общем не решает проблему (((

Вы тогда видимо еще и "свободно пишите" на нескольких десятках языков народов мира, только это "не решает проблему" того, что Вас никто при этом не понимает sm.gif sad.gif. Придется Вам начинать с азов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 11:14
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(zltigo @ Jan 28 2011, 13:56) *
Вы тогда видимо еще и "свободно пишите" на нескольких десятках языков народов мира, только это "не решает проблему" того, что Вас никто при этом не понимает sm.gif sad.gif. Придется Вам начинать с азов.

Еще один учитель выискался, дорогуша, персонально для вас повторяю, я попробовал все те варианты и советы которые мне уже дали на форуме.
Проблема осталась. Лично ваши глубокомысленные каменты можете оставить при себе, а в топик только по существу пожалуйста.
У меня все в порядке с головой и с программирование, я не хочу выпендриваться, но это я первый человек в снг и второй в мире который в 2000 лохматом году хакнул все ресурсные файлы от HMM IV и дал возможность писать моды.

Конструктив пожалуйста, куда ткнуть, что замерить, какой код для теста попробовать.

Сообщение отредактировал AlexTech - Jan 28 2011, 11:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2011, 11:34
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (AlexTech @ Jan 28 2011, 14:14) *
куда ткнуть, что замерить, какой ...

Без наличия головы на плечах даже "первому человеку в снг" не поможет sad.gif. Тут думать И ХОТЬ ЧЕГО-ТО ЗНАТЬ надо, а не бездумно битики подбирать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 11:36
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 14:14) *
Конструктив пожалуйста, куда ткнуть, что замерить, какой код для теста попробовать.
Ну, так вроде, - "мяч на вашей стороне". Или предлагаете заняться телепатией? Попробую "протелепатировать": напряжение на AVCC не забыли подвести?
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 11:39
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Палыч @ Jan 28 2011, 13:17) *
Интересно: что по Вашему мнению произойдёт?
Неизвестно что. Целиком зависит от примененного компилятора и библиотек (точнее от стартапа). Стандарта на это нет, так что и полагаться на это нельзя.
Цитата
Во всех известных мне трансляторов с языка Си: после выхода из main выполняется бесконечный цикл.
Бывают и другие. Могут зациклить main, могут сбросить процессор, могут позвать какой нибудь trap. Вот прямо сейчас смотрю на newlib для ARM - зовет Angel монитор (аппаратный), или выполняет swi (Software Interrupt)


Цитата(AlexTech @ Jan 27 2011, 21:43) *
Мега 128 16MOU, между ногами РА2(AD2) и PA3(AD3) и минусом подключены светодиоды,
делаю так:
DDRA |= _BV(PA2);
PORTA |= _BV(PA2);
зажигается один светодиод, потом в течении секунд примерно 15 плавно разгорается второй, сбросом и выключением питания не лечится - горят оба.
А что стоит в 3м бите DDRA ? Он случайно не на ввод запрограммирован?

Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 11:53
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(zltigo @ Jan 28 2011, 14:34) *
Без наличия головы на плечах даже "первому человеку в снг" не поможет sad.gif. Тут думать И ХОТЬ ЧЕГО-ТО ЗНАТЬ надо, а не бездумно битики подбирать.

Я пытаюсь, читаю и спрашиваю совета(кстати)

Цитата(Палыч @ Jan 28 2011, 14:36) *
Ну, так вроде, - "мяч на вашей стороне". Или предлагаете заняться телепатией? Попробую "протелепатировать": напряжение на AVCC не забыли подвести?

Не забыл )) и AREF через конденсатор не забыл на минус посадить

Цитата(XVR @ Jan 28 2011, 14:39) *
А что стоит в 3м бите DDRA ? Он случайно не на ввод запрограммирован?

Ну во всяком случае я его не программировал, вот весь код который сейчас есть, ну куда проще то ((
Соответственно три состояния:
1. while(1) нету - лед мигает, видимо перезапуск main()
2. while(1) есть, но пустой, лед гаснет, все ок
3. while(1) есть, но в нем вызавается любая процедура - лед мигает, перезапуск или МК или main()

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRA |= _BV(PA2);

_delay_ms(2000);
PORTA |= _BV(PA2);
_delay_ms(2000);
PORTA &= ~_BV(PA2); поставил тильду как сказали
//while(1){ asm volatile ("NOP" :sm.gif; }
return 0;
}
В случае когда разгорается второй лед он еще проще, выключение выкинуто

Сообщение отредактировал AlexTech - Jan 28 2011, 11:58
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 12:11
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Состояние fuse М103С ?
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 12:19
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Фьюзы только вечером проверю, я сечас на работе )
Но мне кажется что такой простой код должен выполняться правильно независимо от этого фьюза

Сообщение отредактировал AlexTech - Jan 28 2011, 12:30
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2011, 12:31
Сообщение #27


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 13:53) *
1. while(1) нету - лед мигает, видимо перезапуск main()
Вероятно по собаке.
QUOTE (AlexTech @ Jan 28 2011, 13:53) *
3. while(1) есть, но в нем вызавается любая процедура - лед мигает, перезапуск или МК или main()
Фуз M103C - ОЗУ расположено по другим адресам, стек в него не попадает, со стека читается мусор.
QUOTE (AlexTech @ Jan 28 2011, 12:18) *
В конце концов он делает именно то что нужно - ВЫКЛЮЧАЕТ, а все биты или нет не важно, ибо больше ничего полезного на этом порту не висит
А второй светодиод?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 12:42
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 15:19) *
Но мне кажется что такой простой код должен выполняться правильно независимо от этого фьюза
От fuse M103C изменяется распределение памяти (memory map, см. рис. 9 в DS). Компилятор распределяет стек в несуществующую память - поэтому без бесконечного цикла (при выходе из процедуры main) идёт перезапуск (стека то - нет реально: выбирется адрес возврата со значением = единицы во всех разрядах и после выполнения команды по этому адресу - следующая команда = 0 - переполнение указателя команд); то же происходит и при вызове процедуры из while(1){} (точнее при возврате из процедуры).
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 13:10
Сообщение #29


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Сергей Борщ @ Jan 28 2011, 15:31) *
А второй светодиод?

Да фиг с ним, с одним бы разобраться,
кстати надо заметить что моя неправильная "&= !_BV" не мешает управлять силовиками на другой плате абсолютно раздельно, так что нифига не 0 туда пишется, напутали что то знайки, правда там тинка26

Цитата(Палыч @ Jan 28 2011, 15:42) *
От fuse M103C изменяется распределение памяти (memory map, см. рис. 9 в DS). Компилятор распределяет стек в несуществующую память - поэтому без бесконечного цикла (при выходе из процедуры main) идёт перезапуск (стека то - нет реально: выбирется адрес возврата со значением = единицы во всех разрядах и после выполнения команды по этому адресу - следующая команда = 0 - переполнение указателя команд); то же происходит и при вызове процедуры из while(1){} (точнее при возврате из процедуры).

Да я прочитал что это за фьюэ, спасибо, надо обязательно проверить, но вечером...

вот схемка если что...

Сообщение отредактировал AlexTech - Jan 28 2011, 13:14
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 13:22
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 16:10) *
так что нифига не 0 туда пишется, напутали что то знайки
Сверьтесь с каким-нибудь учебником (лучше - со стандартом) или проверьте на "железе" - будете удивлены...
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01516 секунд с 7
ELECTRONIX ©2004-2016