|
проблема с ATmega16, помогите новичку |
|
|
|
Sep 8 2006, 19:08
|
дятел
    
Группа: Свой
Сообщений: 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 ............................... при этом в симуляторе может все работать
|
|
|
|
|
Sep 8 2006, 20:50
|
Частый гость
 
Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133

|
Если не ошибаюсь, то когда выполняется чтение portD то чтение происходит из управляющего выходом регистра, при чтении pinD читается состояние физической линии, прошедшее синхронизацию, следовательно при исправной цепи и достаточном времени, работать должно идентично с обоими командами. Я бы всетаки использовал одинаковые обращения. Предпринял бы следующее:
*Проверил бы ассемблерный код, во "что" он там скомпилировал. *Проверил бы последовательность инициализации таймера. *Попробовал бы код на другом кристалле (лучше менее навороченном)
Получается, что таймер стартует с параметрами
Кажись нашел ваш трабл сначала надо грузить старшую часть потом младшую , а не на обарот об этом в даташит сказано !!!, думал вы знаете
|
|
|
|
|
Sep 8 2006, 21:04
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Gennadiy_ @ Sep 9 2006, 00:50)  Если не ошибаюсь, то когда выполняется чтение portD то чтение происходит из управляющего выходом регистра, при чтении pinD читается состояние физической линии, прошедшее синхронизацию, следовательно при исправной цепи и достаточном времени, работать должно идентично с обоими командами. Я бы всетаки использовал одинаковые обращения. в даташите для чтения пинов даже при програмной установке ВСЕГДА используется PINx (почему-то). Результат чтения из PORTx вообще не описан... Если мне не изменяет память, на эти грабли я уже наступал При этом в симуляторе все ОК. Как работает чтение из PORTx для меня так и осталось загадкой (может быть задать этот вопрос atmel  ).
|
|
|
|
|
Sep 8 2006, 21:22
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Gennadiy_ @ Sep 9 2006, 01:10)  Мне почемуто помнится, что гдето я видел описание этой разницы, или ктото мне рассказывал это. Вероятно вот здесь: В.В.Сташин А.В.Урусов О.Ф.Мологонцева "Проектирование цифровых устройств на однокристальных микроконтроллерах" Только на AVR все чуть-чуть подругому.
|
|
|
|
|
Sep 8 2006, 23:31
|
Местный
  
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Sep 9 2006, 10:05
|
Частый гость
 
Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397

|
2 Gennadiy_
спасибо вам огромное! я действительно как то не обратил внимание на то что сначала надо инициализировать верхнюю часть 16 разрядного регистра счёта!
всё заработало!
--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
|
|
|
|
|
Sep 9 2006, 10:42
|
дятел
    
Группа: Свой
Сообщений: 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", а на схему я и не смотрел. А глюк у меня был кажеться связан с этим: ", физическая линия может при этом иметь другое состояние"
|
|
|
|
|
Sep 9 2006, 19:36
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Код char user[10]; user="Shurmas"; if (user == a.vr123.nm.ru) then { ban(user); } правильная конструкция?
|
|
|
|
|
Sep 9 2006, 20:28
|
дятел
    
Группа: Свой
Сообщений: 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); }
|
|
|
|
|
Sep 10 2006, 09:27
|
Частый гость
 
Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397

|
Народ, харе флудить =) я вот тоже читаю форум уже довольно давно, и этот "курс" у меня в печёнках сидит, человек его рекламирует похлеще чем владелец порно-сайта =) ну что поделать =)
проблема, ввиду которой был снова поднят пост - решена, поэтому говорю всем кто посмотрел - спасибо =)
--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|