Jump to content

    

Petka

Свой
  • Content Count

    1438
  • Joined

  • Last visited

Posts posted by Petka


  1. ...В шапке 8мега, у меня на 16 так и будут номера этих выводов?

    Названия выводов так и будут сохраняться.

    Т.е. я имею ввиду что там Target: atmega8--это так и должно быть?

    На это можете не обращять внимание.

    Видимо надо выбрать из PA0-PA7?

    Именно.

    Тогда PA3(34 нога)Видимо так?

    Если выберете эту ногу, то в RESETADC надо прописать номер 3.

     

  2. Спосибо за внимание!Petka,всё скомпилировал под свой кварц и все выходы,кроме RESETADC .Я так и не понял как там обозначается порт и пин?Я не программист,поэтому беда.

    RESETADC это номер канала АЦП. Назовите пин, к которому у вас подключена эта цепь и я помогу выбрать правильный номер канала АЦП.

  3. ...появилось желание и дошли руки попробовать ABD-Protocol. В прошивке 8 он поддерживается?

    ....

    Он есть только в 7 версии прошивки. Работает хорошо. Если будет востребованность добавлю в "крайнюю" прошивку.

  4. ... На 88-й меге никак не хочет работать, вернее работает, на кок-то странно. Определяется, все ок, но при попытке что-либо вычитать/прошить начинает хаотично мигать светодиодом, и через несколько секунд отрубается. Вот на нем (который на 88-й меге) светодиод при включении мигает 6 раз после чего постоянно светится без подключения к таргету.

    Проверьте закоротки/непропаи. Отмойте плату от флюса. Ещё раз перепрошейте программатор.

  5. Да, программатор на меге 8

    Что-то вы мутите. Если программатор на меге 8, то R9 должен иметь номинал 100кОм. Значение напряжения на AREF должно быть равно 2.56 В.

    Так что за чип в программаторе? И каков номинал R9 на самом деле?

  6. R9 - 47k, напряжения следующие:

    AREF 1,1V

    R8/R9 - без подключения устройства 0V, с подключенным таргетом 0,866V

    С цепью RST_ADC тогда у вас всё в порядке.

    Ещё при подключении к студии программатор определяется все Оk, НО ПРИ ПОПЫТКЕ ЧТО-ЛИБО ВЫЧИТАТЬ, ИЛИ прошить начинает хаотично моргать светодиодом и затем отрубается...

    Проверяйте питание программатора. Перекинута ли перемычка "программирования программатора" обратно? Повторите эксперимент с закороченной катушкой L1.

    Petka, спасибо, что откликнулись. На 8 Меге все работает со свистом, а 88-я уперлась, и все тут...

    На меге 8 в программаторе?

  7. Прошивка залита правильно, по крайней мере, то, что было в файле!

    ANDREW, - твой лог по 8 меге, у меня - 88-я, читай внимательно!

    Petka, [0m[2J[0;0f находится в прошивке начиная с адреса 0000АЕ, может там стоит кпоковыряться?

    Замерьте мультиметром напряжения в цепи "RST_ADC" (между R8 и R9). При подключенном программируемом устройстве и при отсоединённом программаторе. Ещё замерьте напряжение на ноге AREF.

     

    P.S. Какой номинал резистора R9 ?

  8. Простите если глупый вопрос.

    Скачал с сайта ATMEL'а - ATMEL STUDIO 6 (IDE) и замечательно ей пользуюсь и пишу программы на C\C++...но я знаю что многие "пишут" в IAR'e.

    Чем IAR лучше? можно в кратце.

     

    Заранее спасибо)))

    В разделе форума "GNU/OpenSource средства разработки для avr/arm/mips" IAR ничем не может быть лучше.

  9. Петька собрал давно Ваш программатор с Вашей помощью, прошивал во сонвном Amega 8 TQFP без проблем, а Atmega 8 PDIP прошить вашим программатором не получается. В чем проблема объясните?

    Для программатора эти чипы ничем не отличаются. Посмотрите на различия в подключении выводов программирования. Нет ли других внешних устройств на линиях программирования? Есть ли возможность проверить на другой меге в DIP корпусе?

  10. Звучит правдоподобно, но вот отсутствие (или моя неспособность найти) этой информации в даташите меня угнетает. Если уж вставлять задержки, то надо знать, сколько. Шаманить-то не хочется.

    .....

     

    FIOPIN Fast Port Pin value register using FIOMASK. The current state

    of digital port pins can be read from this register, regardless of

    pin direction or alternate function selection (as long as pins are

    not configured as an input to ADC). The value read is masked

    by ANDing with inverted FIOMASK. Writing to this register

    places corresponding values in all bits enabled by zeros in

    FIOMASK.

    Important: if an FIOPIN register is read, its bit(s) masked with

    1 in the FIOMASK register will be read as 0 regardless of the

    physical pin state.

    Последние три слова подтверждают то, что при чтении этого регистра подразумевается именно считывание физического состояния цифрового порта. В независимости от того, настроен порт на вход или на выход.

    Читаем дальше.

    Writing to FIOSET/FIOCLR vs. FIOPIN

    Writing to the FIOSET/FIOCLR registers allow a program to easily change a port’s output

    pin(s) to both high and low levels at the same time. When FIOSET or FIOCLR are used,

    only pin/bit(s) written with 1 will be changed, while those written as 0 will remain

    unaffected.

    Writing to the FIOPIN register enables instantaneous output of a desired value on the

    parallel GPIO. Data written to the FIOPIN register will affect all pins configured as outputs

    on that port: zeroes in the value will produce low level pin outputs and ones in the value

    will produce high level pin outputs.

    Запись в этот порт имеет смысл только для пинов настроенных на выход.

     

    А теперь самое интересное:

    Reading the FIOxSET register returns the value of this register, as determined by

    previous writes to FIOxSET and FIOxCLR (or FIOxPIN as noted above). This value does

    not reflect the effect of any outside world influence on the I/O pins.

    Вот этот регистр уже отражает именно внутреннее состояние порта (состояние выходного драйвера) на вывод.

    Таким образом ваш код должен был иметь вид:

    FIOPIN = FIOSET ^ MY_MASK;

    Таким образом не будет никакой "аналоговой" обратной связи по физическому уровню на пине порта.

     

     

    P.S.

    В начале работы с LPC сам столкнулся с такой фичей.

    Это побудило просто внимательно перечитать документацию. После прочтения становится всё очевидно.

  11. к сожалению не помогло

    при соединении AREF с землей через конденсатор светодиод гаснет совсем

    ....

    Он и должен гаснуть. Зажигается только при подключении программируемого контроллера.

  12. прошил фьюзы, все ок, программатор видится в терминальном режиме

    но при подключении программатора к USB светодиод, моргнув 6 раз, продолжает моргать, но уже с большей частотой

    цепи питания проверил, все ок. мерцание светодиода прекращается после того как отключаю резисторы R6, R8 и R9

    причем если впаять на место R6 и R8, то иногда мерцание прекращается и светодиод стабильно горит

    если же к ним добавить еще и R9, то стабильного горения добиться невозможно

    дело не в резисторах - их я заменял, ничего не меняется

    при выпаянных резисторах R6, R8 и R9 мерцание вызывает прикосновение к РС2 (25 нога) пальцем, иголкой или изолированной проволочкой.

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

    Припаяйте к выходу vref конденсатор на 0,1 мкф к земле.

  13. atmega48pa вернуть к жизни пока не удалось, отложил его до лучших времен. сечас поставил atmega8-16au

    прошил программу, теперь программатор постоянно мигает светодиодом, причем с разной частотой, сначала редко (раз в 2 сек) потом чаще (раз в 0,5 сек)

    Проверьте питание меги.

    Проверьте RESET меги (перемычка после программирования программатора была перекинута в основное положение?)

    фьюзы еще не прошивал

    для atmega8 фьюзы нужно установить lfuse:0xd7 hfuse:0xd9?

    и должен ли так вести себя светодиод? ведь по программе он должен моргнуть 6 раз и погаснуть? в чем может быть причина?

    Ещё раз пересмотрел datasheet.

    Правильное значение для мега8 LOW = 0x1F, HIGH = 0xC9 (для avrdude "-U lfuse:w:0x1f:m -U hfuse:w:0xc9:m")

     

  14. я правильно понимаю, что согласно фьюзам lfuse:0xdf и hfuse:0xdc мне нужно подать сигнал генератора с частотой 8-16 МГц? RC-цепочка или простейший генератор на К155ЛА3 подойдут?

    Согласно этим фузам AVR пытается завести low-swing резонатор. Однако это по каким-либо причинам не удаётся. В этой ситуации можно самому подать любую частоту на вывод xtal1. Если вы собирали программатор с микросхемой ft232bm, то можно взять частоту с кварца ft'шки. Или с самодельного генератора.

  15. спасибо

    если можно, еще пару вопросов:

    1. фьюзы менять придется уже в новом контроллере? к прописанным фьюзам я уже не получу доступ?

    2. вы ведь сами написали ставить фьюзы "-U lfuse:w:0xdf:m -U hfuse:w:0xdc:m". что изменилось?

    1. Подайте на вывод программируемого контроллера частоту с какого-нибудь генератора. И запрограммируйте фузы заново.

    2. Ничего не не изменилось фузы выше приводились для low-swing резонаторов. Визимо ваш не заводится при таких настройках. Поэтому рекомендую попробовать full-swing.

  16. .....

    потом прошил фьюзы

    avrdude -p m48 -c stk500_by_petka -P \\.\com13 -i 10 -B 10 -b 9600 -U lfuse:w:0xdf:m -U hfuse:w:0xdc:m

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

     

    подскажите в чем проблема?

    "lfuse:w:0xdf:m"

    Поменять на

    "lfuse:w:0xd7:m"

  17. Это совершенно очевидно. Один поток - цели выполняются последовательно.

    Очевидно? А почему не в обратном порядке? А почему не в алфавитном порядке? А почему не в порядке расположения файлов в файловой системе?

    Не взаимоисключающих, а последовательных.

    Именно взаимоисключающих. Про последовательность см. выше. Так же прошу ссылку на документацию, где оговорен порядок выполнения целей.

    ....

    Короче, вы меня не переубедите. Инструмент этот (make) - кривой. Уж сколько времени я им пользуюсь, а ощущение кривизны не проходит, а только усиливается.

    Жаль.

     

    Тут сделал пару тестов:

    all: first second third
    
    first:
        sleep 3
        echo first
    
    second:
        sleep 2
        echo second
    
    third:
        sleep 1
        echo third
    
    .PHONY: first second third

     

    $ make

     

    sleep 3
    echo first
    first
    sleep 2
    echo second
    second
    sleep 1
    echo third
    third

     

    make -j 3

     

    sleep 3
    sleep 2
    sleep 1
    echo third
    third
    echo second
    second
    echo first
    first

     

    Если нам важен порядок немного патчим кривой makefile без создания промежуточных целей:

    all: first second third
    
    first:
        sleep 3
        echo first
    
    second: | first
        sleep 2
        echo second
    
    third: | second
        sleep 1
        echo third
    
    .PHONY: first second third

     

    make -j 3

     

    sleep 3
    echo first
    first
    sleep 2
    echo second
    second
    sleep 1
    echo third
    third

     

    Вуаля!

    Может кому-нибудь будет полезно.

  18. Пока не появился ключик -j - вполне себе гарантировалось:)

    После этого утверждения была бы уместна ссылка на документацию какой-то определённой версии make. С подтверждением этого смелого утверждения.

    Нет. В моём примере (build: clean all) - как раз-таки ничего не собиралось. Ибо сначала выполнялась цель all, а потом - clean. В результате после выполнения make build - никакого elf-а не было.

    ...

    В этом примере для цели build необходимо удовлетворение двух взаимоисключающих подцелей. Вы так построили сценарий для make. При чём тут инструмент?

    Мне вся эта ситуация напоминает появление процессоров с "Hyper-threading". Тогда программисты не были готовы к настоящему параллельному выполнению потоков и отсутствие всяких "spin_lock" приводило к непредсказуемым результатам.