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

Arduino IDE и Atmega8a.

Чт ноя 22, 2018 16:23:58

Привет.

Начал играться с 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

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

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

Re: Arduino IDE и Atmega8a.

Чт ноя 22, 2018 17:19:56

На 8-ой меге адуринка должна поддерживаться платформой
arduino NG or older
соответственно и компиляцию выполнять предварительно установив данный "инструмент", чтоб выяснить вписывается код в "старушку" или нет.
Там вот такой вариант
http://img.radiokot.ru/files/20529/1qvlfb7pkb.JPG
http://img.radiokot.ru/files/20529/1qvlfez2lz.JPG
а не атмега 328Р устанавливается.
8)
Вложения
схема.JPG
(47.69 KiB) Скачиваний: 804

Re: Arduino IDE и Atmega8a.

Чт ноя 22, 2018 19:53:03

На 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

Arduino IDE всё делает нормально. В AtMega8 памяти просто меньше. И потребление выше. Даже для AtTiny13 можно под ардуиной закодить.

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 05:23:20

В арду выводы обозначаются цифрами, а в меге - портX.N, может у платки после переделки эта нумерация не сходится...
попробуй подрыгать ножками - убедиться в соответствии номеров пинам.

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 08:03:28

Arduino IDE всё делает нормально. В AtMega8 памяти просто меньше. И потребление выше. Даже для AtTiny13 можно под ардуиной закодить.


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

Добавлено after 1 minute 54 seconds:
В арду выводы обозначаются цифрами, а в меге - портX.N, может у платки после переделки эта нумерация не сходится...
попробуй подрыгать ножками - убедиться в соответствии номеров пинам.


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

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 09:04:29

Сам скейч выложите.

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 11:11:27

#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

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

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 12:40:55

Сделайте следующее
Спойлер
Код:
#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

Всем спасибо.

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

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 13:21:50

...А здесь частота 8Меги настраивается
СпойлерИзображение

У Вас не базовая версия IDE (по умолчанию), а с дополнительно установленным вариантом платок (с какого-то ресурса инета и/или самодельная - через соответствующие программы изготовленная).
У начинающего такого комплекта обычно нету - ежли показан пример не помешает и указать откуда и каким образом подобная конфигурация (платка) устанавливается (или ссыль предоставить). В противном случае пример будет бесполезен.
8)

Re: Arduino IDE и Atmega8a.

Пт ноя 23, 2018 14:16:57

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