Jump to content
admin

Видеокурс По Avr-Микроконтроллерам Для Начинающих

Recommended Posts

23 часа назад, gogaze сказал:

А поподрорбней  весь код можно посмотреть?

 

В 07.04.2014 в 17:03, kobzar сказал:

Браво!

Вот ето подход!

Доброго дня!

я конечно понимаю что максимальное кол-во ошибок при написании кода это ошибки того кто пишит...

вот код..

#include <avr/io.h>
#define F_CPU 10000000ul
//#define F_CPU 1000000ul

//*****************

//************
#include <util/delay.h>


void preset()
{
DDRB=0xFF;
PORTB=0x00;
}
void led_on()
{
 PORTB=0xFF;
_delay_ms(100);


}

void led_off()
{
 PORTB=0x00;
_delay_ms (100);
}

int main(void)
{
    /* основной цикл */
    preset();
    while (1) 
    {
    led_on();
    led_off();
    }
}
 

при симуляции  открывается файл библиотеки   delay.h  и курсор указывает на строку 187   в ней значение  __builtin_avr_delay_cycles(__ticks_dc);

от Вашего урока отличается тем что я использую 7 студию  в 6 студии не смог включить симуляцию.

Спасибо!

Share this post


Link to post
Share on other sites

А зачем Вы заходите внутрь функций задержек ?
Я не знаю, как в Atmel Studio, но в нормальных IDE должно быть несколько вариантов шагания по коду, включая перешагивание функций.

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Похоже в 7-й версии плохо симулируется эта функция. Попробуйте в самое начало файла записать такую строку.

#define __DELAY_BACKWARD_COMPATIBLE__

это описано в файле delay.h перед функцией

void _delay_ms(double __ms)

Share this post


Link to post
Share on other sites

Доброго дня!

не помогло   и как итог всех действий  буду переставлять винду   и на голый win7  поставлю студию и посмотрю что получится

что касается вопроса  % А зачем Вы заходите внутрь функций задержек ?%   то я туда и не захожу туда студия закидывает и останавливается

как вариант что-то в системе есть лишнее или не хватает.Потому как до студии чего-то ставилось и удалялось  вероятнее всего что не всего что не все удаляется и хвосты могут влиять на работу проги  поэтому формат /С:/   и не должно быть последствий...

 

 

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

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

Подробнее...

1 hour ago, aleksandr_m328 said:

на голый win7  поставлю студию и посмотрю что получится

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

Share this post


Link to post
Share on other sites

Доброго дня!

Моя надежда не сбылась!!!   

Опять то-же самое.  С точкой остановки тоже вроде как не работает (как я думаю)

в архиве скрины (то сообщение после прогона по точке останова вдруг поможет определить где ошибка) код который пытаю.Я вероятно просто не вижу ошибку типа я пишу и потому это правильно..

Спасибо!

 

 

wrk.zip

Share this post


Link to post
Share on other sites

Брекпоинт нужно ставить на существующую инструкцию, а не на пустоту. Как по-вашему программа может остановиться на "пустоте" ?

Share this post


Link to post
Share on other sites

закомментируйте строки с _delay

или отключите оптимизацию и перешагивайте F10 (шаг с обходом)

Simulator - Toolchain - Optimization - Optimization Level: None (-o0)

Кстати если нажимать то Play то Pause вы постоянно оказываетесь в функции delay и думаете что что-то не работает, однако есть шанс один из несколько миллионов, что вы остановитесь в основной программе. Ваш код, изменение состояния портов выполняется за несколько тактов, все остальное время программа висит в delay.

Edited by Berg

Share this post


Link to post
Share on other sites

Доброго дня!

Потому как мои действия в итоге не дали положительного результата  т.е. как я понял у меня не правильно работает симуляция с библиотекой  "delay"  или банальнее  где - то стоит  галочка в настройках  или не в том месте

и поэтому чтобы не крутить гайки а потом думать что получилось  реши от смотреть   первые видио

ну поискать еще инфу     без дебагера (симулятора) можно работать есть железо   есть протеус...

Вопрос не тему   моно ли заменить каркас для кода (добавить свои ) 

**Анек ...   про ремонтеров  наверное слышали.

 

Спасибо!

Share this post


Link to post
Share on other sites

Доброго дня!

Все что пока выяснил это-то что нормально  не хочет работать {Debug_er}  (не нашел внятного описания)    в протеус_е  диоды мигают а значит можно работать

подключу  программатор к студии   и начну юзать.  

 

 

Share this post


Link to post
Share on other sites

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. примеры ,скачанные вместе с библиотекой.Всегда выдает одно

Снимок.PNG

Share this post


Link to post
Share on other sites
В 24.08.2018 в 16:47, aleksandr_m328 сказал:

Все что пока выяснил это-то что нормально  не хочет работать {Debug_er}

Вот нашел для Вас. https://www.avrfreaks.net/forum/delayms-hangs-avr-simulator

А если коротко, то отлаживая программу в том виде, которая есть, мы просто не можем дождаться, когда симулятор досчитает до конца.

В качестве доказательства - замените задержку на 1ms (_delay_ms(1);)  и увидите результат. Это только для проверки в отладчике!

#define F_CPU 10000000ul

я бы установил правильную частоту 8000000 и в Протеусе в свойствах контроллера поставил ее же.

Попробуйте так

Скрытый текст

 

#include <avr/io.h>
#define F_CPU 8000000
#include <util/delay.h>

void preset()
{
    DDRB=0xFF;
    PORTB=0x00;
}
void led_on()
{
    PORTB=0xFF;
    //_delay_ms(1000);
    _delay_ms(1);


}

void led_off()
{
    PORTB=0x00;
    //_delay_ms (1000);
    _delay_ms(1);

}


int main(void)
{
    /* Replace with your application code */
    preset();
    while (1) 
    {
        led_on();
        led_off();
    }
}

 

 

Edited by gogaze
Добавление информации

Share this post


Link to post
Share on other sites
1 час назад, кое-кто сказал:

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. примеры ,скачанные вместе с библиотекой.Всегда выдает одно

А поподробнее! Как объявлены библиотеки в заголовке? Где находятся сами файлы?2.jpg.d8462bb4c726826eed61d01c5aa3db0e.jpg1.jpg.f0cc903141db23e8ebf34e2dd1567e54.jpg

Edited by gogaze

Share this post


Link to post
Share on other sites

Что-то не работает библиотека для nokia3310 от  COKPOWEHEU.Перепробовал множество проектов в т.ч. 

Всё,разобрался уже.Оказывается надо было добавить файл lcd_chars.inc!!Об этом никто никогда не писал.И что это за файл?

Share this post


Link to post
Share on other sites
5 часов назад, кое-кто сказал:

Всегда выдает одно

там написано "не могу найти lcd_chars.inc". Этот файл должен находиться рядом с остальными исходниками. Ну либо прописать путь к нему в makefile.

Ну и традиционный совет не использовать в путях к файлам и именах что-либо кроме латиницы.

Share this post


Link to post
Share on other sites

Доброго дня!

Спасибо за помощь!

Да я понял что это ошибка симулятора  камень то работает  и это т код ---_delay_ms(1);--  тоже выкинул студию  в ошибку

возможно  какие-то настройки надо  прописать в студии   ..да и симулятор для меня сейчас не актуален есть протеус  и  видел  онлайн отладчик или нечто подобное  просто внимание не обратил  когда видел   если что можно просто поискать..

пока  занимался  студией   прописал в ней программатор  (usbasp) стало чуток удобнее   есть кнопка  с наименованием камня  сейчас это мега 8

хуже  другое  придется делать кнопки под  каждый камень.плюс очевиден не нужно выходить из студии для вызова внешней проги для прошивки  камня.

так что пока пропишу  кнопки и проверю на те камни что у меня есть пусть пока это будут мигалки   но как задел будет не плохой.

 

 

Share this post


Link to post
Share on other sites
8 часов назад, aleksandr_m328 сказал:

Да я понял что это ошибка симулятора  камень то работает  и это т код ---_delay_ms(1);--  тоже выкинул студию  в ошибку

Вот не поленился сделать видео на 2 минуты, без комментариев, и так все понятно - сначала задержка 1ms потом 100us. Обратите внимание на разницу во времени обработки задержки. 

Я на 100% не уверен, но может быть время еще зависит от мощности компьютера. У меня i5 четырехядерный.

https://yadi.sk/i/jTJ9722G3agMYM

Edited by gogaze
Ссылка на видео

Share this post


Link to post
Share on other sites

значит это не  ошибка ...  у  Вас  симулятор ведет так-же как и меня  (это я решил) что это ошибка.

ну тогда у меня все нормально со студией(искал то чего в принципе нет)  за то  почитал .....по теме.(это не  PHP)

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Sofia Vin
      Предлагаем проектную работу в Москве:
      Микроконтроллер STM32F103.
        
      Есть встроенный код с использованием функций библиотеки FreeRTOS, код имеет описанный протокол для связи с внешним миром.
        
      Необходимо проводить доработку кода под задачи программиста верхнего уровня и его тестирование в составе оборудования. 
      Работа в лаборатории (м.Университет) и удаленно. 
      Оплата по договоренности.
      Если Вы обладаете опытом схемотехнического проектирования и программирования микроконтроллеров, и Вас заинтересовала данная возможность, ждем Ваши отклики по контактным данным:
      8 (925) 023-60-02   Алексей
      E-mail: nassa@marathon.ru
       
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

      P.S. К сожалению, в гугле не нашел подробной инструкции, а я в электронике я дуб дубом


  • Сообщения

    • Мне не понятно, почему в одном канале R44 стоит 200 КОм, а в другом стоял 3.6 КОм? И стоял он с завода!
    • Нашёл где "собака зарыта была". Операционник TL071 ,был бракованный. Заменил и в колонках почти тишина, не считая лёгкого писка в высокочастотном динамике. Если ухо к нему поднести. Испытывали на звуке, на мощных колонках в пиках выдавал 1400ватт. на 8Ом. Ограниченные лимитёром. Дроссель нормально работает, еле тёплый. Остаток несущей амплитудой 4 вольт. Вот только помехи мне не нравятся, которые по земле гуляют. Извините за качество фото. Да и на выходе тоже не всё пока хорошо. Это остаток несущей после фильтра. Это пики от переключения транзисторов в усилителе. Попробую на выводы ферритовые бусинки одеть. Но пока придут, будем так слушать.
    • Спасибо) И вот такая платка для PT100. Пока что не отмывал от остатков флюса. Использую вазелиново-канифольную пасту, в чем-то похожа по консистенции на "TT", проблем с ней не было.  
    • Все. И по несколько раз. А ты разве нет? Если без шуток,про какоЙ конденсатор идет речь? Нет
    • Очередная порция новостей. МУКИ с этим усилителем продолжаются, хотя есть и успехи. Собрал второй блок УНЧ-50-8. Ну, тот на котором сгорели транзюки и на котором я все их выпаял. Во время пайки, у одного кт315 отвалилась ножка. Капец они жидкие. По счастливой случайности под рукой были 2N3904, которые даже лучше. Их и поставил. Для кт361 замены не нашлось, поэтому оставил его. На место сгоревшего кт837Н поставил кт837Х. Тестер показал что они по h21э почти одинаковые, по сравнению с кт837а. Запускаем... Работает! Постоянка на выходе 5-7 милливольт. Но к сожалению шум "бзззззз" по прежнему никуда не исчез. Попробовал увеличить емкость С5 (по дефолту 3.3пф). Рекомендуют увеличивать до 15-30пф. У меня таких номиналов не оказалось. Минимум что было, это 100пф. Попробовал его. Результат - не работает, вернее не пускает защита, реле даже не щелкает. Вернул 3.3пф на место. Ладно, условно блоки УНЧ-5-0-8 готовы и работают. Но надо победить этот звенящий фон. Замучался искать его причину. То ли тембрблок его источник, то ли сами блоки УНЧ, ума не приложу... Включил, громкость выкрутил на середину (именно в этом положении шумит больше всего), потрогал конденсаторы пальцами. Выяснилось что при прикосновении к С8 (0.1 мкф) шум усиливается. Выпаял, посмотрел, измерил. Емкость в норме 100нф, еср 1.8. Вроде порядок, да и что с ним может быть, это ж пленка. Впаял обратно. При прикосновении к металлическому корпусу темброблока шум тоже усиливается. И это отражается на индикаторе. Индикация аж в "оранжевую" зону уходит, ну то есть перегруз показывает. Может самовозбуждение где то какое то идет... фиг его знает.  Пустил в ход последнюю надежду в виде новой к157уд2. Старую выпаял, новую впаял и... Ноль эффекта, как шумело так и шумит. Пошло оно все В ПЕКЛО! 
    • перевожу на доступный : датчик с выходом ОК , нормально открытый , имеет два режима работы "триггер" и "концевик"  . в режиме "концевик" при подаче питания происходит ложное срабатывание датчика на 0,5сек.  подключенный на выход таймер запускается по спадающему фронту и происходит ложное включение всей последующей цепочки. причина : прошивка МК написана  Ивашкой из китайского "дворца Пыонеров" забывшего обнулить регистр порта вывода перед переключением порта на выход при инициализации МК. лечится перепрошивкой МК или заменой МК со своей прошивкой.
×
×
  • Create New...