Как загрузить в плату ардуино код на си?
- Войдите на сайт для отправки комментариев
Сб, 16/09/2017 - 12:58
Подскажите. как в плату ардуино загрузить код на си? Желательно через Com порт, как через Arduino IDE Использую Atmel Studio 7
http://arduino.ru/forum/apparatnye-voprosy/vstroennyi-programmator#comment-271889
P.S. Открою страшный секрет - в Arduino IDE код тоже на Си...
пробовал я писать через Arduino IDE простую программу
#include <avr/io.h>
#include <util/delay.h>
#include <avr/portpins.h>
#define F_CPU 16000000L
int main ()
{
DDRB |=(1<<PB5);
PORTB &=~(1<<PB6);
while(1)
{
PORTB |=(1<<PB5);
_delay_ms(1000);
PORTB &=~(1<<PB5);
_delay_ms(1000);
}
}
Загружается, но плата не реагирует на код
DDRB |=(1<<PB5);
1<<DDB5
там C++
Он мне не нравится. Сильно объемный.
там C++
Он мне не нравится. Сильно объемный.
там C++
Он мне не нравится. Сильно объемный.
Ну я удивляюсь, почему вы пишете на русском, пишите в бинарном там проще 0000 0001.
И надо так
ПС: здесь на форуме тест для новичков может он выкладывать код здесь или тупой как бревно. http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
qwone, это тоже не будет работать. Не внимательно читаете ответы
qwone, это тоже не будет работать. Не внимательно читаете ответы
Ну у меня работает. Но да если нужна помощь в написании нерабочего скетча то я пас. Обычно нерабочий скетч случайно пишется.
P.S. Открою страшный секрет - в Arduino IDE код тоже на Си...
Да, но ТС хочет загрузить код на Си не в ИДЕ, а именно в плату.
Ага. Я учу си и пробую все в протеусе. Хотелось бы на реальных устройствах попробовать, а из реальных только UNO китай. Вот пишу я код на си, он загружается в плату, но не работает. Может ардуино не поддерживает файлы с, только сpp? Нашел статью на хабре https://habrahabr.ru/post/247663/, там нужно написать makefile, даже листинг его дан. А вот куда его сохранить, не написано. Как то, как новичку. с бубном плясать не хочется. Интерес пропадает, к сожалению.
Все, вроде понял как. Через Atmel Studio создаю файл Arduino Sketch, формат ino. Стераю все с этого файла. Там setup() и loop()
Пишу код на си и все загружается. Походу ардуино не поддерживает формат файлов си
Формат файла cpp тоже загружается и работает
VeD не существует "чистого Си". Это как учебник "Чисто Руского Язика". Компилятор он один. Но народ просто не пытается разбираться, просто генерирует бредни.
для меня.
#include <stdio.h>
int main()
{
}
это чистый си.
А все, остальное, вроде
sutup()
loop()
модификации высокого уровня
для меня.
модификации высокого уровня
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp
И где вы видите высокий уровень. Просто setuo и loop это функции. Или для вас написание функций это писец как высокий уровень. В файле объявляют что есть такие функции, а ардуино файле вы их прописываете.
Да. Верно. Для меня функции. это высокий уровень, так как не нужно залезать в дебри, бери и используй. Все готово. Как в Java
Лукавите, _delay_ms из вашего примера ведь тоже функция, да уверен, что используете и кучу других из stdlib.
А все, остальное, вроде
sutup()
loop()
модификации высокого уровня
Вы бы хоть что-нибудь узнали про языки, прежде. чем высказывать свои высокоучёные суждения. Куры же со смеху передохнут. Почитайте какую-нибудь книжку - прекратите позориться и выставлять себя на посмешище.
ПС: Это для тех кто хочет еще быть ближе к железу и даташиту.
Ну или так
Что за функция вызывается в строке 9? Где она определена?
В wiring.c в конце
Ну светодиодом то помигать -init() не нужен. У Т.С. исходный скетч в #2 вполне работоспособный, какого хрена у него PB5 не мигало -не ясно. Небось копипастил код для Uno а запускает на Леонардо, или ещё чего. Чайники народ непредсказуемый..
dimax без init не работает. Светодиод зажигается и все. скорее всего там надо несколько битов поставить на нужную частоту кварца.
qwone, в arduino IDE 100% работает. Что код топикстартера из #2, что ваш из #18 без строчки init();
В железе не мигает. А да компилируется и заливается это точно.
Зажигание гашение отрабатывает. А вот паузы не совсем.
У меня мигает. Посмотрите в тот инит, там настраивается таймер для дуиновских миллис/delay , PWM, и АЦП - ничего из этого не требуется для мигалки.
dimax, Мда. прошелся по всем платам и вернулся к исходной замигало. init не надо.Спасибо.
у меня Uno только, в протеусе то мигает
*((uint8_t*)0x24) |= (1 << bit);
*((uint8_t*)0x24) |= (1 << bit);
Разименование и приведение. Вы же кричали что вы в Си разбираетесь. Вот это оно и есть.
я не видел такое в си.
Там проще. По крайней мере в учебниках.
А что приводит вторая звездочка? Разыменование, это же выдергивание по указателю, значение по адресу?
прочитал я. Приведение 0x24 к 8 байтовами инту? только зачем звездочка?
В процессоре есть регистры . У регистра адрес. Вот надо привести число 0x24 к байтовому указателю на адрес 0x24 . А так как указатель это ардес, а работать надо по значению, то разыменовывают их(получить значении или записать). Обычно это и есть основа Си. Но новички тупо считают основой введение в языки программирования, в частности в Си.
Это DDRB как я понял из коментария. Я думал, что все написано на каком нибудь ассемблере
Я понял, что такое "чистый Си" - это огромная простыня неструктурированного кода, без процедур и функций, вся запихнутая в main().
Буду знать.
"чистый Си" - это огромная простыня
С виднеющимися там и тут следами дефлорации девственного сознания ТС всякими непонятными звёздочками от Квона :)
А вы что не знали что чистоту Си меряют ... зведочками . одна две три а лучше пять звездочек.https://www.youtube.com/watch?v=3HgaE1HfEro
Вы рили тащитесь с этой разыменовальной херни и заумной псевдографики со звездочками? Мне вас жаль.
Афтар, всё просто. Оставляете функции setup(), loop() и пишите там свой эфемерный "чистый си" [(c) поехавший на теме честного си Онкель]. Всё работает.
По поводу сборки, что-то там занимает 472 байта с заголовком Дуины, 184 байта с обычным int main void и бесконечным циклом. На четверть секунды быстрее запустится. Чё вы там сэкономить пытаетесь? Оно каждые пять секунд перезагружается, что важно время загрузки? Чушь. Оно в тини85-2313 записано, что важен каждый байт? Ещё одна чушь. Экономить, ставя тини будет только дегенерат, ибо тини85 стоит 6 юаней, мега8 - 4 юаня. При том что оперативы у меги больше, флеша больше, энергонезависимой больше, выводов больше.
С уважением.