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

    

Who_are_you?

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Who_are_you?

  • Звание
    Частый гость
  • День рождения 30.07.1958

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Донецк

Посетители профиля

1 140 просмотров профиля
  1. mega128 + какой LCD 320x240 ?

    Мне понравились. Спасибо. Дорого, но для быстрого решения - это лучшее, что пока есть в вариантах. А Вы работали с китайцем или поляками?
  2. mega128 + какой LCD 320x240 ?

    Спасибо всем за советы Хотел подобрать индикатор приблизительно 4 дюйма взамен WX320240C0-TFH-V#P021, но понял, что долгая история, т.к. много инфы и готовых подборок нет. Шарп дорогие (8000руб) да и шлейфы ленточные, но экран идеально подходит. А до 1000 руб только 3,2 дюйма типа HY32D на STM32 перехожу, но сейчас нужно быстро заменить LCD на Меге 128. Динамики нет - максимум слайд-шоу графиков по нажатию клавы. Сенсор не используется - сверху толстое оргстекло: требование защиты для шахт.
  3. mega128 + какой LCD 320x240 ?

    Была куплена фирмы WINSTAR партия индикаторов WX320240C0-TFH-V#P021 с ним возились четыре разработчика, но результаты плачевные - контрастность отвратительная: фон не белый, а светло-серый и вместо черного темно-серое. Посоветуйте индикатор 320x240, чтобы потянула mega128 с рабочей областью экрана в ориентировочном размере 80х60 мм Было бы хорошо управлять не 16, а 8 разрядами. Нагрузка на mega128: - LCD 320x240; - клава 3х6; - внешнее ОЗУ; - обмен по UART c протоколом Габаритные размеры могут быть больше.
  4. Странно!!! Заработало. Проверял в AVRStudio
  5. Было большое число. После обработки уменьшилось и теперь влазиет в 16 бит. Чтобы дальше работать с меньшими байтами Как Long (32 бита) перевести в int (16 бит)? long ll; int rr; rr = (int) ll; - не работает: rr = 0
  6. Как 4 байта в unsigned long ?

    Спасибо, работает. #define BUFFER_SIZE 255 // buffer for receving/sending messages unsigned char RxBuf [BUFFER_SIZE]; // union {unsigned long isLong; unsigned char isCharArr[4]; } freeMemSD; char buffe[11]; // RxBuf[11] ... RxBuf[14] - получаем заранее со всеми 255 байтами RxBuf[11] = 0x01; // Highest RxBuf[12] = 0x01; // Higher RxBuf[13] = 0x01; // Hi RxBuf[14] = 0x01; // Lo freeMemSD.isCharArr[3] = RxBuf[11]; freeMemSD.isCharArr[2] = RxBuf[12]; freeMemSD.isCharArr[1] = RxBuf[13]; freeMemSD.isCharArr[0] = RxBuf[14]; ultoa(freeMemSD.isLong, buffe, 10); LCD_WriteText (16,buffe); // выводит символы на экран Получается freeMemSD.isCharArr[3] = RxBuf[11]; freeMemSD.isCharArr[2] = RxBuf[12]; freeMemSD.isCharArr[1] = RxBuf[13]; freeMemSD.isCharArr[0] = RxBuf[14]; ultoa(freeMemSD.isLong, buffe, 10); Вместо rr = ((unsigned char)RxBuf[11]<<8) | RxBuf[12]; // Hi xx = ((unsigned char)RxBuf[13]<<8) | RxBuf[14]; // Lo freeMemSD = rr; // freeMemSD = (freeMemSD <<16)| xx; // ultoa (freeMemSD,buffe,10); // long в char А может можно RxBuf[11] ... RxBuf[14] сразу в buffe ?
  7. Как 4 байта в unsigned long ?

    Так работает: #define BUFFER_SIZE 255 // buffer for receving/sending messages unsigned char RxBuf [BUFFER_SIZE]; // unsigned long freeMemSD; char buffe[11]; unsigned int xx,rr; RxBuf[11] = 0x00; // Highest RxBuf[12] = 0x01; // Higher RxBuf[13] = 0x00; // Hi RxBuf[14] = 0x02; // Lo rr = ((unsigned char)RxBuf[11]<<8) | RxBuf[12]; // 0x0001 xx = ((unsigned char)RxBuf[13]<<8) | RxBuf[14]; // 0x0002 freeMemSD = rr; freeMemSD = (freeMemSD <<16) | xx; // '65538' (0x00010002) ultoa(freeMemSD, buffe, 10); LCD_WriteText (16,buffe); // выводит символы на экран Но как-то не то и для AVR длинно. Может можно без long и короче?
  8. Как 4 байта в unsigned long ?

    Написано: Нужно 4 байта всунуть в long и отобразить на LCD. unsigned int xx,rr; RxBuf[11] = 0x00; RxBuf[12] = 0x01; RxBuf[13] = 0x00; RxBuf[14] = 0x02; rr = ((unsigned char)RxBuf[11]<<8) | RxBuf[12]; // 0x0001 xx = ((unsigned char)RxBuf[13]<<8) | RxBuf[14]; // 0x0002 freeMemSD = (rr<<16) | xx; // почему не '65538' (0x00010002), а '2'
  9. Как 4 байта в unsigned long ?

    Есть ли в WinAVR готовые функции? Нужно 4 байта всунуть в long и отобразить на LCD. Готовых решений в Инете не нашел. // ... void LCD_WriteText (char font, char * text) // функция отображения текста // ... #define BUFFER_SIZE 255 // buffer for receving/sending messages unsigned char RxBuf [BUFFER_SIZE]; // unsigned long freeMemSD; char buffe[11]; RxBuf[8] =1; // Highest RxBuf[9] =2; // Higher RxBuf[10] =3; // Hi RxBuf[11] =4; // Lo // freeMemSD <-- (Highest, Higher, Hi, Lo ); // buffe <-- freeMemSD; LCD_WriteText (16,buffe); // выводит символы на экран // может можно как-то обойтись без long ?
  10. Киевский район г. Донецк Ищем человека, который: Пишет программы для микропроцессоров и компьютера (для разрабатываемого устройства). Умеет работать с платами и средой разработки Arduino, микроконтроллерами Atmel и STMicroelectronics. Для разработки проекта, который включает: сенсорный LCD дисплей, память microSd, конвертер UART-RS485, обмен данных по RS485, USB, часы реального времени, ОЗУ, 12 разрядный АЦП, 12 разрядный ЦАП, узлы усиления и фильтрации аналогового сигнала. Оплата: ставка в зависимости от занимаемой должности + добавка за реальную работу. Возможна удаленная работа. Нюансы на почту.
  11. Глюки программирования mega128

    Из Даташит: Внутрисистемно программируемая флэш-память программ ATmega128 содержит 128 кбайт внутренней внутрисистемно перепрограммируемой флэш-памяти для хранения программы. Поскольку все AVR-инструкции являются 16 или 32-разр., то флэш-память организована как 64 кбайт х 16. Для программной защиты флэш-память программ разделена на два сектора: сектор программы начальной загрузки и сектор прикладной программы. Регистр RAMPZ обычно используется для указания той страницы ОЗУ размером 64 кбайт, к которой выполняется доступ через Z-указатель. Т.к. ATmega128 не поддерживает память на статическом ОЗУ размером свыше 64 кбайт, то данный регистр используется только для выбора страницы памяти программ, доступ к которой осуществляется с помощью инструкций ELPM/SPM. Различные установки бита RAMPZ0 имеют следующий результат: RAMPZ0 =0: Инструкции ELPM/SPM осуществляют доступ к памяти программ в диапазоне адресов $0000 - $7FFF (младшие 64 кбайт) RAMPZ0 =1: Инструкции ELPM/SPM выполняют доступ к памяти программ в диапазоне адресов $8000 - $FFFF (старшие 64 кбайт) Обратите внимание, что действие инструкции LPM не зависит от установки RAMPZ. Получается программно нужно как-то расширять возможности записи программ больше 64к или все приехали: на данном микроконтроллере дальше не уедешь?
  12. Глюки программирования mega128

    И как обойти это или в WinAVR не возможно? В конце концов не может же 50% висеть в воздухе!