29 / 13 / 0
Регистрация: 08.08.2011
Сообщений: 190

Первая прошивка МК и ноль эмоций

30.09.2012, 00:11. Показов 4538. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, у меня первый опыт с микроконтроллерами.
Я купил ATMega16A, собрал под него тестовую схему со стабилизированным питанием на 7805, кнопочкой ресет, кварцем, сделал программатор 5 проводков.
Скачал ATM Studio 6 с сайта, создал наипростейший проект с++(именно на ++ захотелось проверить), сделал RELEASE, получившийся PROG1.hex перенес на ноут с ЛПТ портом и ХР.
На ноут с ХР поставил ponyProg, произвел READ, все ОК, произвел WRITE, результат тоже положительный. Снова READ, ура, данные есть.
Выходит что прошивается.
Но! Когда отключаю от программатора плату, и втсавляю в любой из портов мультиметр, он показывает 1 с небольшим. Хотя по прошивке только PB1 должен отдавать, или я не поннимаю принципа действия?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <avr/io.h>
    
int main(void)
{
      DDRB  = 1;
      PORTB = 255;
    while(1)
    {
 
        PORTB = 255;
 
        //TODO:: Please write your application code 
    }
}
Пробовал ставить PORTB =1, тот же эффект.
Помогите разобраться немного. DDRB отвечает за количество ножек в порту на вывод/ввод? А PORTB за количество тока на порт? Как повлиять на конкретную ножку? И еще, если ставить светодиоды от ножки, то перед ним нужен резистор?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2012, 00:11
Ответы с готовыми решениями:

Radeon HD3650: кулер крутится, но монитор выдает ноль эмоций и система тоже не загружается
Народ такая ситуация : сгорел старый радик 9600ХТ , все остальное осталось цело ( ставлю еще более старого динозавра и все работает). Купил...

Первая прошивка STM32F429ZI
День добрый! На днях пришла плата STM32F429I-DISC1 для начала знакомства с контроллерами, но возникла проблема при попытках первой...

MsChart - Первая точка видимой на экране части графика всегда уходит в ноль
первая точка видимой на экране части графика всегда уходит в ноль. Если я соответственно зумирую chartArea то все равно первая точка уходит...

32
108 / 16 / 2
Регистрация: 09.03.2011
Сообщений: 37
01.10.2012, 23:51
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Grey Посмотреть сообщение
Прозвони кнопку. Вероятно контакты замкнуты.
Согласен. А вообще можно вполне обходится и без кнопочного Ресета.
0
29 / 13 / 0
Регистрация: 08.08.2011
Сообщений: 190
01.10.2012, 23:53  [ТС]
Все, всем спасибо, буду учить!
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
01.10.2012, 23:54
Цитата Сообщение от Antifritz Посмотреть сообщение
если по науке, то это резистивный делитель.
Резестивный делитель состоит из двух резисторов.
А в данном случае резистор ограничивает ток через замкнутую кнопку. Иначе будет замыкание. Напряжение питания замкнёте кнопкой на корпус.
1
 Аватар для Санек25
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
02.10.2012, 16:37
Цитата Сообщение от zoomerland Посмотреть сообщение
Но! Когда отключаю от программатора плату, и втсавляю в любой из портов мультиметр, он показывает 1 с небольшим. Хотя по прошивке только PB1 должен отдавать, или я не поннимаю принципа действия?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <avr/io.h>
    
int main(void)
{
      DDRB  = 1;
      PORTB = 255;
    while(1)
    {
 
        PORTB = 255;
 
        //TODO:: Please write your application code 
    }
}
Пробовал ставить PORTB =1, тот же эффект.

конечно у тебя так будет ты же работаешь со всеми портами "B" ,а не с конкретным пином....
Сейчас не вспомню но надо как то так

PORTB.1 = 255;

Добавлено через 33 секунды
точнее вечером отвечу

Добавлено через 1 минуту
и кстати пони прог перед использованием надо калибровать.....

Добавлено через 2 минуты
Вот программа на языке СИ для того, чтобы это начало работать (// это пояснения, их программа не читает):

#include <mega8.h>// хэдер файл, он обязателен, для каждого мк он индивидуален(лежит в папке с программой для прошивки МК)
#include <delay.h>// библиотека для того, чтобы делать паузы в процессе выполнения программы(тоже лежит с программой)
void main(void)
{//Начало основной программы
DDRB =0xff;//настраиваем выходы B на лог.единицу
while(1)
{//открытие бесконечного цикла
PORTB.1=1;//выход PB1 лог.единицы
PORTB.3=0;//выход PB3 лог.0
delay_ms(1000);//пауза 1с
PORTB.1=0;// выход PB1 лог.0
PORTB.3=1;//выход PB3 лог.единицы
delay_ms(1000);//пауза 1с
}//закрытие бесконечного цикла
}//закрытие программы
воть в нете нашел
0
29 / 13 / 0
Регистрация: 08.08.2011
Сообщений: 190
02.10.2012, 20:01  [ТС]
конечно у тебя так будет ты же работаешь со всеми портами "B" ,а не с конкретным пином....
Ну, в том коде же я указал DDRB=1, что делает только 1 ножку - ножкой вывода, или все равно?

Проблема оказалась в ресете, правда с исправленным ресетом ту прошивку не пробовал.
0
28 / 28 / 4
Регистрация: 23.02.2012
Сообщений: 104
02.10.2012, 21:01
Цитата Сообщение от zoomerland Посмотреть сообщение
Ну, в том коде же я указал DDRB=1, что делает только 1 ножку - ножкой вывода, или все равно?
Почитай на счет этого вот эту статью. Когда я начинал, она мне очень помогла.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
02.10.2012, 21:24
Цитата Сообщение от Санек25 Посмотреть сообщение
PORTB.1 = 255;
Это как ты в один бит 8 бит собрался записать
Цитата Сообщение от Санек25 Посмотреть сообщение
конечно у тебя так будет ты же работаешь со всеми портами "B"
А что их несколько?
есть порт "B" а у него 8 ножек "пинов"как ты сказал
Цитата Сообщение от Санек25 Посмотреть сообщение
и кстати пони прог перед использованием надо калибровать.....
Переведи

Цитата Сообщение от Санек25 Посмотреть сообщение
воть в нете нашел
потеряй обратно
с такими комментариями она нахрен не нужна

особенно вот этот

Цитата Сообщение от Санек25 Посмотреть сообщение
DDRB =0xff;//настраиваем выходы B на лог.единицу
настроить можно на вход или на выход (в данном случае на выход)
а что значит на лог.единицу

вот это тоже улыбнуло
Цитата Сообщение от Санек25 Посмотреть сообщение
while(1)
{//открытие бесконечного цикла
как можно открыть цикл
главное бесполезный комментарий
как и эти
Цитата Сообщение от Санек25 Посмотреть сообщение
PORTB.1=1;//выход PB1 лог.единицы
PORTB.3=0;//выход PB3 лог.0
тавтология, комментарий повторяет код
0
02.10.2012, 21:47

Не по теме:

Цитата Сообщение от ValeryS
Цитата Сообщение от Санек25
и кстати пони прог перед использованием надо калибровать.....
Переведи
Установки -> Калибровка:

0
 Аватар для Санек25
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
03.10.2012, 08:48
Это как ты в один бит 8 бит собрался записать
согласен тут я в попыхах не то написал надо было так PORTB.1 = 1; //первый пин порта В открыт
PORTB.1 = 0; //первый пин порта В закрыт

А что их несколько?
есть порт "B" а у него 8 ножек "пинов"как ты сказал
имелось ввиду со всеми пинами порта В. Это я думаю уже придирка и так ясно что имелось ввиду

Но! Когда отключаю от программатора плату, и втсавляю в любой из портов мультиметр, он показывает 1 с небольшим. Хотя по прошивке только PB1 должен отдавать, или я не поннимаю принципа действия?
кстати автору темы и требовалось, чтобы работал только 1 пин порта В, а не весь порта В

и кстати пони прог перед использованием надо калибровать.....
при первом запуске пони прог необходимо производить калибровку. При последующих нет...

потеряй обратно
с такими комментариями она нахрен не нужна особенно вот этот
Так выложите с лучшими комментариями. Мне лично там все понятно, хотя я тоже начинающий в программировании для мк

настроить можно на вход или на выход (в данном случае на выход)
а что значит на лог.единицу
что за лог.единицу единица ответить не могу , но суть думаю и без этого ясна

как можно открыть цикл
главное бесполезный комментарий
как и эти

тавтология, комментарий повторяет код
Ну это лично вас улыбнуло , а когда я начинал и каждая строчка кода была как целое препятствие то я и такому коментарию был бы рад...

П.С. Вы бы лучше чем чужие сообщения обсуждать взяли бы и помогли человеку или бы поправили меня и выложили бы правильные коментарии...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.10.2012, 11:40
Санек25, raxp, насчет "пони прог" действительно не знал
я пользуюсь CodeVisionAVR с его встроенным программатором
"Век живи- век учись" спасибо ( но надеюсь мне это не понадобится)

Цитата Сообщение от Санек25 Посмотреть сообщение
Вы бы лучше чем чужие сообщения обсуждать взяли бы и помогли человеку
так он уже решил свою проблему
Цитата Сообщение от zoomerland Посмотреть сообщение
Да, все оказалось почти так. Убрал конденсатор с ресета, ноль эмоций, выдернул ресет в принципе - все замигало! Спасибо огромное!
Значит дело либо в резисторе, либо в кнопке. Не удивлюсь если ножки кнопки банально не дотягиваются до контактов

Цитата Сообщение от Санек25 Посмотреть сообщение
имелось ввиду со всеми пинами порта В. Это я думаю уже придирка и так ясно что имелось ввиду
нет не ясно вот твое первое сообщение

Цитата Сообщение от Санек25 Посмотреть сообщение
конечно у тебя так будет ты же работаешь со всеми портами "B" ,а не с конкретным пином....
это не описка, это не понимание как работают порты в АВРке
Цитата Сообщение от Санек25 Посмотреть сообщение
Так выложите с лучшими комментариями. Мне лично там все понятно,
где ж понятно то ?
Цитата Сообщение от Санек25 Посмотреть сообщение
что за лог.единицу единица ответить не могу ,
тем более что комментировать чужой код(написанный коряво) у меня желания нет
информации навалом
вот статья которая с нуля позволяет писать на Си
http://www.xakep.ru/magazine/xa/127/104/1.asp
Вот сайт который расписывает что такое АВРки
http://123avr.com/
вот для работы в AVR Studio
http://easyelectronics.ru/avr-... ast-1.html
да еще куча информации в инете валяется (лень все искать)
0
 Аватар для Санек25
422 / 352 / 19
Регистрация: 14.05.2012
Сообщений: 1,437
03.10.2012, 12:53
За ссылки спасибо особенно за первую.

это не описка, это не понимание как работают порты в АВРке
я никогда в грудь себя и не бил, что все знаю и понимаю... Институтов по программированию и радио делу не заканчивал, потому и не могу научном языке и изъясняться.

где ж понятно то ?
тем более что комментировать чужой код(написанный коряво) у меня желания нет
Интересно что в вашем понимании хороший полный ответ?.. Можите привести пример. А то сколько по сайтам не ходил все по типу того что я выложил. Делаю вывод из этого что примеров кода с хорошим описанием не так уж и много...

К тому же считаю, что у ТС необходимо помимо схемы, так же надо было поправить код...Так было бы правильнее...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
03.10.2012, 14:21
Санек25, вот переписал твою прогу со своими комментариями, посмотри понятно или нет

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <mega8.h>//файл описания регистров микроконтроллера
 #include <delay.h>//файл реализующий функции задержки
 void main(void) // главная функция программы
 {
 DDRB =0xff;//тоже что и DDRB =255 все выводы порта  B работают на вывод если был бы ноль работали б на ввод
 PORTB.1=1;//записываем в PB1 1 на выводе лог 1 (+5в)
 PORTB.3=0;//записываем в PB3 0 на выводе лог 0 (0в)
 while(1)//бесконечный цикл нам из него никогда не выйти 
 {
   delay_ms(1000);//пауза 1с функция реализована в delay.h
   PORTB.1=~PORTB.1;//инвертирование значение на  PB1(была 1 стал 0 и наоборот)
   PORTB.3=~PORTB.3;//инвертирование значение на  PB3(был 0 стала 1 и наоборот)
  }
 
}//конец главной функции программы
вот ссылка что такое delay.h
http://avr-libc.narod.ru/group__util__delay.html
вот еще сайт про работу с avr
http://avr-libc.narod.ru/


raxp, посмотри на ссылки если они устраивают, то закинь куда нибудь в ФАК
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
03.10.2012, 14:25
Тема закрыта во избежание флуда и выяснения отношений.

Не по теме:

Большинство прикрепленных FAQ-ов открыты для доступа.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2012, 14:25

Первая прошивка микроконтроллера AVR
Всем привет! Имеется плата управления прибором на базе микроконтроллера Atmega2560. Приключилась такая ситуация: Первую прошивку...

Считыватель эмоций
Существует ли где нибудь на свете оборудование, и ПО для сбора, хранения , анализа, и контроля и возможно даже управления человеческих...

Распознавание эмоций
Всем доброго времени суток Есть вот такая нейронная сеть import random import pandas as pd import numpy as np import...

Химизм наших эмоций
Вы когда-нибудь задавались вопросом, почему человек радуется и огорчается, бывает счастливым и расстроенным?! Кажется, чего проще – получил...

Построить ε-НКА, допускающий язык, состоящий из цепочек, имеющих ноль или несколько а, ноль или несколько b, ноль или несколько с.
Построить ε-НКА, допускающий язык, состоящий из цепочек, имеющих ноль или несколько а, ноль или несколько b, ноль или несколько с.


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

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

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Video: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru