Jump to content

Recommended Posts

неправильно написал

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

Edited by Lyt

Share this post


Link to post
Share on other sites

Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью

аффф, совсем забыл что редактировал начальное сообщение

начал ковырять Си в Atmel studio

#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/delay.h>
int main(void)
{
unsigned char temp;
DDRB=0x00;
PORTB=0xFF;
DDRD=0xFF;
PORTD=0x00;
while(1)
   {
    if (PINB0==1) //если кнопка нажата - сдвиг вправо
 {
  temp=0b10000000; //запись начального значнеия
  while (temp!=0)
  {
   PORTD=temp; //запись начального значения
   temp=temp>>1; //сдвиг вправо
   delay_ms(300);
  }
 }

   }
}

вот кусок кода простенькой программы

при эмуляции пошагово доходит до while(1) и далее ничего не происходит

Share this post


Link to post
Share on other sites

Почему же не происходит. Программа выполняется, и симулятор ждет конца выполнения шага которым является While.

Используй пошаговое выполнение с заходом внутрь, или поставь брек-поинт внутри цикла.

Share this post


Link to post
Share on other sites
                     

Контроль в спящем режиме: повышение КПД батарейного питания с помощью DC/DC MAX17225 nanoPower

В статье описан практический опыт разработчика, применившего повышающий DC/DC-преобразователь MAX17225. В результате ряда практических экспериментов, потребовавших существенного обновления технической базы компании-разработчика, автор убедительно доказывает преимущества выбранного компонента и схемотехнической реализации. Увеличенное на 50% время автономной работы лучше других аргументов говорит об эффективности конвертеров MAX17225, а также о важности предварительной оценки элементной базы.

Подробнее

1.насколько я помню такие конструкции: if (PINB0==1) адекватно воспринимает только хайтек для пиков,те PINB0константа равная 0 сравниваем с единицей, условие не выполняется, висим в главном цикле....

для studio это выглядит как if (PORTB.PINB0==1)

2.что делаем этой командой? while (temp!=0) , переменной темп присваиваем 0хFF ???

Share this post


Link to post
Share on other sites

это был недописанный кусок куда

if (PINB0==1)

это из книжки белова взял, у него вроде бы для code vision сишный код написан, я изменил на PINB=0x00, теперь буду знать как обратится к конкретному биту

while (temp!=0)

пока переменная не равна нулю

Share this post


Link to post
Share on other sites
я изменил на PINB=0x00, теперь буду знать как обратится к конкретному биту
Так Вы не обратитесь к конкретному биту, только сравните весь порт с константой.

Share this post


Link to post
Share on other sites

потому что я не знал как обратиться к конкретному биту)

на ассемблере это возможно только до определенного адреса рвв

и надо сказать что студия на if (PORTB.PINB0==1)

ругается: expected identifier before numeric constant

Share this post


Link to post
Share on other sites

Си позволяет своими средствами выполнять побитовый доступ. И для этого не обязательно использовать структуры с битовыми полями.

Share this post


Link to post
Share on other sites
студия на if (PORTB.PINB0==1)

ругается:

тогда if (PINB0) будет достаточно...

Share this post


Link to post
Share on other sites
Си позволяет своими средствами выполнять побитовый доступ

и как обратится к конкретному биту?

Share this post


Link to post
Share on other sites

кстати обращение через pinb0 работает в студии оказывается

Share this post


Link to post
Share on other sites

нет, наврал я вчера

не работает через pinb0

т.е. компилируется нормально, а в железе не работает условие с таким выражением

сделал через ((PINB&(1<<PB0))==0)

Share this post


Link to post
Share on other sites

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

Имеется МК Atmega8 и Atmega32 и программаторы соответственно

Скачал с офф сайта AtmelStudio как я понял она для эмуляции работы МК

знаю язык BASIC, Turbo Basic (исходник от BASIC), Си язык разобрать могу постольку поскольку, но копаться буду в нем из-за непривычия перехода с BASIC,

где мне программировать, чтобы создать прошивку в формате HEX чтобы потом в AtmelStudio вставить? имеется в виду названия программ и если по возможности ссылки на них.... хотя можно и без ссылок...

Share this post


Link to post
Share on other sites
Guest

качайте себе Бейсик на свой вкус:

http://ugolok-master...r/compilers.htm

я пользуюсь BASCOM

ps

а какой программатор?

Баском поддерживает много разных. я прямо из среды шью и кашмарное гэ АВРтипаСтудио мне ни разу не пригодилось

Edited by Guest

Share this post


Link to post
Share on other sites

AVRStudio поддерживает только ассемблер и С. И никакой он не эмулятор, средства по эмуляции контролера в студии очень и очень скромны. Прежде всего это "блокнот" для набора исходника и компилятор.

Share this post


Link to post
Share on other sites

на современных устройствах, работающих со звуком, есть счетчик темпа, BPM. Объясните дураку как на программном уровне он считается? Мне нужно запихать этот счетчик в микроконтроллер

Share this post


Link to post
Share on other sites

Здравствуйте,

Подскажите пожалуйта, как можно с ПК записать данные на

M25P80-VMW6TG Serial Flash SPI 75 MHz, 8 Mbit (1M x 8), 2.7 - 3.6 V

Есть USBasp, FTDI программаторы, mega48

Share this post


Link to post
Share on other sites

Товарищи, в каких случаях ATmega8 (идругие AVR) шьются с внешним кварцем, а в каких без него?

Share this post


Link to post
Share on other sites
Guest

если внутренние настройки МК (фузы) настроены на внутренний RC генератор - то прошьется и без внешнего квартца

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

Share this post


Link to post
Share on other sites
Guest

а какое отношение имеет кварц в вашим шаловливым ручкам? )))

конечно можно. Фузы выставить на использование внешнего кварца и МК без него не определиться уже.

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

Edited by Guest

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 Jesterary
      Здравствуйте. Подскажите, был ли у кого-то опыт отправки изображений с камеры (подключенной через UART или bluetooth-камеры) через GPRS (у меня модуль SIM800L, но в целом это не принципиально) на удаленный сервер? Средствами управляющего микроконтроллера, пусть даже ардуины какой-нибудь, но не малины. Возможно ли это вообще? Хотелось бы, конечно, использовать в проекте беспроводную камеру и общаться с ней, ибо камеры, подключаемые напрямую так себе качество дают. 
      Сразу скажу, что важна именно такая связь. Микроконтроллер + модуль связи + камера находятся в коробке и путешествуют по городу, в это время человек сидя дома на диване может смотреть фото с этой камеры. Смартфон для моих целей не подойдет, суть именно в микроконтроллере с модулями.
      Если у кого-то такое получалось - поделитесь, пожалуйста :)
      А то нахожусь в некоторой прострации и даже не знаю, в какую сторону думать.
    • By Максим123456789
      делаю диплом, в схеме у меня микроконтроллер PIC16F688 и мне нужно его заменить на ATmega. Не могу найти похожий
    • By Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • 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; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
×
×
  • Create New...