Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: "Курсовой макет"
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Dj Kitt
Доброго времени суток господа!!!

Делаю велокомпьютер(Скорость, лаг)

хочу использовать графический lcd от трубки Ericsson A2618s....
Разобрал телефон, снял нежно матрицу и присел.... glare.gif
В самом толстом месте ЖК-матрица имеет толщину ~2.17 мм, выполнена она на стекле в следствие
чего "просвечивается" насквозь....
Всё что нашел из надписей на матрице - RB129B .... help.gif
Сверху нанесено напыление 6-ти контактов
Как разобраться какой за что отвечат???? ohmy.gif ohmy.gif ohmy.gif
Rst7
Так делал бы прямо из Эрика, там внутри AVR wink.gif
Dj Kitt
Цитата
Так делал бы прямо из Эрика, там внутри AVR


Не ответ....
Был бы Эрик рабочим я бы его не разбирал.... blink.gif
Anton_13
Цитата(Dj Kitt @ Jun 3 2006, 16:31) *
Как разобраться какой за что отвечат???? ohmy.gif ohmy.gif ohmy.gif


http://electronix.ru/forum/index.php?showt...0&gopid=117480&
Dj Kitt
Всем спасибо за памощь!!!!
Сейчас осваиваю I2C.... Скоро будут еще вопросы
Dj Kitt
Всем доброго временеи суток!!!!
Появились вопросы, блин....

CVAVR материться при упоминании разряда TWINT, регистра TWCR, главное- все остальные разряды CVAVR понимает....

Чем лечиться????
SergSit
Можно решить проблему двумя способоми.
1сп. В своей программе написать #define TWINT 7; 7 это номер разряда в регистре TWCR по даташиту на контроллер.В данном случае для ATmega16
2сп. Дописать этот разряд в ****.h файле на данный контроллер. Структура этого файла простая
Dj Kitt
SergSit, спасибо!!!!!
Dj Kitt
Блин.... в файле *****.h не прописан ни один разряд ни одного регистра TWI, как их прописать?????
Пришлите кто-нить файл с прописанными разрядами!!!!!
Или обясните на конкретном примере как их прописывать!!!!!

Заранее спасибо!
otrog
Цитата(Dj Kitt @ Jun 22 2006, 13:53) *
Блин.... в файле *****.h не прописан ни один разряд ни одного регистра TWI, как их прописать?????
Пришлите кто-нить файл с прописанными разрядами!!!!!
Или обясните на конкретном примере как их прописывать!!!!!

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

Можно поступить так:
Берется *.h на нужный контроллер из IAR-а.
Копируются все определения битов в буфер обмена.
Вставляются в *.h от CVAVR.
WHALE
Цитата(otrog @ Jun 22 2006, 14:28) *
Цитата(Dj Kitt @ Jun 22 2006, 13:53) *

Блин.... в файле *****.h не прописан ни один разряд ни одного регистра TWI, как их прописать?????
Пришлите кто-нить файл с прописанными разрядами!!!!!
Или обясните на конкретном примере как их прописывать!!!!!

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

Можно поступить так:
Берется *.h на нужный контроллер из IAR-а.
Копируются все определения битов в буфер обмена.
Вставляются в *.h от CVAVR.

И так 30 раз подряд для всех чипов,имеющих TWI.Имхо,лучше создать свои или взять готовые библио-
течные файлы twi master,twi slave и использовать их.
А разряды прописываются так:
#define TWIE 0
#define TWEN 2
#define TWWC 3
#define TWSTO 4
#define TWSTA 5
#define TWEA 6
#define TWINT 7
Dj Kitt
Огромное спасибо всем, кто отозвался!!!

Новый вопрос, ламерский, поэтому просьба не пинать начинающегоsmile.gif

Для определения скорости и всего остального я буду использовать проверенный способ - геркон и магниты.

1)Как я понял, мне необходимоо этот геркон вещать лапу внешнего прерывания INT0/INT1, если не прав - поправте.

2) пришло прерывание, счетчик прибавил в к пройденному пути Х.ХХ метров, а как мне засечь время между пришедшими импульсами(вопрос ламерский,Т.К. это принцип частотомера для до 100-150 гц, я так и не понял как они работают...( на колесе будут несколько магнитов))???

Разложите пожалуйста этот вопрос по полочкам, очень прошу!
Заранее спасибо!
AndyBig
Цитата
1)Как я понял, мне необходимоо этот геркон вещать лапу внешнего прерывания INT0/INT1, если не прав - поправте

В принципе, верно, хотя при необходимости можно повесить его на любую ногу контроллера, а состояние этой ноги считывать программно в основном цикле. 100 Гц - достаточно маленькая частота для программной обработки smile.gif.
Цитата
2) пришло прерывание, счетчик прибавил в к пройденному пути Х.ХХ метров, а как мне засечь время между пришедшими импульсами

Завести таймер на отсчет, скажем, миллисекунд и по прерыванию от геркона считывать и обнулять этот таймер. А дальше элементарная математика.
Dj Kitt
Спасибо, но это ответ не совсем для ламера.....=)

Т.е. таймер считает например 10 мс, когда приходит прерывание, отсчитанное значение уходит в переменную, а сам счетчик сбрасывается, я правильно понял??? Поправте....
И еще, опишите плиз на С алгоритм обработкий таймера.
( на форуме порылся, там почти всё на АСМе)
beer_warrior
Цитата
Завести таймер на отсчет, скажем, миллисекунд и по прерыванию от геркона считывать и обнулять этот таймер. А дальше элементарная математика.

Берете таймер, у которого есть режим CTC (clear timer on compare).
Ставим в этот режим. В регистр сравнения пишем число клоков,приходящихся на 1мс (наприметр для 10 МГЦ - 10 000, не забываем также ,что у таймера есть прескаллер) .Разрешаем прерывание по сравнению.
Код
void InitSysTimer2(void)
{
TCNT2 = 0;
OCR2 = 138;//0.1мкс f= 11 059 000
TCCR2 = 0;
TCCR2 = (1 << WGM21)|(1 << CS21);//CTC mode
TIMSK |= (1 << OCIE2);
}

В прерывании увеличиваем переменную
Код
volatile int ms_count

Все у вас пошел счет времени.
В прерывании от геркона, считываем ее - это будет время одного(или 1/2,1/3, 1/4) оборота в зависимости от количества срабатываний на оборот и сбрасываем. Единственное, что следует продумать - это разруливание двух прерываний, оперирующих с одной переменной.

Ну и напоследок - для таких условий как велосипед, лучше не геркон , а датчик Холла.
Dj Kitt
Огромное спасибо, beer_warrior!!!!

Новый вопрос, господа: CVAVR опять материться фразой Undefined symbol "interrupt" на фразу: interrupt [TIM0_OVF] void timer0_ovf_isr(void)

Как вылечить???
WHALE
Скорее всего вы где-то раньше по тексту со скобками ошиблись-количество открывающих не соответст-
вует количеству закрывающих.
Dj Kitt
Да вроде всё есть...
otrog
Цитата(Dj Kitt @ Jul 6 2006, 11:03) *
Да вроде всё есть...

Только что специально удалил "}" перед
Код
interrupt [TIM2_COMP] void timer2_comp_isr(void)
CV выдал
Цитата
Undefined symbol "interrupt"
smile.gif
TamTam
Код в студию
Dj Kitt
Пожалста.... Черновой вариант...

void main(void)
{
////Èíèò 2-ãî òàéìåðà

PORTB=0x00;
DDRB=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

////////// ×àñû ðåàëüíîãî âðåìåíè ñ ìîìåíòà âêëþ÷åíèÿ ////////////////
interrupt[TIM2_OVF] void timer2_ovferfow(void){
// ïåðåçàãðóæàåì òàéìåð
TCNT2=0x00;
sec=sec++;
if (sec == 60)
{ sec=0; min++;
if (min==60){min=0; hour++;}}


// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Falling Edge
GICR=0x80;
MCUCR=0x08;
GIFR=0x80;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x7A;
// Place your code here

}
// Global enable interrupts
#asm("sei")

interrupt [EXT_INT1] void ext_int1(void){
ee_put=ee_put+2.1;

init_lcd;
LCD_Write;
}
while (1)
{
// Place your code here

};
}
vet
а скобку закрыть? smile.gif
Dj Kitt
Оперативно, блин.....smile.gif

Сорри, в упор не вижу, где нада енту самую скобку закрыть....sad.gif((
otrog
Вынесите объявление прерывания из тела main-а.

Во:
Код
////////// ?anu ?aaeuiiai a?aiaie n iiiaioa aee??aiey ////////////////
interrupt[TIM2_OVF] void timer2_ovferfow(void)
{
  // ia?acaa?o?aai oaeia?
  TCNT2=0x00;
  sec=sec++;
  if (sec == 60)
  {
    sec=0; min++;
    if (min==60)
    {
      min=0; hour++;
    }
  }
}

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  // Reinitialize Timer 0 value
  TCNT0=0x7A;
  // Place your code here
}

interrupt [EXT_INT1] void ext_int1(void)
{
  ee_put=ee_put+2.1;

  init_lcd;
  LCD_Write;
}

void main(void)
{
////Eieo 2-ai oaeia?a

  PORTB=0x00;
  DDRB=0x00;
  ASSR=0x00;
  TCCR2=0x00;
  TCNT2=0x00;
  OCR2=0x00;
  
  // External Interrupt(s) initialization
  // INT0: Off
  // INT1: On
  // INT1 Mode: Falling Edge
  GICR=0x80;
  MCUCR=0x08;
  GIFR=0x80;
  
  // Global enable interrupts
  #asm("sei")
  

  while (1)
  {
  // Place your code here
  
  }
}


Совет на будущее. Старайтесь структурировать свои программы, они от этого будут легче читаться wink.gif .
IgorKossak
Вложенность функций на С недопустима.
И дело здесь не столько в структурировании.
Dj Kitt
Птьфу ё......Блин... Спасибо!!!!:)smile.gifsmile.gifsmile.gifsmile.gifsmile.gifsmile.gif
Dj Kitt
Итак... В принципе программу ПОЧТИ закончил.... rolleyes.gif
Осталось самое интересное - преобразование нужных мне символов в код для отправки по i2c в контроллер LCD... У LCD контроллер PCF8548, так вот он вырисовывает всё "Слева направо, сверху вниз", блин.... так вот одна буква/цифра имеет формат 5х8, то мне необходимо в каждом такте подряд выводить побитно какой пиксель зажигать...
т.е. например буква Р будет иметь вид: (Высота 5 пикселей, ширина - 3)
11111000
10100000
11100000
- в таком виде и порядке я должен её вырисовывать.... blink.gif

Так вот вопрос: [u]Как мне преобразовать результаты для вывода их на экран?????[/u]

Есть идея, но, как мне кажется она бредовая(хотя, быть может ед.вариант). unsure.gif

Я создаю в EEPROM(или в программе) массивы для всех букв, цифр, знаков и т.д. какие буду использовать..., далее я в цикле буду выводить "как оно надо" на экран....( этот вариант меня не устраивает по причине увеличения объема программы.....

Поправляйте, предлагайте... Помогайте, короче! smile.gif
Заранее спасибо!
beer_warrior
Если индикатор без встроенного знакогенератора (а ИМХО PCF8548 являеться таковым), придется эти самые символы держать в виде таблиц во флэш, никуда от этого не уйдешь.
По логике - делается функция которая вычисляет позицию знакоместа (переводит строку и позицию символа в координаты пикселей), а потом выводит последовательно 5 байт из таблицы в которой описан растр. В принципе эти растры возможно держать сжатыми и распаковывать на лету(повторяющихся последовательностей будет очень много), но это может сильно осложить задачу. Хотя можно и использовать несколько макросов для наиболее часто встречающихся последовательностей( например все 0.все 1) .
Да и еще. Существуют программы для создания таблиц шрифтов, вручную мучится не стоит.
Dj Kitt
Цитата
Существуют программы для создания таблиц шрифтов, вручную мучится не стоит.


Подскажите плиз где их взять....?
otrog
Цитата(Dj Kitt @ Jul 8 2006, 18:38) *
Цитата
Существуют программы для создания таблиц шрифтов, вручную мучится не стоит.


Подскажите плиз где их взять....?

http://electronix.ru/forum/index.php?showtopic=16075
Dj Kitt
Сенкс!=)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.