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

leokri

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

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

  • Посещение

Репутация

0 Обычный
  1. Спасибо всем ответившим. Решил проблему самостоятельно немного изменив программу работы с I2C Работает практически с любым ЕЕPROM выше 1кбайт. Кому интересно могу скинуть сюда. :08:
  2. Знатоки! Help my. Кто может дать код для работы шиной I2C c AT24C32 (AT24C64) для CVavr, если такое возможно с этим компилятором.
  3. Спасибо всем откликнувшимся. Все пошло и заработало!!! :08: Я заклинился на том что функции обработки прерываний пишутся первыми. Оказалось достаточным переменную key_0 объявить до описания функции обработки прерывания и все встало на свои места. Еще раз прошу подсказать, кто знает, как объявить массив типа char в области Flash (размер большой до 8 Кбайт) так чтобы он не писался в SRAM, Atmega32. Компилятор CVavr. И если можно особенности работы с этим массивом ( програмное чтение, запись, редактирование), можно ссылки. где можно прочитать об этом.
  4. CVavr. Это и есть обработка прерывания INT0
  5. Знатоки помогите! Написал код // External Interrupt 0 service routine interrupt [EXT_INT0] ext_int0_isr(void) { char i=0,n=0,key_0=0;//Начальные значения счетчиков PORTB.3=1,delay_ms(30);//атидребезговая пауза+beep PORTB.3=0;//Конец beep while(PIND.2)//выполнять пока PIND.2=1 {PORTD=((i)<<4),n=i,key_0=n; if(!PIND.2){break;}//если PIN.2=0 покинуть цикл PORTD.3=1,n=(i+16),key_0=n;//включить дешифратор if(!PIND.2){break;}// если PIN.2=0 покинуть цикл i++; } PORTD.3=0,i=0,n=0;//Сбросить счетчики и дешифратор PORTD=((0x0)<<4);//сбросить выходы PORT.4_7 GIFR|=1<<6;//Выставить 1 в регистре флагов(INT0) //return (key_0);// не работает ругается } обслуживание клавы через дешифраторы(31 кнопка) как правильно написать чтобы возвращалось значение key_0
  6. Извиняюсь за назойливость и прошу не пинать (только учусь) Если объявить массив во внутренней EEPROM компилятор CVavr принимает его только как глобальный. а как его потом редактировать? Програмно можно или нет?
  7. Я имел в виду внутренняя EEPROM, компилятор CVavr. Можно и внешнюю но думаю что с ней будет сложнее ( придется использовать шину I2c). Если знаете как то подскажите пожалуста. С уважением Леонид.
  8. Вопрос к знатокам. Если открыть массив в EEPROM, то его нужно обьявить как глобальный. А если его нужно редактировать тогда как.
  9. Спасибо за ответ. При постаговке вопроса насчет выделения области в Flash Atmega32 имелось в виду что программа последовательно побайтно выводит данные из этой области скажем в порт А, по командам старт и стоп внешнего устройства - это основной режим. Иногда возникает необходимость подредактировать данные . Т.Е. включить режим редактирования и с прицепленой клавиатуры выборочно изменить данные в области (естественно наличие LCD) . По предварительным прикидкам 32к должно хватить и для программ и для данных.Я пытался открыть массив сразмером 8К но СVavr ругается (видимо хочет открывать массив в SRAM) . По последнему вопросу что лучше использовать i2c или twi микросхема 24с64 ?
  10. ATmega32

    Вопросы к спецам. 1.) В WinAVR есть хорошая функция sizeof (#include pgmspace). Нет ли чего похожено в CVavr, ели есть то как называется, если нет то нельзя-ли ее как-то пристегнуть к CVavr. 2.) Можно ли в ATmega32 выделить область из FLash размером до 8 Кбайт чтобы использовать под данные которые изредка нужно редактировать (оснвная задача чтение и выдача этих данных в порт скажем PORTA ). Если можно то пожалуста пример на Си 3.) Если вариант по второму вопросу отсутствует то кто может подсказать кусок кода на Си для работы протоколом i2c с микросхемой 24с64. Заранее благодарен. Леонид е-mail [email protected]
×
×
  • Создать...