Обсуждаем контроллеры компании Atmel.
Ответить

Re: Atmega8515 - Частотомер, работающий на Atmega8

Пт сен 07, 2012 23:53:57

kras писал(а):Собрал новую схему с другим дисплеем LCM1602K - нет ответа от нее. Поэтому вопрос в алгоритме, наверное, что-то не так понимаю. Все делаю на CVAvr.
4. Для теста припаял диод к выходу PORTB.0 и сделал делитель напряжения для ножки PORTA.0 (подумал, может АЦП есть).
5. Написал программу для мигания PORTB.0, заработала, но время идет некорректно: delay_ms(999) длится не 1секунду, а дольше раз в 8.
6. Пошел дальше, кинул стандартный код LCD с нета. Не заработало, хотя в PROTEUS все ок!
7. Решил воспользоваться генератором кода, там по умолчанию частота 8МГц, подключил LCD, добавил 3 строчки из проекта пункта 6, итог:
Код:
#include <mega8515.h>

// Alphanumeric LCD functions
#include <alcd.h>

// Declare your global variables here

void main(void)
{
char *_str="Hell!"; //Создаем выводимую строку
// Declare your local variables here

// Input/Output Ports initialization

// Characters/line: 16
lcd_init(16);

     
     

//#asm
//   .equ __lcd_port=0x15 ;PORTC
//#endasm  // Инициализируем PORTC как порт ЖКИ
 
     
}

Прошиваю FLASH, при этом фьюзы не меняю. Дисплей молчит! А в Proteus все ок.
8. Кручу резистор вправо-влево - ноль эмоций у LCD.
Больше ничего не делал. Если я все необходимое назвал, то где мог ошибиться?


LCD подключал еще на CVAVR первой версии. Использовал и встроенную библиотеку и свою. С этих позиций мне кажется херню вы пишите.
Надо сначало
//#asm
// .equ __lcd_port=0x15 ;PORTC
//#endasm // Инициализируем PORTC как порт ЖКИ
а потом
lcd_init(16);
А то как вы иницизируете lcd, если вы порт не установили, где вход, где выход?
Возмите автоматически генерируемый код CVAVR.
А вот фьюзы менять надо. Судя по всему в мк используется внутренний генератор на 1МГц. А вы пишете код на 8МГц
ЧИТАЙТЕ ДАТАШИТ. СКОЛЬКО РАЗ ВАМ ЭТО НАДО ПОВТОРИТЬ. :oops:

(подумал, может АЦП есть) А ДАТАШИТ ДЛЯ КОГО? :oops:

Привожу рабочий код для меги 8. Две штуки. Сам изучал чей-то пример. Если и это не поможет, то :kill:
Вложения
v2.c
(3.61 KiB) Скачиваний: 246
volt_lcd.c
(4.13 KiB) Скачиваний: 384

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вс сен 09, 2012 09:36:30

Нашел сайт по фьюзам:http://www.engbedded.com/fusecalc. Но есть сомнения, поэтому просьба разъяснить. Если хочу работать с внутренним резонатором на 8Мгц, то подойдет то, то на рисунке?
Безымянный.png
(28.61 KiB) Скачиваний: 667


А тогда можете показать, как этот код будет выглядеть для Atmega8515? А то у меня сейчас каждая ошибка на счету:)

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вс сен 09, 2012 10:36:35

Зачем вам тогда калькулятор?Смотрите какая настройка фьюзов конкретно в вашей программе.И ставьте.Что нам теперь за вами проверять правильно ли вы выбрали?Там же элементарно нужный пункт ниспадающим списком выбирается вы выбрали внутренний генератор?
int RC 8MHz
если выбрали, значит подойдет.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вс сен 09, 2012 22:30:51

kras писал(а):Нашел сайт по фьюзам:http://www.engbedded.com/fusecalc. Но есть сомнения, поэтому просьба разъяснить. Если хочу работать с внутренним резонатором на 8Мгц, то подойдет то, то на рисунке?
Безымянный.png


А тогда можете показать, как этот код будет выглядеть для Atmega8515? А то у меня сейчас каждая ошибка на счету:)

Я скоро буду ругаться матом.
Скажите сколько раз вам надо написать ЧИТАЙТЕ ДАТАШИТ???
Я всегда фьюзы устанавливаю по даташиту. Если внимательно прочитать, то все ясно.
Какой внутренний резонатор на 8МГц??? В даташите написано RC.
Купите мегу8, сделайте на ней. Когда все заработает, переносите на 8515. Если кто-то это сделает за вас, то как вы сами научитесь программировать?

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вс сен 09, 2012 23:26:55

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

ds1307 Вспомните себя в молодости, не стоит так кричать.Мне вот лично не все понятно из даташита особенно фьюзы разбросаны.
Если бы была общая сводная таблица с режимами, а то где то режим задержки перед стартом, где то режим работы с RC или внешним кварцем.
Вот предположим таблица даташита:
Изображение
в каком состоянии должен быть при этом бит CKSEL 0?Вам понятно, а новичек теряется. :dont_know:
А вот фьюз калькулятор это другое дело.Только нужно знать как ваша программа интерпретирует биты.

Вот русский вариант калькулятора.
Вложения
CKSEL.GIF
(17.74 KiB) Скачиваний: 1535

Re: Atmega8515 - Частотомер, работающий на Atmega8

Пн сен 10, 2012 13:42:22

vitalik_1984 писал(а):ds1307 Вспомните себя в молодости, не стоит так кричать.Мне вот лично не все понятно из даташита особенно фьюзы разбросаны.

Я кричу потому что человек даже ни разу не посмотрел в даташит. Вы посмотрите всю переписку. Разве можно так работать с микроконтроллером, да и вообще с электроникой. То он на него 6Вольт подает, при новых батарейках еще больше. То думает, что там есть АЦП.
А про фьюзы я уже заодно написал. Я действительно один раз хорошо вкурил даташит и разобрался более-мене с фьюзами.
Судя по количеству сообщениий в электронике человек не новичек.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Пн сен 10, 2012 16:37:22

Я смотрел, просто, наверное, долго мне придется разбираться одному, ну ок. Действительно просто боюсь, что вообще не заработает, хотя насчет научусь/ненаучусь программировать - вопрос, у меня еще много чего впереди насчет частотомера с выводом на дисплей, но вдруг мне будет также страшно. Короче почитаю еще раз даташиты Atmega8 и Atmega8515 и попробую сделать схему дубль 3 для Atmega8. Ну просто я этому нигде и не учусь, то есть только самому собирать, а по учебе нужно кое-что на основе частотомера сделать. Но, безусловно, разобраться главное.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Пн сен 10, 2012 17:28:23

Делал (скорее баловался) частотомер от Panda_y2k
http://vrtp.ru/index.php?s=7185a0a47549 ... =7275&st=0
Но он на тиньке, зато лично проверял. Все работает. Один только геморой с кварцами, автор их постоянно менял.
Последняя прошивка под кварц 20МГц.
Прилагаю два файла, на случай если с оригинала скачать не удасться.
Вложения
F_C__.c
(3 KiB) Скачиваний: 505
f_c.c
(3 KiB) Скачиваний: 518

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 03:11:33

Блин, ну я сразу такой боюсь собирать:)

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 07:44:04

Ну раз боишься, то ничему никогда не научишься. Там собирать нечего. Сколько я пожёг контроллеров в результате экспериментов :))) . И ничего, не опускаю руки.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 11:42:20

Давайте еще раз, хоть узнать, с чем примерно у меня косяки. Допустим, по железу все норм. Тогда остается проверить программу и процесс прошивки. Программа, специально простая:
Код:
#include <mega8515.h>

// Включение для любой марки дисплея с соответствующим интерфейсом
#include <alcd.h>

void main(void)
{

char *_str="Hello"; //Создаем выводимую строку

#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm  // Инициализируем PORTC как порт ЖКИ

lcd_init(16);

     lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки
     lcd_puts(_str);   // Выводим строку _str на дисплей
     
     while (1){ // безконечный цикл, а на дисплее все еще держится информация
     };
     
}


Скомпилилось, ок. Фьюзы:
Безымянный.png
(24.83 KiB) Скачиваний: 528
. Этого достаточно, чтобы сказать, что на программном уровне у меня все отлично? Или нужно что-то исправить? Или я чего-то не представил необходимого?

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 13:22:02

kras, в железе вывод R/W индикатора должен сидеть на массе. Если он сидит на меге и там единица - то ты постоянно "читаешь" из индикатора и ты на нем ничего не увидишь :))

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 17:26:18

kras писал(а):Давайте еще раз, хоть узнать, с чем примерно у меня косяки. Допустим, по железу все норм. Тогда остается проверить программу и процесс прошивки.
Фьюзы?


#asm
.equ __lcd_port=0x15 ;PORTC
#endasm // Инициализируем PORTC как порт ЖКИ
затем
#include <lcd.h>
затем
void main(void)
затем
Желательно инициализацию Портов и всего остального (а вось пригодится)
затем
// LCD module initialization
lcd_init(16);
lcd_gotoxy(0, 0); // Переводим курсор на первый символ первой строки
//lcd_puts(_str); // пока не будем
lcd_putsf("Hello"); // display the message
В моих примерах вольтметра именно в таком порядке (Для вас же приводил)

Меня еще смущает что у вас #include <alcd.h>, а не #include <lcd.h>
Но может это от версии зависит

Фьюзы по частоте правильно выставлены.
А вот SUT0 и SUT1 надо 01 или 10 (зависит от источника питания, но пока не принципиально).
У вас 00, а это для случая когда BOD включен, а вы его не активировали.

lawr писал(а):в железе вывод R/W индикатора должен сидеть на массе. Если он сидит на меге и там единица - то ты постоянно "читаешь" из индикатора и ты на нем ничего не увидишь :))

В данном случае вы не правы. В CVAVR при использовании встроенной библиотеки вывод R/W должен сидеть на меге.
Там проверяется ответ от lcd. Это сделано чтобы работали медленные lcd.
Если сделать по вашему, то код зависнет, т.к. не получит ответа от LCD.
"Учите мат. часть". Как говорил прапорщик после американского плена.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 17:40:01

Перепаял проводок с 5 ножки на землю МК, не помогает, экран ноль эмоций. Перепрошил мк еще раз так, как показал в последнем посту. ВEeprom, как всегда, ничего не загружал, во Flash заливает автоматически. Надеюсь, то, что надо. Питание через программатор, вытащил и вставил его - нету ничего.
Решил провольтметрить LCD в произвольный устаканившийся момент. Относительно первой ноги (GND):
питание: 3.29В;
яркость: 1.44В;
Data D0-D7: 3.2В даже там, где нет подключения к мк;
RS,R/W,E - нули.
Последний раз редактировалось kras Вт сен 11, 2012 18:03:25, всего редактировалось 1 раз.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 17:43:05

У вас 00, а это для случая когда BOD включен, а вы его не активировали

А из-за этого может не работать. И сейчас назад ногу припаяю R/W и посмотрю, что изменится.
Вот:
питание: 3.30В;
яркость: 1.52В;
Data D0-D7: 3.21В там, где нет подключения к мк, а 3.30В в местах подключения к мк;
RS,R/W,E - 3.30,3.30,0, соответственно.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 18:10:56

Теперь разобрался. Вы пользуетесь 2 версией CVAVR.
А я приводил пример для первой. У вас новая библиотека и порт
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
назначается видимо в ней.
Надо разбираться с командами вывода на lcd.
Либо использовать старую #include <lcd.h> вместо новой #include <alcd.h>
Должно прокатить.

SUT1 и SUT0 не делал никогда 00.
Лучше поменяйте, это не сложно.

По поводу яркости. Если имеется в виду контрастность, то у вас большое напряжение. Я вам писал что должно быть около 1:10. И вобще, если при выкручивании резистора на контрастности в крайние положения нигде не засвечивается строка из черных квадратиков, то LCD не работает не зависимо от МК.

Еще возник вопрос: А работает ли ваш LCD от 3,3 вольт. Что написано в даташит.

Вот вспомнил про сайт и там статейка http://my-avr.at.ua/publ/1-1-0-9
про подключение LCD.
Но опять видимо пример для первой версии. Зато должно работать.
Брал у него код для проигрывания wav с SD. Все работало.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 18:38:13

если при выкручивании резистора на контрастности в крайние положения нигде не засвечивается строка из черных квадратиков, то LCD не работает не зависимо от МК

А сжечь LCD нельзя, если давать напряжение питания (все-таки крайнее положение)? Ну и вообще странно насчет того, что он может не работать, так как я делаю вторую попытку, здесь стараюсь поаккуратнее. Первый дисплей мне продавщица сама дала, а второй я выбрал из коробки, так как боялся, что его долбанули или еще чего, хотя у них всегда норм детали.

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 19:36:06

kras нормальное развитие событий , называется танец с бубном, разве нельзя собрать на этих же деталях любой простой проект, чтобы убедится, что ваши детальки целы?
А так история будет бесконечна, то ли дисплей не живой , то ли МК, или программа не такая, или фьюзы не те......

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 19:48:37

kras писал(а):А сжечь LCD нельзя?...

Да легко!
Есть LCD у которых иная распиновка, чем та к которой все привыкли. Иные могут и не работать при 3,3В. Тут надо смотреть даташит.
Померяй ток через индикатор - и все станет ясно.
А темные прямоугольники при изменении напряжения контрастности должны появляться даже если индикатор подключен только к питанию

Re: Atmega8515 - Частотомер, работающий на Atmega8

Вт сен 11, 2012 20:06:31

Ну упертый пацан попался...
Талдычу талдычу ему посмотри даташит. Ни в какую. Что и даташит страшно почитать?
+5V power supply(Also available for +3.3V)
Перевожу для боязливых:
напряжение питания 5Вольт (так же существуют на 3,3 Вольта)
Если у вас обычная поставка, то у вас 5вольтовый индикатор и он не будет работать от 3,3 вольт.
Если вы на него подавали напряжение от 4 батареек, тоже могли сжеть. У него макс напряжение 5,5Вольт.

Второе: контрастность на индикаторе это вход и ему по барабану с точки зрения сгореть, что вы подаете +5вольт или 0. Это обычный КМОП вход.
Милионы людей до вас подавали и не спалили. Вам описывают проверенную методику проверки работоспособности LCD.
Ответить