Перейти к содержанию
    

AvrUsb500 by Petka. продолжение

Petka, а когда планируется выход новой версии прошивки? Можно туда добавить мигание светодиодом при активности?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Petka, а когда планируется выход новой версии прошивки? Можно туда добавить мигание светодиодом при активности?

1) На днях появится прошивка с новой фичей, сейчас занимаюсь её отладкой.

2) Можно. А зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

2) Можно. А зачем?

 

Ну для наглядности что-ли :) все равно светодиод есть уже. Глазу приятнее и видно что прошивается :)

Кстати, для диагностики удобнее будет сделать мигание при активности MISO, тем что если камень дохлый мигать не будет ничего.

 

P.S. А название фичи в новой прошивке секрет пока? :)

Изменено пользователем simer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глазу приятнее и видно что прошивается :)

А программа-программатор не наглядно показывает, программируется или нет?

P.S. А название фичи в новой прошивке секрет пока? :)

Терпение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видеть:( ошибк 24

помогите плиз:(

я новичок :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

собрал, зашил прогер, перемычку перекинул. при включении мигает, при подключении камня - горит диод. но понипрог не хочет видеть:( ошибк 24

помогите плиз:(

я новичок :rolleyes:

 

PonyProg не поддерживает этот программатор для прошивки таргета

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, как надо правильно?

Я развел свою платку и изменил расположение сигналов

в порту C контроллера.

Изменил выводы в analog.h и spi.h,

а также контроллер и частоту в Makefile.

После компиляции получаю ошибку:

 

Compiling C: main.c

avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o

In file included from main.c:13:

timeout.h:12:1: warning: "F_CPU" redefined

<command-line>: warning: this is the location of the previous definition

main.c:816:1: error: macro "_cpl" requires 3 arguments, but only 2 given

main.c: In function '__vector_9':

main.c:816: error: '_cpl' undeclared (first use in this function)

main.c:816: error: (Each undeclared identifier is reported only once

main.c:816: error: for each function it appears in.)

make.exe: *** [main.o] Error 1

Изменено пользователем IURY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, как надо правильно?

 

main.c:816:1: error: macro "_cpl" requires 3 arguments, but only 2 given

main.c: In function '__vector_9':

main.c:816: error: '_cpl' undeclared (first use in this function)

где-то ошиблись в описании портов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

где-то ошиблись в описании портов.

Если я выбираю atmega48, то компиляция успешна.

 

Обозначил(в исходниках ничего не трогал, кроме контроллера и частоты) :

PC5 - mosi

PC4 - rst_adc

PC3 - target_rst

PC2 - miso

PC1 - sck

Atmega8

7372800 Hz

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

собрал ваш программатор на FT232BL и атмеге8. Атмегу прошил другим программатором от протоса. приподаче питания моргает, при подлючении камня загорается светодиод. На выходе 1 мГц не наблюдаю ни какой частоты. Она должна там присутствовать всё время? У протоса она там присутствует всё время, как тест правильной работы. И естественно соде вижен его не видит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я выбираю atmega48, то компиляция успешна.

 

Обозначил(в исходниках ничего не трогал, кроме контроллера и частоты) :

PC5 - mosi

PC4 - rst_adc

PC3 - target_rst

PC2 - miso

PC1 - sck

Atmega8

7372800 Hz

запакуйте zip'ом исходники, и выкладывайте сюда, посмотрю что там не собирается.

 

...приподаче питания моргает, при подлючении камня загорается светодиод. На выходе 1 мГц не наблюдаю ни какой частоты. Она должна там присутствовать всё время?

Нет, частота там присутствует только в режие "1MHz" по умолчанию программатор работает в режиме "fast".

И естественно соде вижен его не видит.

Ничего естественного. При правильной сборке программатор работает сразу. Пробовали заходить терминалкой на порт программатора (как написано в FAQ)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

запакуйте zip'ом исходники, и выкладывайте сюда, посмотрю что там не собирается.

Выкладываю исходники, которые компилировал.

source.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выкладываю исходники, которые компилировал.

Ваша правда.

Моя недоработка. Обновите файл "gpio.h"

gpio.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток!

После продолжительной работы выкладываю на общее обсуждение следующую версию прошивки программатора.

Основное и единственное отличие новой версии - поддержка "printf - отладки".

Что это такое? При отладке программ зачастую необходимо знать, в какой стадии выполнения находится программа. Закончила ли подпрограмма вычисления или нет? Чему равно значение некоторой внутренней переменной? В каком порядке выполняются составные части алгоритма и прочие задачи.

Большую часть этих задач позволяет решить аппаратный отладчик. Однако не у всех есть возможность использования аппаратных отладчиков. Цена, дополнительные разъёмы, программная поддержка отладчика, неудобство или неумение использования - всё это может препятствовать использованию аппаратных отладчиков.

Что предлагается взамен? Многие в качестве альтернативы используют для отладки debug_printf, "my_printf", библиотечный printf. Вставляя в интересующие точки своих программ для контроллеров что-то типа:

printf("test point #1");

 

printf("internal var 'speed' = %i \n", speed);

 

Обычно вывод функций printf настраивается на uart. Однако это тоже требует некоторых накладных расходов: дополнительные разъёмы, выделенный uart специально для отладки, требования к частоте тактирования.

Предлагается использовать для вывода отладочного "printf" пины контроллера, которые используются для его программирования (MOSI, MISO, SCK). Всё равно на стадии отладки программатор уже подключен к чипу, есть все необходимые разъёмы и подключения. Штатный uart при этом в большинстве случаев останется свободным!

 

Осталось выбрать 3х-проводный интерфейс для передачи данных от чипа к программатору. Для себя я выбрал следующие требования к интерфейсу:

1) Интерфейс должен быть полностью синхронным. (Снимаем требования к частоте контроллеров. Контроллеры могут спать, снижать свою частоту и т.д.)

2) Интерфейс должен быть дуплексным. (Хочется не только получать данные, но и отправлять)

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

4) В протоколе должно быть заложено выделение границ слов в передаваемом битовом потоке.

 

Из известных мне протоколов ни один не смог удовлетворить вышеперечисленным требованиям.

Пришлось изобретать велосипед протокол. Что получилось и предлагаю обсудить:

Протокол называется "abd-протокол". В нём используются 3 линии:

"a" - линия тактирования. Для мастера выход, для слэйва вход.

"b" - возвратная линия тактирования. Для мастера вход, для слэйва выход.

"d" - двунаправленная линия данных. Является как входом так и выходом для двух сторон. Между мастером и слэйвом должен быть подключен последовательный токоограничивающий резистор, для обеспечения надёжной работы в моменты переключения выводов вход/выход.

 

Мастер наблюдает за состоянием линии "b". Если линия "b" переключилась в то же состояние, что и линия "a", - значит слэйв уже принял свой бит данных на линии "d", переключил линию на выход и выдал очередной свой бит на линию "d". После этого мастер может прочитать очередной бит от слэйва и выставить на передачу очередной свой бит. После этого мастер переводит состояние линии "a" в состояние, противоположное линии "b". И процесс повторяется заново.

Это общая идея обмена. Теперь детали: данные передаются в каждую сторону как на возрастающем фронте клоков, так и на спадающем. По одному фронту передаётся очередной бит в сдвиговый регистр приёмника, а по другому фронту выдаётся признак конца слова (тот момент, когда из сдвигового регистра можно читать данные). Кроме того в протокол заложена возможность остановить клоки, когда данных ни у мастера ни у слэйва нет. Более подробное описание содержится в исходниках (Файлы "abd.c" и "abd.h").

 

Этот протокол был реализован, оттестирован на моделях, а затем и в реальном железе. В программатор "by Petka" добавлена реализация слэйва протокола "abd".

Итого:

Для того, чтобы добавить в свою программу возможность отладки, надо в список компилируемых файлов проекта добавить "abd.c" и "abd_putchar.c". В main добавить:

 

#include "abd_putchar.h"

FILE abd_file = FDEV_SETUP_STREAM(abd_master_putchar, NULL, _FDEV_SETUP_WRITE);

int main(void){
    stderr = stdout = stdin = &abd_file;

Всё.

Теперь в любом месте можно просто писать:

        printf("Hello World! №%i\n", num);
        num++;

В прикрепленном к посту файле "abd_demo.zip" демка использования.

 

Как увидеть получившийся "Hello World!" ?

Прошиваете чип. Открываете терминалкой ком порт программатора, замыкаете перемычку "1Mhz" (программатор должен быть в режиме "fast"). И наблюдаете свой "Hello World!"!

Исходник сделан для winavr. С небольшими доработками будет работать и для любого другого компилятора. Скоро выложу портированные версии для других компиляторов.

abd_demo.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...