Страница 1 из 1

Arduino IDE и Atmega8a.

Добавлено: Чт ноя 22, 2018 16:23:58
Deemon
Привет.

Начал играться с AVR процессорами. В помощь мне -Ардуинка. Но задумал сделать термометр на базе ATmega8A(!) и DHT11.
Цоколёвка ATmega8A совпадает с ATmega328P, поэтому в качестве отладочной платы использую Arduino UNO с атмегой в панельке.
Скетч пишу в Arduino IDE и конвертирую в hex, установив в качестве board Arduino NG > ATmega8(!). Прошиваю hex программатором USBISP китайским, который сам драйвера ставит. Софт для программатора PROGISP v172. Программатор подключён к разъёму ICSP на Ардуино УНО.
Всё отлично шьётся. Но вопрос не в этом.
Скетч работает в целом. Выводит на дисплей 5110 нужные символы , но показания с датчика DHT11 нулевые.
Тот же скетч, но прошитый в Ардуино УНО работает без проблем. Удобно , не отключая дисплей и датчик, проверить работоспособность скетча, просто передёрнув контроллер из панельки.

Частотой генератора фьюзами на ATmega8A игрался. Библиотеки в Ардуино ИДЕ менял. Но не считывает с датчика.

Вероятно , что в процессе компиляции для ATmega8 и ATmega8A в среде Arduino IDE есть какие-то ньансы. Но все даташиты уверяют в полной схожести этих контроллеров, ну, в технологии разница есть, да и только.
Ардуинро ИДЕ для меня начальный этап. Перейду на более высокий уровень. Но поделку хочется сделать пока из того что есть (Arduino UNO - ATmega8A - USBISP китайский - датчик DHN11 - Arduino IDE).
Есть мысли , почему не считывает с датчика ?

Заранее сенкс.


ЗЫ. Интернет читал, но подсказки не нашёл.

Re: Arduino IDE и Atmega8a.

Добавлено: Чт ноя 22, 2018 17:06:43
Z_h_e
Deemon писал(а):Но все даташиты уверяют в полной схожести этих контроллеров, ну, в технологии разница есть, да и только.
Это разные МК :)

Добавлено after 2 minutes 22 seconds:
Я в Ардуине не разбираюсь, но если желаете портировать прошивку с одного МК на другой, думаю с ней пора завязывать :)

Re: Arduino IDE и Atmega8a.

Добавлено: Чт ноя 22, 2018 17:19:56
BOB51
На 8-ой меге адуринка должна поддерживаться платформой
arduino NG or older
соответственно и компиляцию выполнять предварительно установив данный "инструмент", чтоб выяснить вписывается код в "старушку" или нет.
Там вот такой вариант
http://img.radiokot.ru/files/20529/1qvlfb7pkb.JPG
http://img.radiokot.ru/files/20529/1qvlfez2lz.JPG
а не атмега 328Р устанавливается.
8)

Re: Arduino IDE и Atmega8a.

Добавлено: Чт ноя 22, 2018 19:53:03
Deemon
На 8-ой меге адуринка должна поддерживаться платформой
arduino NG or older
соответственно и компиляцию выполнять предварительно установив данный "инструмент", чтоб выяснить вписывается код в "старушку" или нет.
Я ж написАл изначально
конвертирую в hex, установив в качестве board Arduino NG > ATmega8(!)
Там вот такой вариант
http://img.radiokot.ru/files/20529/1qvlfb7pkb.JPG
http://img.radiokot.ru/files/20529/1qvlfez2lz.JPG
а не атмега 328Р устанавливается.
Ардуино УНО использую как отладочную плату. Вытаскиваю из панельки атмегу 328, вставляю амегу8, подключаю к ICSP разъёму программатор.
Ардуино ИДЕ использую просто как удобный инструмент для начинающего. Если этот инструмент компилирует с учётом контроллера, который я выставляю в настройках, то почему нет?
Вопрос в том, что один и тот же скетч (считай ,что код) скомпилированный для соответствующих контроллеров (в настройках меняю при компиляции) на одном контроллере работает, а на другом только часть.
Но язык Ц++ придуман,чтобы писать программульки не озираясь на 'железо'. компилятор уже следит за правильностью перевода языка высокого уровня в понятные коды для контроллера. Получается,что Ардуино ИДЕ делает что-то не так.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 03:12:33
SIM31
Arduino IDE всё делает нормально. В AtMega8 памяти просто меньше. И потребление выше. Даже для AtTiny13 можно под ардуиной закодить.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 05:23:20
Ivanoff-iv
В арду выводы обозначаются цифрами, а в меге - портX.N, может у платки после переделки эта нумерация не сходится...
попробуй подрыгать ножками - убедиться в соответствии номеров пинам.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 08:03:28
Deemon
[uquote="SIM31",url="/forum/viewtopic.php?p=3510847#p3510847"]Arduino IDE всё делает нормально. В AtMega8 памяти просто меньше. И потребление выше. Даже для AtTiny13 можно под ардуиной закодить.[/uquote]

Вот для ATTiny2313 ARDUINO IDE как раз отказалась компилировать этот скетч, ругаясь на функцию управления дисплеем. Оказалось, что не всё можно скомпилировать для ATTiny,а только часть команд поддерживается. ATTiny поддержка в Arduino IDE мной прикручена.
Поэтому и стал возиться с ATmega8A.

Добавлено after 1 minute 54 seconds:
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3510859#p3510859"]В арду выводы обозначаются цифрами, а в меге - портX.N, может у платки после переделки эта нумерация не сходится...
попробуй подрыгать ножками - убедиться в соответствии номеров пинам.[/uquote]

Дрыгал. Это первое,что попробовал.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 09:04:29
Dimon456
Сам скейч выложите.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 11:11:27
Deemon
#include <iarduino_DHT.h> // подключаем библиотеку для работы с датчиком DHT
#include <LCD5110_Basic.h> // подключаем библиотеку

LCD5110 myGLCD(6,5,4,3,2); // объявляем номера пинов LCD CLK,DIN,DC,RST,CE

extern uint8_t SmallFont[]; // малый шрифт (из библиотеки)
extern uint8_t BigNumbers[]; // средний шрифт для цифр (из библиотеки)
iarduino_DHT sensor(7); // пин DHT11

void setup() {

myGLCD.InitLCD(68); // инициализация LCD дисплея
myGLCD.clrScr(); // очистка экрана

}

void loop() {

myGLCD.setFont(SmallFont); // задаём размер шрифта
myGLCD.print("TemP", LEFT, 10); // выводим на строке 4 равнение по левому краю
myGLCD.print("Humi", LEFT, 34); // выводим на строке 44 равнение по левому краю

sensor.read();
int h = sensor.hum ;//dht.readHumidity()
int t = sensor.tem ; //dht.readTemperature()
myGLCD.setFont(BigNumbers); // задаём размер цифр
myGLCD.print(String(t),27, 0); // выводим в строке 4
myGLCD.print(String(h),27, 24); // выводим в строке 34

delay (1000); // задержка 1 сек
}

Добавлено after 1 hour 50 minutes 10 seconds:
Похоже я нашёл засаду.

Применив ещё одну библиотеку, увидел, что с датчика что-то считывается, но полная ерунда. Но показания меняются.

Причина, наверное, в том, что атмеге8 просто не хватает быстродействия. атмега328 в ардуине работает от внешнего кварца 16 МГц, а атмега8 от внутреннего генератора 8 Мгц. Переключив фьюзы для уменьшения частоты внутреннего генератора на атмеге8 получил то, что видел на других библиотеках.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 12:28:41
BOB51
Я ж уже давал выше схемку для NG.
А перед тем надо в нее еще соответствующий бутлоадер загрузить...
Фузы в соответствии с бутлоадером на внешний кварц устанавливаются - иначе все временные характеристики (в том числе и для встроенных в IDE "расширенных " функций) потеряют/изменят свои характеристики.
Иное дело ежли "за пределами" ардуины - там все что угодно делать можно.
Или хороший опыт по настройке самой среды (что посолиднее работы напрямую под Си для АВРок знаний требует).
Для начинающего делать чего-то "вне рамок"... весьма сомнительно успех принесет...
:roll:

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 12:40:55
Dimon456
Сделайте следующее
Спойлер

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

#include <iarduino_DHT.h> // подключаем библиотеку для работы с датчиком DHT

iarduino_DHT sensor(7); // пин DHT11 PD7

void setup() {
Serial.begin(9600);   // скорость порта UART 9600
delay (2000); // задержка 1 сек
Serial.println("Welcome to the DHT11 Communication Test");
}

void loop() {
sensor.read();
int h = sensor.hum ;//dht.readHumidity()
int t = sensor.tem ; //dht.readTemperature()

Serial.print("Humidity ");
Serial.println(h);
Serial.print("Temperature ");
Serial.println(t);

delay (1000); // задержка 1 сек
}
А здесь частота 8Меги настраивается
СпойлерИзображение

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 12:58:06
Deemon
Всем спасибо.

В самом деле 8 МГц внутреннего генератора не хватает. Выставил фьюзы программатор на внешний генератор и контроллер заработал с кварцем 16 Мгц на плате ардуино уно.

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 13:21:50
BOB51
[uquote="Dimon456",url="/forum/viewtopic.php?p=3511086#p3511086"]...А здесь частота 8Меги настраивается
СпойлерИзображение
[/uquote]
У Вас не базовая версия IDE (по умолчанию), а с дополнительно установленным вариантом платок (с какого-то ресурса инета и/или самодельная - через соответствующие программы изготовленная).
У начинающего такого комплекта обычно нету - ежли показан пример не помешает и указать откуда и каким образом подобная конфигурация (платка) устанавливается (или ссыль предоставить). В противном случае пример будет бесполезен.
8)

Re: Arduino IDE и Atmega8a.

Добавлено: Пт ноя 23, 2018 14:16:57
Deemon
К базовой версии ИДЕ можно прикрутить поддержку других board'ов. Я пример понял, но не прикручивал поддержку ATMega8 , а воспользовался поддержкой ATMega8 на Ардуино NG. Теперь прикручу поддержку контроллеров не в составе ардуинок.
Когда начал играться с ATTiny, то прикрутил к ИДЕ поддержку этих контроллеров. А с ATmega8 я не знал, что отдельная поддержка даёт множество настроек. К тому же, если компилировать hex в ИДЕ , а заливать через отдельную прогу программатором, то фьюзы не поменяются. А вот если приаттачить программатор к ИДЕ, то настройки можно будет менять. Но ИДЕ не поддерживает китайский USB ISP программатор. Поэтому пока такой зоопарк.