CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва

Сообщение 0867532 »

Лал, я не знал что это были массивы, точнее не задумывался что это они...
Если возникнут вопросы - посмотрите на мой аватар.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Доктор доктор мне нужно зуб вырвать, - мне вас посоветовали.
-Хм так это во рту зубы оказывается? Никогда бы не подумал.
:)))
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва

Сообщение 0867532 »

Коты, помогите?!
программа считывает char, а как мне из него по одному читать, делать с ним экшон, и так пока чар не кончится?
Например:
...
void Print(unsigned char BOSS) {
понятно что здесь надо ставить while(???){экшон;} но как компактно подсчитать не создав кучу переменных?
}
...
Print(BULKA);
Не хочется на самодельный экранчик выводить буквы по одной:)
Да, ещё... Почему не работает?
...
unsigned char AK[] = {
0b10111111,
...
};
...
if (PINB == AK[0] ) { ... } (PORTB=0xFF; DDRB=0x00; Если без массива ну там PD.0 == 1 && PD.1 ==0... То норм.)
Если возникнут вопросы - посмотрите на мой аватар.
Контактная информация:
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

:facepalm: :facepalm: :facepalm:
я купил апельсин, а как мне по одному из него брать, делать с ним :tea:, и так, пока апельсин не кончится?
автор, пиши по-русски, пожалуйста!

извините, не удержался...

если((апельсин & (долька №1))==съели) кричать("ААА!");
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

0867532 писал(а): ...
if (PINB == AK[0] ) { ... } (PORTB=
Если написать так:
0867532 писал(а): ...
if (PINB == AK[0] ) { ... }; // (PORTB=
, то работать будет.
Docendo discimus
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва

Сообщение 0867532 »

Я это для сообщения вставил, Понятно что во1: меня редактор бы послал куда-подальше.
Во2: на я не совсем тупой, чтоб с ошибками код заливать в МК.
Если возникнут вопросы - посмотрите на мой аватар.
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Сообщение Сериг »

0867532 писал(а):Я так делаю:
Работает всегда правильно.
Коды чаров генерировал в этой проге:
http://rghost.ru/private/48590263/81d57 ... 58c21e9a72

Код: Выделить всё

typedef unsigned char byte;  
flash byte char0[8]={0x04, 0x14, 0x1F, 0x05, 0x04, 0x0A, 0x11, 0x11};//суваем то что сгенерировалось суда 
flash byte char1[8]={0x04, 0x05, 0x1F, 0x14, 0x04, 0x0A, 0x11, 0x11};
flash byte char2[8]={0x1F, 0x11, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11};
flash byte char3[8]={0x1F, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F};
flash byte char4[8]={0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};
flash byte char5[8]={0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00};
flash byte char6[8]={0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00};
flash byte char7[8]={0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};

void define_char(byte flash *pc,byte char_code) 
{ 
byte i,a; 
a=(char_code<<3) | 0x40; 
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++); 
}

void main(void) {    
...
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
...
lcd_putchar(0);
lcd_putchar(1);
lcd_putchar(2);//Выводим сгенерированые чары на экран
lcd_putchar(3);
lcd_putchar(4);
lcd_putchar(5);
lcd_putchar(6);
lcd_putchar(7);
...
}

Тук-тук-тук! :)))
Снова я с очередным вопросом:
Подскажите,что делать?!
Символы выводятся идеально правильно,только после перезагрузки мк путем сажания ресета на массу.
А при перезагрузке путем сброса питания,происходит такая фигня.
Спасибо!
Вложения
image.jpg
Что происходит после сброса питания
(132.83 КБ) 313 скачиваний
image.jpg
Как должно быть
(44.23 КБ) 240 скачиваний
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Что-то Ваш дисплей не совсем похож на
Сериг писал(а):дисплей на контроллере HD44780
:)

ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы... :roll:
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 351
Зарегистрирован: Пн сен 12, 2011 12:13:46

Сообщение Garin »

Сериг а вы не вместе с 0867532?
Код тот для примера , а вы в нем ничего не делали?
Выложите свой. Или продолжайте на пальцах спрашивать..
Встал на лапы
Аватара пользователя
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва

Сообщение 0867532 »

Сериг, а что у вас за LCD, как называется?
Если возникнут вопросы - посмотрите на мой аватар.
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Сообщение Сериг »

Аlex писал(а):Что-то Ваш дисплей не совсем похож на
Сериг писал(а):дисплей на контроллере HD44780
:)

ЗЫ: Цепь ресета как сделана ? Мож в ей проблемы... :roll:
Все по фен-шую...
Конденсатор 0,1 на землю, 10к к плюсу...
Дисплей wh2004d
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Из даташита:
Wait for more than 15 ms after VCC rises to 4.5 V
Оно, конечно, в библиотеке это делается. Но тем не менее перед инициализацией дисплея в самом начале программы поставьте

Код: Выделить всё

delay_ms(500);
Docendo discimus
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Сообщение Сериг »

Аlex писал(а):Попробуйте посадить ресет на землю, подать питание на девайс, затем отпустить ресет. Возможно, у Вас проблема связана не с внешним сбросом, а с первым пуском МК.
Ок,спасибо,попробую. А что в таком случае делать?
Pyzhman стоит задержка 1000мс.
Встал на лапы
Сообщения: 107
Зарегистрирован: Сб июл 27, 2013 10:52:37
Откуда: Украина

Сообщение Aмstroн »

Теоретический вопрос, чем отличаются две переменные друг от друга , которые вот так обьявлены

Код: Выделить всё


            #define odin  44      //



           unsigned char dva=44; //


Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

odin - это не переменная, а константа, она не занимает оперативной памяти микроконтроллера.
dva - это переменная, под которую выделяется место в ОЗУ.
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

odin это даже и не константа :)) Хотя место, конечно, может занять во флеше. Да и в ОЗУ тоже может занять.
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 107
Зарегистрирован: Сб июл 27, 2013 10:52:37
Откуда: Украина

Сообщение Aмstroн »

Понимаю что это примитив , но сомнения и порождают у меня этот вопрос.
По месту нахождения ясно , а как тогда это может сказаться на арифметических действиях

Код: Выделить всё

  #define odin  44          //
    unsigned int dva=44; //
    int  summa=0;
// вариант №1
summa= (100+ (odin*dva))/odin;
// вариант №2
summa= (100+ (odin/dva))*dva;
// вариант №3
summa= (100+ (odin/dva))+odin;
Вот тут не понял, в чем будут ограничены действия
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ibiza11 писал(а):dva - это переменная, под которую выделяется место в ОЗУ.
интерестно, а почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

FreshMan писал(а):почему для нее не используется один из РОН, а выделя6ется ячейка ОЗУ ?
Потому что РОН мало, а ОЗУ много. Чтобы выделился РОН, вроде надо написать register. Хотя не знаю как в CV.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ответить

Вернуться в «AVR»