А чего, такого чуда как внешние метки кодевиженский ассемблер не понимает? Гнутый скажем ассемблер все неизвестные метки считает внешними. Так что из ассемблерного файла "видны" сишные переменные и функции. И не надо как в каменном веке адреса ручками писать (и вообще знать, куда потом линкер какие переменные сложит)
Проблема с AT45db161 Использую 8выводную версию в SOIC. Питание 3.5 ( и для памяти и для МК). Почему то при откл. - вкл. питания в СТРАНИЦУ 1 (вторую то есть) пишется какой-то мусор поверх моих данных. что делать? Хидер для памяти использую от avr123(спасибо ).
Подскажите что в хидере и как надо поменять чтобы запись и чтение новой информации начиналась с 3ей страницы всегда?
как рассчитать какая будет задержка между вызовом прерываний от таймера при частоте генератора 7МГц
Судя по вопросу, вы - новичок, поэтому я отвечу тоже "на пальцах". Таймер - такая штука, которая может считать тактовые импульсы и внешние импульсы. Остановимся пока на тактовых. Он считает их от того значения, которое в нем загружено (если обнулить таймер - то от нуля) до максимально возможного числа (если это 8 битный - то до 255, если 16 битный - то до 65535). У таймера есть такая штука, называется предделитель. Грубо говоря, он определяет каждый ли тактовый импульс надо считать. Можно считать каждый такт, можно каждый восьмой, шестнадцатый, шестьдесят четвертый, двести пятьдесят шестой, тысяча двадцать четвертый. Также у таймера есть несколько прерываний, вас пока интересуют прерывания по переполнению. Это прерывание надо разрешить в регистре масок прерываний таймеров. Также надо разрешить глобальные прерывания. Только после этого когда таймер переполнится, программа уйдет на вектор обработки прерывания от таймера. Соответственно там должен стоять безусловный переход на подпрограмму обработки прерывания, которая заканчивается не простым возвратом, а возвратом из прерывания.
Этой информации достаточно. Теперь вы можете все рассчитать сами. Удачи.
Добавлено спустя 1 минуту 53 секунды:
kalexi писал(а):нужны формулы для расчета констант для таймера T0 Attiny13 или калькуляторы.
Калькуляторы не нужны, а формулы выводятся при наличии понимания сути.
2Radist Спасибо за столь полный ответ, но к сожалению я это знаю. Просто есть одна проблема. Допустим у меня ATtiny13 с 8-разрядным таймером, частота внутреннего генератора 1МГц. Следовательно если OCR0A=200 и предделитель отключен, кол-во прерываний насчитывается следующим образом: 1 000 000Гц / 200 = 5 000Гц = 5Кц.
Теперь в Протеусе я запускаю симуляцию, но в динамиках слышу щелчки.
Добавлено спустя 4 минуты 15 секунд: А, все, проблема решена. Просто не знал, что Протеус по умолчанию ставит частоту генератора равной 9,6Мгц.
Добавлено спустя 4 минуты 3 секунды: Кстати, хотел спросить: нужно ли в основном цикле что-то писать (ну для уменьшения нагрузки на процессор), а то я видел функцию следующего вида, вот и пришла мне в голову эта мысль:
Здравствуйте. Нужно сделать аппаратный ШИМ на Attiny2313. Немного почитал разные источники и вроде сделал 8-битный Fast PWM. Проверьте все ли правильно. Если да, то как мне сделать ФНЧ для этого ШИМа. Вообще задача состоит в том, чтобы управлять скоростью моторчиков у "робота".
Подскажите, что не так делаю? Хочу запустить 36 кГц на таймере Attiny2313! С частотой вроде подгадал в протеусе с помощью ICC))) Почему, когда ногу конфигурирую ногу на вход на ней есть 1?
единица будет, если включён внутренний подтягивающий резистор... название регистров не помню, но в ICC есть мастер настройки периферии, посмотрите там чекбоксы внимательно.