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

John851

Участник
  • Постов

    50
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о John851

  • Звание
    Участник
    Участник
  1. Работаю на модуле Q2687. Пытаюсь передать по I2C несколько байт, вот исходник: #include "adl_global.h" #include "generated.h" #include "main.h" #include "adl_traces.h" s32 I2C_handle; #define WRITE_BUFF_SIZE 4 u8 WBUFF[WRITE_BUFF_SIZE]={0x20,0x6C,0x3F,0x5D}; adl_busI2CSettings_t I2Cconf = { 0xAA, ADL_BUS_I2C_CLK_STD, ADL_BUS_I2C_ADDR_7_BITS, ADL_BUS_I2C_MASTER_MODE }; adl_busAccess_t I2Caccess = { 0x00, //general call 0x00 }; void main_task (void) { //subscribe to I2C bus service I2C_handle=adl_busSubscribe(ADL_BUS_ID_I2C, 1, &I2Cconf); TRACE((2, "Writing to the bus")); s32 resp = adl_busWrite(I2C_handle, &I2Caccess, WRITE_BUFF_SIZE, WBUFF); TRACE((2, "%d",resp)); } В результате, хэндлер норм создается, на шину ничего не отправляется, а ответ от функции adl_busWrite приходит -2, то есть ошибочный параметр. Все вроде по примеру, а работать не хочет.
  2. нет, как выход, по даташиту
  3. Внешние прерывания AVR

    Добрый вечер, у меня на меге 8 работает ацп + необходимо обрадатывать внешнее прерывание от пина INT0. Я сделал чтоб срабатывало по спаду, на порт вывожу 1, пин подтянул к +5 через 10 ком, к этому же пину подцепил кнопку другой конец которой на земле - т.е. когда кнопка нажата уровень на пине INT0 просаживается на землю и происходит прерывание. Проблема в том что если зажать кнопку то ацп начинает врать буквально на десятые и сотые миливольта, этого достаточно чтобы заметно испортить показания с датчиков. У меня закралось подозрение что я неправильно организовал схему срабатывания, помогите плиз организовать правильно прерывание...
  4. что вы хотите услышать? я же четко проблему объяснил, если кому то влом ответить или почитать я не виноват..
  5. К сожалению мне тут не поможет оператор взятия адреса от адреса
  6. эм дак вот и обращаюсь сюда за знаниями, все только и могут посылать в буквари.. Я передаю в качестве аргументов элементы массива типа char, как мне известно - имя массива со смещением это и есть указатель - ок пробуем, пишет: ../SLAVE.c:110: warning: passing argument 2 of 'start_single' makes pointer from integer without a cast - о чем здесь речь? пробую преобразовать указатели к типу char: (char *) mas[0] - ок пробуем, пишет: ../SLAVE.c:110: warning: cast to pointer from integer of different size. Вы бы не могли пояснить что происходит
  7. так я тоже делал, токо вот потом не смог разобраться в ворнингах... вообщем я в эту функцию на место arg1 и arg2 подаю элементы массива типа char, а он мне в воринигах пишет ../SLAVE.c:110: warning: passing argument 2 of 'start_single' makes pointer from integer without a cast и так для каждого аргумента.
  8. Добрый вечер, забыл как возвращать сразу несколько аргументов из процедуры... я пробовал что то типа void func (char &arg1, char &arg2) { ..... arg1=val1; arg2=val2; } но компилятор такого не принял...
  9. хм, а если я создам массив большой >1 Кб а памяти ОЗУ у меня всего 1Кб, тогда чего будет динамическая подгрузка данных из флэши?))
  10. хм, в чем разница объявления глобальной переменной в модуле? int abc; static int abc; Разницы ведь никакой, переменная так и останется глобальной в пределах видимости модуля, дак зачем тогда еще и static прописывать?
  11. Еще немного про ОЗУ: А как происходит работа с ОЗУ? Переменные туда попадают при каждом старте МК или зашиваются при прошивке? Почему такой маленький объем этой памяти? что означает спецификатор inline перед функцией? как это отразится МК, т.е. она будет какая то особая?
  12. абсолютно все переменные попадают в ОЗУ? или есть исключения?
  13. Добрый день, в какой памяти AVR хранится переменная объявленная со спецификатором static? есть ли в avr libc (поставляемой вместе с WinAvr) атомарная операция nop?
  14. я конечно могу выложить исходники, но не вижу в этом смысла, так как это библиотеки с моими небольшими доработками: на меге используется библиотека i2c из AvrLib (без с!) а на тини апликэйшен ноут от атмела, соответственно Using USI as an i2c slave
  15. да я хотел уже было эту функцию основательно проверить, но времени пока нет на проверку
×
×
  • Создать...