Подскажите схему бортового компьютера на дисплее Nokia 3310

Обсуждаем электронику на колесах. Нужен увлажнитель воздуха для Камаза? Вам сюда.
Ответить
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):Простите извращенца) завтра поправлю код. Я с кодвижином работаю без году неделю, как и с мк)) желание "шоб работало" оказалось впереди здравого смысла) на свежую голову пересмотрю код
Сколько я зарезал, сколько перере.... ээээ, в смысле сколько различных IDE юзал - никогда не считал отговоркой "я впервые запустил эту IDE, поэтому код будет жуткий".
Какое отношение среда программирования имеет к качеству кода? Качество-то оно в голове же! :shock:
Ну контроллер впервые взял потрогать, бывает. Но как можно быть программистом и юзать функцию, даже не зная что ей подавать на вход и что будет на выходе?!! :shock:
Не обязательно знать как она работает, но вход-выход надо же изучить!!
Как ты на 1С пишешь-то? А надо посчитать доход за месяц, а вот возьму функцию "расход_за_прошлый_год" и результат на что-то разделю, добавлю что-то и получу похожий ответ. :dont_know:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

благодарю за пинок) На 1эсине писать дело другое. Там все настолько нелогично, что мозг привыкает сам по себе))
Итак, исходя из F1:
Спойлер
unsigned char ds18b20_init(unsigned char *addr,signed char temp_low,signed char temp_high,unsigned char resolution)


this function sets the low (temp_low) and high (temp_high) temperature alarms and specifies the temperature measurement resolution of the DS18B20.
The resolution argument may take the value of one of the following macros defined in the ds18b20.h header file:


DS18B20_9BIT_RES for 9 bit tempearture measurement resolution (0.5°C)
DS18B20_10BIT_RES for 10 bit tempearture measurement resolution (0.25°C)
DS18B20_11BIT_RES for 11 bit tempearture measurement resolution (0.125°C)
DS18B20_12BIT_RES for 12 bit tempearture measurement resolution (0.0625°C)


In case of success the function returns the value 1, else it returns 0.
The alarm temperatures and resolution are stored in both the DS18B20's scratchpad SRAM and its EEPROM.
The ROM code needed to address the device is stored in an array of 8 bytes located at address addr.
If only one DS18B20 sensor is used, no ROM code array is necessary and the pointer addr must be NULL (0).
The alarm status for all the DS18B20 devices on the 1 Wire bus can be determined by calling the w1_search function with the Alarm Search (ECh) command.


float ds18b20_temperature(unsigned char *addr)


this function returns the temperature of the DS18B20 sensor with the ROM code stored in an array of 8 bytes located at address addr.
The temperature is measured in °C. In case of error the function returns the value -9999.
If only one DS18B20 sensor is used, no ROM code array is necessary and the pointer addr must be NULL (0).
Prior on calling the the ds18b20_temperature function for the first time, the ds18b20_init function must be used to specify the desired temperature measurement resolution.
If more several sensors are used, then the program must first identify the ROM codes for all the sensors.
Only after that the ds18b20_temperature function may be used, with the addr pointer pointing to the array which holds the ROM code for the needed device.
выставил 9 битное разрешение (больше то и не надо, как оказалось) ну и избавился от флоатовой арифметики. странно, но все вроде бы заработало)

теперь задача реализовать какую-никакую звуковую индикацию. Осталось свободно 5% атмеги8, как думаешь, хватит места? каждая библиотека отжирает около 2-3% места :?
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Реклама
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а): Итак, исходя из F1:
float ds18b20_temperature(unsigned char *addr)
If only one DS18B20 sensor is used, no ROM code array is necessary and the pointer addr must be NULL (0).
выставил 9 битное разрешение (больше то и не надо, как оказалось) ну и избавился от флоатовой арифметики. странно, но все вроде бы заработало)
Тебе странно, что всё заработало после выполнения всех требований документации? :))
От float'ности ты не избавился - функция возвращает флоатку. Имхо это полнейший бред, достаточно целочисленного (т.е. выводить с фиксированной запятой). И на вход функции нужно подавать не массив какой-то, а NULL - тоже не забывай.
Ромыч писал(а):теперь задача реализовать какую-никакую звуковую индикацию. Осталось свободно 5% атмеги8, как думаешь, хватит места? каждая библиотека отжирает около 2-3% места :?
СКОЛЬКО? :shock: :facepalm:
Это ты в Debug или в Release собираешь? Если один термометр и экран сожрали у тебя 95% из 8 Кб FLASH.... писец.
Это ж как надо такой код писать?

Гм, похвастаюсь. Часть много-модульного проекта, модуль на Atmega8.
Считывает данные с двух разных датчиков BMP085 (давление и температура) и SHT10 (влажность и температура). Причем из давления вычисляется текущая высота.
Ожидает данные с сигналкии читаем код - встало на сигналку, снято с сигналки, тревоги и предупреждения.
Работает с протоколом по UART - ожидание команд от главного модуля, ответ ему (метео-данные, время, ...)
Работает с радио-модулем. Передает мне на часы метео-данные, напряжение бортовой сети. При срабатывании сигналки передает тревогу или сообщение.

И всё это занимает слишком много места. Сейчас из 8 Кб занято 7500. Там ещё дебажные фичи стоят кое-где, но всё равно - много занято. Буду чистить.
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

ну да, хотел сказать от лишних знаков после запятой избавился))
не знаю где собирается дебаг/релиз. собираю через Project-build
получается что термометр и экран много жрут... экран - это точно, там все шрифты и графика. А вообще из подключенных вот:

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

#include <mega8.h>
#include <delay.h>
#include "nokia_lcd.h" 
#include "nokia_lcd.c" 
#include <1wire.h>                                                      
#include <ds18b20.h>    

понимаю, что нужно обрезать лишний код из модулей. Пока руки не дошли
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):ну да, хотел сказать от лишних знаков после запятой избавился))
не знаю где собирается дебаг/релиз. собираю через Project-build
Эммм... А почитать описание на IDE - тоже религия не позволяет? Настройки проекта - тама всегда куча-куча опций, которыми можно проект сделать маленьки и большим, быстрым и тормозным...
Ромыч писал(а):получается что термометр и экран много жрут... экран - это точно, там все шрифты и графика.
Хорошо, поговорим за графику.
Из этой же моей много-модульной системы.
Экранный модуль, состав: Атмега16, LCD от Нокиа 6100, DS18B20, UART с моим протоколом обмена, АЦП напряжения сети, две EEPROM AT24C128.
Графическая подсистема умеет: рисовать буквы, шрифт полный (англ+рус), шрифт один, но могу рисовать буквы размером *1, *2 и *3. Умеет рисовать линии, круги и овалы. Умеет заливать прямоугольную область цветом.

Уже сделан один "экран" - рисуется "машинка" и выводятся "красиво" метео-данные, время, высота, напряжение...
Раз в пару секунд отсылается запрос по протоколу в метео-модуль, ожидается ответ и отрисовываются данные.

Занимает многовато - 5200 из 16Кб. В случае Атмега8 (8КБ памяти) это заняло бы 63%.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

а не подскажете случаем что как настроить? в мануалах говорят только о выставлении частоты и типа МК
Вложения
Безымянный.GIF
(37.37 КБ) 534 скачивания
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Реклама
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):а не подскажете случаем что как настроить? в мануалах говорят только о выставлении частоты и типа МК
Прочитать правильны мануал? Ну не верю, что ы доке на саму IDE ни слова не сказано о настройках!
Тут уже видно. Мемору модель - может сделать ещё маньше.
Оптимизация правильно, но может в выпадающих списках ещё что есть.
Необходимость printf и scanf вызывает сомнение.

В адвансетах и в либах проверять фоздается или нет отладочная инфа, какие либы и прочие опции не нужны.

В хелпах описывается все. Или достаточно просто прочитать название опции и посмотреть на её варианты. При непонятках - уже крутить опцию и смотреть на результат.
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

настроек не густо, лучше чем сейчас не удалось сделать. И еще вопрос) не подскажешь, как сделать световую индикацию события? сделал вот так:

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

void alertLed(int vkl){

 if (vkl==1) 

       {   
       PORTB.6=1;      
       delay_ms(300);     
       PORTB.6=0;  
       delay_ms(300);   
        }
}  ;
но при моргании тормозится все остальное действо (как я понимаю, делеи затормаживают). Как сделать правильно? :oops:
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):настроек не густо, лучше чем сейчас не удалось сделать.
Изучи свою IDE, не может LCD + 1wire + float сжирать 95% Атмеги8. Или меняй IDE
Ромыч писал(а):но при моргании тормозится все остальное действо (как я понимаю, делеи затормаживают). Как сделать правильно? :oops:
Во всех случаях помогает RTFM!
тебе в сторону Таймера - Прерывания.

ЗЫ: ну неужели трудно вначале прочитать документацию на IDE и контроллер?!
Даже имея нехилый опыт программирования на Спекки, я вначале купил книжку по AVR и пару недель - месяц её изучал. И только после понимания основ купил свою первую AT90S2313.
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

итак, начал собирать в железе, прошил программером http://www.speedy-bl.com/avr-prog-e.htm#atprog
все вроде пршилось, но что то не заводится.... верификацию проходит
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

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

Кстати, в отладке в железе, тем более при первом запуске LCD очень помогают всякие индикаторы.
Приделай несколько светодиодов на свободные порты AVR, и мигай ими, показывая что выполнил то-то и то-то.
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

вот весь проект, мигалку уже туда воткнул, правда для индикации высокой температуры и пустого бака)) должен мигать (в протеусе мигает). тем программатором, что я привел, фьюзы не галками выставляются, а байт-кодом. прошил как прошил. Сейчас еще такой попробую собрать
Изображение
более сложный собирать не охота, ибо задача одноразовая))
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):вот весь проект,
Не вижу :) А схемы выше уже обсуждали и ошибки искали.
Ромыч писал(а):мигалку уже туда воткнул, правда для индикации высокой температуры и пустого бака)) должен мигать (в протеусе мигает).
Добавь ещё парочку, на время отладки. И мигай ими от самого запуска программы. Выполнил какой-то кусок кода - мигнул.
Кстати, и не вздумай сразу отлаживать весь проект целиком - тяжко это.
Запускай в железе по кускам. Для начала убери из проекта всё, кроме LCD. И запускай экран, подсветку включи, инициализацию проведи. Напиши "ПРЕВЕД!" :)
Ромыч писал(а):более сложный собирать не охота, ибо задача одноразовая))
Т.е. после сборки БК ты больше никогда не будешь брать в руки шашки... т.е. контролер? :)))
Ага, LPT-программатор. Сам с такого начинал и лежит в резерве :)
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

мискузи)) забыл приаттачить. собираться то собираюсь)) вот только не знаю когда еще решусь) проще на раз спаять 5 проводков. я и так подключил только экран с МК, ну и мигалку. В том же протеусе этот весь минимал работал)
Вложения
bk3310.rar
(241.76 КБ) 285 скачиваний
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а): вот только не знаю когда еще решусь)
Надо расти... над собой :) И решитсья сразу :)
Ромыч писал(а): я и так подключил только экран с МК, ну и мигалку. В том же протеусе этот весь минимал работал)
А можно схемку в .jpg?
По коду - для оптимизации ещё не паханное поле, но это потом.

Сейчас проверяем работает ли железо "ваще".
После инициализации портов не включай прерывания и таймера. даже LCD не трогай.
Просто сделай while бесконечный и мигай в нем "лампочкой".
Убедился что AVR работает - идем дальше. Сделай только запуск LCD, работу с АЦП и вывод топлива - выключи.
После каждой функции после "// LCD module initialization" мигни лампочкой (паузу добавь, чтоб видно было).
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

в жепеге схемки нету...
не, вообще не реагирует. просто зашил чтоб мигал диод - не мигает, хотя все напряжения есть на мк
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):в жепеге схемки нету...
Как так? Разве Протеус не умеет экспортировать схему в картинку?
Ромыч писал(а):не, вообще не реагирует. просто зашил чтоб мигал диод - не мигает, хотя все напряжения есть на мк
В Протеусе лампочка мигает? Тогда программная часть работает.
А с какой частотой мигаешь? может просто не видно глазу?

Проверяй питание ещё раз. Проверяй кварц. Проверяй сигнал Reset. Проверяй фьюзы.

А! Проверь схему! Может светодиод дохлый или неправильно подключен.
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

да все нормально.... диод рабочий, подключен правильно, кварца нету, на внутреннем работает, фьюзы Изображение, как у автора.
схемка в аттаче
Вложения
bk2_1.jpg
(210.68 КБ) 523 скачивания
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 210
Зарегистрирован: Ср янв 06, 2010 22:02:25
Откуда: Уфа сити

Сообщение Ромыч »

что то с дисплеем... отпаиваешь - диод мигает
Что в цивилизованном мире называют "устаревшие технологии", в России зовется "технологии, проверенные временем"
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

Ромыч писал(а):схемка в аттаче
Ну накрутил-то :)
Ромыч писал(а):что то с дисплеем... отпаиваешь - диод мигает
Я бы не стал использовать PB6 / PB7. У тебя же выводов свободных полно!
По классической схеме диод подключается не на землю, а на плюс. AVR выдает "0" с большим током, чем "1".

А дисплей. Есть подозрение, что ты его уже убил. Проверяй, какое напряжение ты на него подаешь. Делитель на трех диодах - это не дело.
И по входам дисплей тоже не обязан работать при +5 - умрет и не заметишь.

Как именно ты отключаешь LCD? Попробуй питание не отключать, от отключать по одному сигнальные выводы (CS, SCK, MOSI, D/C, RESET)
Ответить

Вернуться в «АвтоМотоВело»