Новенький. Мысли вслух.

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Новенький. Мысли вслух.

Сообщение mmu » 17 фев 2007, 20:16

К  битам  регистров с адресами от 0 до 31 в компиляторе CodeVisionAVR можно обратится (и читать и записывать) проще.
Вот так:     REGISTR.BIT  
Пример:   PINB.2   или   PORTA.5

"avr123.nm.ru". Что же вы вводите людей в заблуждение. Регистры 0 – 31 – это рабочие регистры (working registers) и занимают они свое адресное пространство (к примеру, для mega8 - 0000 - $001F), а регистры порта – это регистры ввода вывода (I/O resisters) и у них свои адреса (к примеру, для mega8 - $0020 - $005F). Так что этот пример совсем не корректен. А ведь ваш сайт читают начинающие.
Для чего нужно начинающим давать сложные примеры типа: if((~PINC)&(1 << n)) {можно записать и вот так :  if(!(PINC & (1 << n))) {. Можно было написать проще: if (PINC.1 = 1) {}. Начинающему это было бы более понятно. Зачем прививать людям отвращение с самого начала. К чему все эти загогулины, крючки, стрелочки. Для меня язык СИ не является актуальным, сам я пишу на ассемблере. Ваш сайт хотел почитать для самообразования, вполне возможно, что когда либо придется переходить на СИ, но почитав ваше произведение у меня пока  не появилось желание писать на СИ.
Ассемблер для меня все - таки проще в понимании. Правда ассемблер предполагает хорошее знание железа (контроллера)  и если вы знаете железо, то писать одно удовольствие. Не надо запоминать огромное количество команд и правила правописания. При хороших комментариях вы и через год не забудете что написали. Основные минусы – большой объем писанины и не переносимость программ под другие контроллеры. Первое лечится готовыми процедурами (своими или чужими) методом копирования и вставки. Второе не лечится ни как, да и не надо. Часто ли здесь на форуме люди меняли марки контроллеров и приспосабливали к ним свои старые программы? Раньше (в годы моей молодости) все крутые программисты писали на ассемблере. Программы были компактные и быстрые. Когда память стала расти, то программисты перестали заботиться о размерах программ, и началась эра языка СИ. Я не отрицаю того, что писать на СИ проще и быстрее. Один оператор на СИ может заменить кучу строк ассемблерного кода. Одно плохо нет хороших примеров от простого к сложному, как к примеру было для языка Паскаль, Бейсик, Foxpro (я программировал на всех этих языках). Сайт 123-го не является учебником для начинающего – можете мне поверить как человеку изучившего самостоятельно несколько языков программирования и имеющего опыт работать с литературой. Я не собираюсь описывать недостатки сайта, кому нравится, учитесь там.
Пару слов о симуляторе VMLAB. В эру 486–х машин были программы для трассировки печатных плат. В этих программах приходилось в ручную вводить все соединения компонентов схемы типа: контакт1 R1 – контакт1 VT1. Так вот VMLAB предлагает нам делать тоже самое, когда на дворе эра двух ядерных компьютеров. Ладно, если схема состоит из трех деталей, а если их 33 или 133. Получается, что пишешь программу, а потом еще сиди пиши соединения для VMLAB. Чушь это собачья. Если уж вы написали программу, то не тратьте время на VMLAB, лучше прогоните ее в симуляторе AVRStudio. Классная вещь. Видны все регистры, порты, прерывания и т.д., а потом все в железо и проверка в живую. К примеру mega8 разрешает перепрошить память 10000 раза, а это значит, что в течении года можно ежедневно перепрошивать флешку 27 раз. Если очень хочется посмотреть на компьютере, то лучше Протеус, хотя в тоже работает не корректно. Только проверка в живую на железе даст вам истинный результат. Не бойтесь, что либо спалить. В радиолюбительском деле без этого не бывает. Помните, не ошибается тот, кто ни чего не делает.
Мне еще одно не понятно. Очень многие соединяют свои микроконтроллеры с компьютером через USART. Ни как не пойму для чего. Контроллер это тот же маленький компьютер и в принципе должен работать автономно, особенно в роботах. Зачем его к чему то привязывать.  У 123-го есть пример «электронный вольтметр, измеритель вибрации». Он пишет: «Всегда полезно иметь возможность вывести отладочную либо еще какую информацию через адаптер rs232 на ПК - для этого активируем передатчик USART» . Если тебе так хочется выводить значения напряжения на компьютер, ну сделай ты схему на дискретных элементах и подсоединяйся к ПК (COM, LPT, звуковуха) и не мучайся с написанием программы (схем полно в инете). В примере нет описания динамической индикации, хотя этот вопрос чаще встречается у начинающих. Еще раз – зачем привязывать контроллер к компьютеру – лишая его основного достоинства – автономная работа.

Я по профессии инженер электронщик, занимаюсь ремонтом компьютерной и офисной техники, до этого работал программистом. Радиолюбитель со школьной скамьи. Все что написал, мое личное мнение, ни кому не навязывается. Прошу без обид.
mmu
 
Сообщения: 21
Зарегистрирован: 31 янв 2007, 16:10
Откуда: Уфа

Сообщение Сергей » 17 фев 2007, 21:00

Тогда по вашему, зачем нужен USART? Если уж соединять МК то по i2c или уж на крайняк SPI. По моему личному опыту - очень удобно использовать USART для связи с компьютером, простой и доступный интерфейс.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Новенький. Мысли вслух.

Сообщение avr123.nm.ru » 17 фев 2007, 21:07

mmu писал(а):
К  битам  регистров с адресами от 0 до 31 в компиляторе CodeVisionAVR можно обратится (и читать и записывать) проще.
Вот так:     REGISTR.BIT  
Пример:   PINB.2   или   PORTA.5


"avr123.nm.ru". Что же вы вводите людей в заблуждение.

Регистры 0 – 31 – это рабочие регистры (working registers) и занимают они свое адресное пространство (к примеру, для mega8 - 0000 - $001F),

а регистры порта – это регистры ввода вывода (I/O resisters) и у них свои адреса (к примеру, для mega8 - $0020 - $005F). Так что этот пример совсем не корректен.

А ведь ваш сайт читают начинающие.


Я чайник ! там в начале курса написано - ЧАЙНИК !

поэтому мне позволительно делать по чайниковски- т.е. так как написано в хелпе компилятора:

CVAVR -> help -> Bit level access to the I/O Registers

Because bit level access to I/O registers is done using the CBI, SBI, SBIC and SBIS instructions, the register address must be in the 0 to 1Fh range for sfrb and in the 0 to 1Eh range for sfrw.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Новенький. Мысли вслух.

Сообщение avr123.nm.ru » 17 фев 2007, 21:13

mmu писал(а):а регистры порта – это регистры ввода вывода (I/O resisters) и у них свои адреса (к примеру, для mega8 - $0020 - $005F)


адреса портов даны в таблице в конце даташита и в хидерах .h  для МК.

вот из хидера  -  MEGA16.H

DDRD=0x11;
PORTD=0x12;

DDRC=0x14;
PORTC=0x15;

PORTB=0x18;
DDRA=0x1a;

как видите все они меньше чем 0x1F  иди 31
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Новенький. Мысли вслух.

Сообщение avr123.nm.ru » 17 фев 2007, 21:19

mmu писал(а):Для чего нужно начинающим давать сложные примеры типа:

if((~PINC)&(1 << n)) {

можно записать и вот так :  if(!(PINC & (1 << n))) {.


Можно было написать проще: if (PINC.1 = 1) {}. Начинающему это было бы более понятно.  


потому что мои два примера будут работать на всех портах, а ваш последний только на тех чей адрес не превышает 31.

есще мои два примера будут работать на любом компиляторе а ваш только в CVAVR.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 17 фев 2007, 21:20

Ассемблер для меня все - таки проще в понимании.

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

в школе я на турбо паскале писал, потом в институте на дельфях
щас вот на си под AVR пишу а на работе вобще язык запросов 1С осваиваю. глубоко уверен что способ реализации не важен. он может быть  удобным или неудобным.
асм это конечно хорошо но зачем себе лишний геморрой устраивать? тем более как видите сейчас о ресурсах контроллера можно не очень заботиться, тот же арм возьмите, туда операционку можно засунуть. не будите же вы писать приложение с гуи на асме =))


Одно плохо нет хороших примеров о
т простого к сложному, как к примеру было для языка Паскаль, Бейсик, Foxpro

ну вы наверно просто не искали
для мк множество разных проектов на си. как примитивных так и оч сложных

Часто ли здесь на форуме люди меняли марки контроллеров и приспосабливали к ним свои старые программы?

ну мы же не для заказчиков пишем.
совершенно необходима лёгкая портируемость кода, чтобы можно было делиться исходниками, читать чужые программы. если ты чтото наваяещь на асме то уже практически никто не сможет использовать твои наработки в своём проекте. вы же не станете говорить что все пишут под одни мк=)
Сайт 123-го не является учебником для начинающего – можете мне поверить как человеку изучившего самостоятельно несколько языков программирования и имеющего опыт работать с литературой

странно, а мне так оч нравиться
именно прочитав все странички(их тогда было меньше) я и начал писать для мк

Пару слов о симуляторе VMLAB.

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

У 123-го есть пример «электронный вольтметр, измеритель вибрации»
Еще раз – зачем привязывать контроллер к компьютеру – лишая его основного достоинства – автономная работа.

это как раз тот самый простой пример на который вы жаловались что он отсутствует. я думаю123авр не претендует на оскар за нужность такого девайса =)
_лично_для_меня_ контроллеры интересны именно тем что их  можно подключить к компьютеру. а дискретные элементы я вобще не люблю, транзисторы всякие, резисторы, до сих пор не знаю нафиг нужен диод шотки.

интересно каким образом контроллер лишаеться автономности когда его к пк подсоединяют? уж не ухудшаеться ли там кремний когда данные в пк передаються. никто не пытаеться "привязать" мк к компу, просто подключать компьютер к мк очень часто удобно и полезно
кому надо вон делают жуков на дискретных элементах с паялом сидят сутками. у нас же "эра двуядерных процессоров", кругом исскуственный интелект, даже холодильники к интернету подключаються(выже не будите ругать холодильники за то что они могут общаться с хозяином посредством веб интерфейса удалённо???) а что это за интеллект если он общаться не может?
а вобще главное достоинство МК это простота использования по сравнения с дискретными элементами. я кстати както не разделяю на два понятия компьютер и контроллер, компьютер это тот же контроллер только в большом железном ящике

перепрошивать флешку 27 раз

ой ну нафига эти глупости втыкать программатор, прошивать, потом опять прошивать.
как вы интересно будете проверять правильно ли работает алгоритм сложения векторов в железе??? и в каком именно месте зависла программа после ошибки? как я?(можете прочитать кстати ветку про мои мучения с уартом(там правдо это резальтат моей глупости)) напаял 3 светодиода и целый день занимался перепрошивкой чтоб по морганию светиков определить в каком месте кода процесс виснет??

как раз это очень грамотно отлаживать программы в симуляторах

Не бойтесь, что либо спалить.

наоборот бойтесь,  я например очень не хочу спалить десяток контроллеров по 300р штука, (я 90s2313 спалил расстроился 170 р. за него отдал когдато) из за какогото косяка в схеме. сначала всё десять раз проверьте, просимулируйте в протеусе а только потом заливайте прошивку и подключайте питание.

ЗЫ
а я сисадмином работаю а по спецальности инженер энергоснабжения.
буду рад всем навязать своё мнение и совершенно пофиг если ктото обидиться =)
проще надо быть и люди к вам потянуться :lol:
Последний раз редактировалось Myp 17 фев 2007, 21:27, всего редактировалось 2 раз(а).
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Новенький. Мысли вслух.

Сообщение avr123.nm.ru » 17 фев 2007, 21:23

mmu писал(а):Сайт 123-го не является учебником для начинающего – можете мне поверить как человеку изучившего самостоятельно несколько языков программирования и имеющего опыт работать с литературой.


Конечно - это КРАТКИЙ курс ДЛЯ ЧАЙНИКОВ !!!

Учебник это более полное изложение.

и их тьма -
http://www.roboforum.ru/viewforum.htm?f=19

любой может взять и прочитать.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение avr123.nm.ru » 17 фев 2007, 21:29

CodeVision 1.25.3 с лекарством можно загрузить
http://www.roboforum.ru/viewtopic.htm?p=11560
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Re: Новенький. Мысли вслух.

Сообщение avr123.nm.ru » 17 фев 2007, 21:33

mmu писал(а):У 123-го есть пример «электронный вольтметр, измеритель вибрации». avr123.nm.ru/z09.htm

Он пишет:

«Всегда полезно иметь возможность вывести отладочную либо еще какую информацию через адаптер rs232 на ПК - для этого активируем передатчик USART»

Если тебе так хочется выводить значения напряжения на компьютер, ну сделай ты схему на дискретных элементах и подсоединяйся к ПК (COM, LPT, звуковуха) и не мучайся с написанием программы (схем полно в инете).


А почему не использовать СВОБОДНЫЙ в данном устройстве USART ???

Пусть он всегда передает диагностическую инфу.  В любой момент воткнул его в комп и посмотрел что там и как.  Но совсем не обязательно его постоянно держать на связи с ПК.

и главное - эти задачи УЧЕБНЫЕ !  т.е. любое действие с МК разложеное на шаги юудет полезно курсисту. ИМХО конечно !
Последний раз редактировалось avr123.nm.ru 17 фев 2007, 21:44, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 17 фев 2007, 21:34

Сергей писал(а):Тогда по вашему, зачем нужен USART? Если уж соединять МК то по i2c или уж на крайняк SPI. По моему личному опыту - очень удобно использовать USART для связи с компьютером, простой и доступный интерфейс.


мы всётаки уже скоро переживём усарт :cry:
уже не на всех компьютерах он есть в явном виде
интел вобще скоро отказываеться  от LPT и ps/2
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Master » 17 фев 2007, 23:00

Зато можно купить плату расширения где есть ЛПТ и СОМ. Правда 20 баксов стоит.

Не бойтесь, что либо спалить.

Вот это я поддерживаю, это по нашему. Зачем 20 раз перепроверять если можно воткнуть и посмотреть. Сам спалил 3 контроллера.
И вообще волков бояться в лес не ходить.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Сообщение GIGAWAT » 18 фев 2007, 00:04

Myp писал(а):
Сергей писал(а):Тогда по вашему, зачем нужен USART? Если уж соединять МК то по i2c или уж на крайняк SPI. По моему личному опыту - очень удобно использовать USART для связи с компьютером, простой и доступный интерфейс.


мы всётаки уже скоро переживём усарт :cry:
уже не на всех компьютерах он есть в явном виде
интел вобще скоро отказываеться  от LPT и ps/2


Неее товарисч  8)
Последовательная передача ето наше ВСЕ.  :twisted:
Щас все шины делают последовательными даже индустриальные CAN. LIN. 1-Ware etc.
А что до компов: вот например новейщий КПК Fujitsu Siemens N550
поддерживает RS232, в виде кабеля для подключения к USB хосту на КПК-ашника. Вспомните IDE, а что сейчас SATA, логично что чем меньше проводов тем меньше наводок, помех, а на высокой частоте можно и на одном проводе нехилую скорость получить.
1-Ware например до 116К/бит. но щас может и побыстрее. =)
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение GIGAWAT » 18 фев 2007, 00:11

Master писал(а):Зато можно купить плату расширения где есть ЛПТ и СОМ. Правда 20 баксов стоит.

Не бойтесь, что либо спалить.

Вот это я поддерживаю, это по нашему. Зачем 20 раз перепроверять если можно воткнуть и посмотреть. Сам спалил 3 контроллера.
И вообще волков бояться в лес не ходить.


Не, ну мне тоже нестрашно спалить, благо начальство еще денег даст при необходимости =)
А вот для интузиастов которые чисто для себя чтото делають , сжигать по 150-300, а в некоторых случаях по 1000 вечнодеревянных как то накладно.  :wink:
Разумность должна быть во всем.
Есть возможность и время симулировать, СИМУЛИРУЙ.
Нету времени- ЖГИ ЖЕЛЕЗО пока горяче  :twisted:
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

Сообщение Myp » 18 фев 2007, 00:11

но 232 это же уже старо
скорость маленькая, устройств кучу подключать нельзя
вымрет однозначно вопрос только когда.
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение GIGAWAT » 18 фев 2007, 00:21

Myp писал(а):но 232 это же уже старо
скорость маленькая, устройств кучу подключать нельзя
вымрет однозначно вопрос только когда.

Суть здесь в стандартизации.
RS прост, легкосовместим, и широкораспространен.
Например то же USB так к мк не подключишь да и напряжение там поболе .
Лично у нас на предприятии и совместных в основном все далается под RS а немножко USB, а потом уже все остальное.
Тем более есть еще RS-422.485 =)
GIGAWAT
 
Сообщения: 45
Зарегистрирован: 04 фев 2007, 00:53
Откуда: Питер

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14