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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> проблема с ATmega16, помогите новичку
singlskv
сообщение Sep 8 2006, 19:08
Сообщение #31


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(junoSynthesizer @ Sep 8 2006, 22:27) *
2 singlskv

тоже не то. порт С - выходной. соответсвенно...
пин С я в конце функции использую чисто для читабельности и компактности кода.

А Вы попробуйте таки поменять PORTC на PINC.
Если следовать datasheets:
Код
Reading the Pin Value Independent of the setting of Data Direction bit DDxn, the port pin can be read through
the PINxn Register bit. As shown in Figure 22, the PINxn Register bit and the preceding
latch constitute a synchronizer. This is needed to avoid metastability if the physical pin
changes value near the edge of the internal clock, but it also introduces a delay. Figure
23 shows a timing diagram of the synchronization when reading an externally applied
pin value. The maximum and minimum propagation delays are denoted tpd,max and tpd,min
respectively.
Figure 23. Synchronization when Reading an Externally Applied Pin value
   ...............................
Figure 24. Synchronization when Reading a Software Assigned Pin Value
   ...............................


при этом в симуляторе может все работать smile.gif
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Sep 8 2006, 20:50
Сообщение #32


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

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



Если не ошибаюсь, то когда выполняется чтение portD то чтение происходит из управляющего выходом регистра, при чтении pinD читается состояние физической линии, прошедшее синхронизацию, следовательно при исправной цепи и достаточном времени, работать должно идентично с обоими командами.
Я бы всетаки использовал одинаковые обращения.
Предпринял бы следующее:

*Проверил бы ассемблерный код, во "что" он там скомпилировал.
*Проверил бы последовательность инициализации таймера.
*Попробовал бы код на другом кристалле (лучше менее навороченном)

Получается, что таймер стартует с параметрами

Кажись нашел ваш трабл
сначала надо грузить старшую часть потом младшую , а не на обарот
об этом в даташит сказано !!!, думал вы знаете
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 8 2006, 21:04
Сообщение #33


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Gennadiy_ @ Sep 9 2006, 00:50) *
Если не ошибаюсь, то когда выполняется чтение portD то чтение происходит из управляющего выходом регистра, при чтении pinD читается состояние физической линии, прошедшее синхронизацию, следовательно при исправной цепи и достаточном времени, работать должно идентично с обоими командами.
Я бы всетаки использовал одинаковые обращения.

в даташите для чтения пинов даже при програмной установке ВСЕГДА используется
PINx (почему-то).
Результат чтения из PORTx вообще не описан...

Если мне не изменяет память, на эти грабли я уже наступал smile.gif
При этом в симуляторе все ОК.
Как работает чтение из PORTx для меня так и осталось загадкой (может быть задать этот
вопрос atmel blink.gif ).
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Sep 8 2006, 21:10
Сообщение #34


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

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



Мне почемуто помнится, что гдето я видел описание этой разницы, или ктото мне рассказывал это.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 8 2006, 21:22
Сообщение #35


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Gennadiy_ @ Sep 9 2006, 01:10) *
Мне почемуто помнится, что гдето я видел описание этой разницы, или ктото мне рассказывал это.

Вероятно вот здесь:
В.В.Сташин А.В.Урусов О.Ф.Мологонцева
"Проектирование цифровых устройств на однокристальных микроконтроллерах"

Только на AVR все чуть-чуть подругому.
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Sep 8 2006, 22:12
Сообщение #36


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

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



Если в этой книге есть примеры про АВР то возможно, просто у меня книг таких нет, както обхожусь первоисточниками, но один раз, что то чужое на глаза попадалось, книга была с простейшими примерами для АВР.
Go to the top of the page
 
+Quote Post
Shurmas
сообщение Sep 8 2006, 23:31
Сообщение #37


Местный
***

Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332



Для AVR я вам советую 2 инструмена объемом 6 Мб всего! достаточных для полного цикла разработки - программирования, отладки и прошивания - вот посмотрите: vm-lab.narod.ru

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

Еще скачайте PROTEUS - уверен вам понравится.

Цитата(singlskv @ Sep 9 2006, 01:04) *
для чтения пинов даже при програмной установке ВСЕГДА используется
PINx (почему-то). Результат чтения из PORTx вообще не описан...


так устроен AVR - вот подробно: [banned]/02.htm
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Sep 9 2006, 09:30
Сообщение #38


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

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



Не смог загрузить картинки.
В D.Sheet старой серии МС было так

The Port B Input Pins address (PINB) is not a register, and this address enables access
to the physical value on each Port B pin. When reading PORTB, the Port B Data Latch
is read, and when reading PINB, the logical values present on the pins are read.



Если посмотреть на схему организации выхода, то можно заметить _однонаправленные_ ключи, в новых схемах добавились цепи синхронизации и доп. цепи управления выходом для новых режимов.
Согласно схемам при чтении portD выдается сигнал RRx и данные считываются с выхода тригерра управления, физическая линия может при этом иметь другое состояние.


Где здесь и что " подругому" ?
Go to the top of the page
 
+Quote Post
junoSynthesizer
сообщение Sep 9 2006, 10:05
Сообщение #39


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

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



2 Gennadiy_

спасибо вам огромное! я действительно как то не обратил внимание на то что сначала надо инициализировать верхнюю часть 16 разрядного регистра счёта!

всё заработало!


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 9 2006, 10:42
Сообщение #40


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Gennadiy_ @ Sep 9 2006, 13:30) *
Не смог загрузить картинки.
В D.Sheet старой серии МС было так

The Port B Input Pins address (PINB) is not a register, and this address enables access
to the physical value on each Port B pin. When reading PORTB, the Port B Data Latch
is read, and when reading PINB, the logical values present on the pins are read.



Если посмотреть на схему организации выхода, то можно заметить _однонаправленные_ ключи, в новых схемах добавились цепи синхронизации и доп. цепи управления выходом для новых режимов.
Согласно схемам при чтении portD выдается сигнал RRx и данные считываются с выхода тригерра управления, физическая линия может при этом иметь другое состояние.


Где здесь и что " подругому" ?

Да Вы правы, просто в новых DSheet этой фразы нет "When reading PORTB, the
Port B Data Latch is read", а на схему я и не смотрел.
А глюк у меня был кажеться связан с этим:
", физическая линия может при этом иметь другое состояние"
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Sep 9 2006, 16:33
Сообщение #41


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

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



smile.gif
Go to the top of the page
 
+Quote Post
ps1x
сообщение Sep 9 2006, 19:36
Сообщение #42


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Код

char user[10];
user="Shurmas";
if (user == a.vr123.nm.ru) then
{
ban(user);
}

правильная конструкция?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Sep 9 2006, 20:28
Сообщение #43


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ps1x @ Sep 9 2006, 23:36) *
Код

char user[10];
user="Shurmas";
if (user == a.vr123.nm.ru) then
{
ban(user);
}

правильная конструкция?

C Shurmas то все и так ясно,
интересно вот это:
smk
"AVR-технология. Серьезные вопросы., Очень грамотный и думающий человек осваивает AVR."

и первой фразой:
"Читал форум и "курс", понятно какой... курс скорее мешает думать, чем помогает...."

smk != Shurmas ???

P.S это был первый пост smk на electronix ?!

P.S.2.
Цитата(ps1x @ Sep 9 2006, 23:36) *
Код

char user[10];              <--------- Я бы зарезервировал побольше места  :)  
user="Shurmas";            --------- иначе со временем придется менять ...
if (user == a.vr123.nm.ru) then
{
ban(user);
}
Go to the top of the page
 
+Quote Post
junoSynthesizer
сообщение Sep 10 2006, 09:27
Сообщение #44


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

Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397



Народ, харе флудить =)
я вот тоже читаю форум уже довольно давно, и этот "курс" у меня в печёнках сидит, человек его рекламирует похлеще чем владелец порно-сайта =) ну что поделать =)

проблема, ввиду которой был снова поднят пост - решена, поэтому говорю всем кто посмотрел - спасибо =)


--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
Go to the top of the page
 
+Quote Post

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

 


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


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