Jump to content

Recommended Posts

где у avr studio 4 валяются сишные либы? или без установленного winavr "они не валяются"? :crazy:

Share this post


Link to post
Share on other sites

Особенности схемотехники и трассировки печатных плат для STM32WB55

Разработка новых устройств на базе беспроводного микроконтроллера STM32WB от STMicroelectronics может быть сделана в короткий срок, если выполнять некоторые важные правила и воспользоваться готовыми конструктивными решениями и рекомендациями инженеров ST.

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

поставил winavr поверх студии, но что то не понял, интегрировались ли они

пишет в message при загрузке:

gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools.

Share this post


Link to post
Share on other sites

помогите плиз определиться с выбором прогроматора из этих http://www.ebay.com/...at=0&_from=R40#

У меня такого вида: http://www.ebay.com/itm/AVR-USBASP-Programmer-ATMEGA8-ATMEGA128-ATMEGA168-etc-/320682999661?pt=LH_DefaultDomain_0&hash=item4aaa323f6d , вчера забрал с почты - работает на ура! (win7 x64)

поставил winavr поверх студии, но что то не понял, интегрировались ли они

пишет в message при загрузке:

gcc plug-in: No AVR Toolchain installation found. The AVR GCC plug-in can still be used if you set up your own build tools.

Попробуйте Project -> Configuration options -> Custom options -> снять галочку с "Use AVR toolchain" и указать путь к "winavr/bin/avr-gcc.exe" и "winavr/utils/bin/make.exe"

Share this post


Link to post
Share on other sites
                     

Видеокурс Работаем с микроконтроллерами STM32G0. Впервые на русском языке.

В цикле видеокурсов по работе с STM32G0 от компании STMicroelectronics показаны архитектура, периферия (особенности процессорного ядра, режимов пониженного питания, векторов прерываний, DMA и мультиплексора DMA, схемы тактирования и сброса, и.т.д.) и даны практические примеры. Материал дает наглядное понимание того, как начать работу на новых микроконтроллерах STM32G0

Подробнее

Guest

помогите плиз определиться с выбором прогроматора из этих http://www.ebay.com/...at=0&_from=R40#

все показанные программаторы - USBasp

буквально вчера тему поднимали:

http://forum.cxem.net/index.php?showtopic=122463#comment-1492447

на Ebay я покупал у:

Chip_Partner_Store

Czb Electronic

TxHang Electronic

я покупал у производителя, ссылка на него указана в той теме

но совутую прикупить программатор в корпусе:

$T2eC16RHJHEE9ny2q9ECBQ-Y7uSQZw~~60_57.JPG

Share this post


Link to post
Share on other sites

Камрады, есть пару вопросов (начинал на 58 странице).

Вообщем разобрался с портами ввода вывода, прерываниями (хотя не все из них понятны), стеком и т.д... Пока пытаюсь понять что такое ШИМ и АЦП (чего можно добиться с их помощью понял, а вот как это все работает не понимается :)). Сначала программировал на асме (по обучалке радиокота), скачал Белова и Ревича. Помигал светодиодом и т.д (прошивал через usbasp attiny2313). Но из-за этой всей информации голова кругом: не могу понять, на чем работать С или асм? Асм проще по командам, да и вообще в связке с даташитами и учебниками все хорошо, минус - большой по объему код да и вообще. А на С с другой стороны все гораздо проще (язык выского уровня все таки) но и запутаннее, какие-то непонятные команды (да и вообще сам синтаксис, на асме такой синтаксис что как будто ты напрямую говоришь контроллеру что делать), подключение разных библиотек и т.д и т.п и не совсем это все понятно. Собственно вопрос: на чем работать? Цели определенной нету... Просто это мне интересно (хобби), да и хочется что нибудь умное паять что бы "улучшить качество жизни" :)

Извиняюсь за не совсем внятно изложенные мысли

На данный момент хочу собрать небольшую отладочную плату, и сделать модули с светодиодами, кнопками и семисегментными индикаторами. Хочется освоить датчики температуры, управление нагрузками через ИК, но пока к сожалению знаний не хватает (уже пытался разбираться).

Edited by kos

Share this post


Link to post
Share on other sites

Ты спешишь постоянно куда-то, от этого непонимание. Попробуй переварить все, а когда что-то делаешь делай по принципу черного ящика. Постоянно на ассемблере писать замаешься! Попробуй сокращать величину и понятность кода при помощи директив .DEFINE и .MACRO

.macro set_io  ; использовать регистр ACCUM для загрузки константы в порт
 LDI   ACCUM,  @1    ; 1 такт
 OUT   @0,	  ACCUM ; 1 такт
.endmacro

; Определения
#define cmd_port PINB3  ; номер порта через который получаются команды

#define MODULE_data0    SBI PORTD , PIND7
#define MODULE_data1    CBI PORTD , PIND7
#define ADC_run            SBI ADCSRA, ADSC

;Макросы
.macro reset_timer    ; Таймер считает от 0 до OCR2...
 LDI   ACCUM, 0x00   ; 1 такт
 OUT   TCNT2, ACCUM  ; 1 такт
.endmacro

.macro wait_timer
BST    STA, timer_int
BRTC    PC-0x0001		    // На одну команду выше
CLT
BLD    STA, timer_int
.endmacro

.macro wait_adc
SBIC    ADCSRA, ADSC
RJMP    PC-0x0001
.endmacro

Использование:

set_io DDRB,   0b11111111; 1 - выход, 0 - вход.
set_io DDRC,   0b00000000; 1 - выход, 0 - вход.
set_io DDRD,   0b11111100; 1 - выход, 0 - вход. PD0, PD1 - USART

; настройка таймера
set_io TCCR2,    0b00001010  ; режим таймера - CTC, работа таймера c прескалером = 8.
set_io    OCR2,    timer_max_value ; Период прерываний таймера
set_io TIMSK,  0b10000000  ; разрешаем прерывание от таймера(по сранению на OCR2).


; Считать по UART номер канала АЦП и вернуть измеренное значение
RCALL    USART_Receive	 ; считываем номер канала
ANDI    ACCUM, 0x0F	   ; Ограничим входной параметр значением 0-15
ORI    ACCUM, 0b11000000
OUT    ADMUX, ACCUM      ; Выбор канала АЦП, опорное = встроен. 2.56В
ADC_run
wait_adc
IN        ACCUM, ADCL
RCALL    USART_Transmit
IN        ACCUM, ADCH
RCALL    USART_Transmit

И т.д. программы на ассемблере становятся более понятными и короткими.

Share this post


Link to post
Share on other sites

Спасибо...

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

Короче я не знаю, голова взорвется сейчас :)

Edited by kos

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Товарищи, хотел прошить ATmega через LPT, словил ошибку "dlportio.sys device driver not loaded. Port I/O will have no effect", представленные в интернете способы решения на помогли. Уже надумал собрать USB программатор, но черт (!) они все на AVR. Возможно ли что то предпренять, для устранения ошибки?

Edited by Electr0nics

Share this post


Link to post
Share on other sites

Если нет выбора... то надо ставить, прошить микросхему для USB программатора и снести к чертям.

Share this post


Link to post
Share on other sites
Уже надумал собрать USB программатор, но черт (!) они все на AVR. Возможно ли что то предпренять, для устранения ошибки?

есть же варианты с применением непрограммируемых микросхем

например

http://easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html

Share this post


Link to post
Share on other sites
Guest
Уже надумал собрать USB программатор, но черт (!) они все на AVR. Возможно ли что то предпренять, для устранения ошибки?

есть же варианты с применением непрограммируемых микросхем

например

http://easyelectroni...ontrollera.html

у меня так по-человечески и не заработал... то фузы неверно шил, то прошивку... то отваливался...

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

А какая разница покупной он или сделанный своими руками??

Я лучше прошью контроллер, чем буду на 232 собирать.

Share this post


Link to post
Share on other sites

Здравствуйте, нужно сделать на мега8 чтобы она выходила из сна(поувер-даун) по INT1

настроил

MCUCR=0xA0;

GICR=0x80;

Уходит в сон и больше не просыпается )

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

Share this post


Link to post
Share on other sites

Как вариант. Попробуйте.


[quote]	 MCUCR=0xA0
 GICR=0x80[/quote]

WAIT:
 SBIS PIND,3				 ; проверяем, не нажата ли кнопка
 RJMP WAIT				 ; при необходимости, дожидаемся ее отпускания

 IN		 R22,GIFR
 SBR	 R22,0x80
 OUT	 GIFR,R22		 ; принудительно сбрасываем флаг INTF1

 SEI
 SLEEP
;..................
;..................
;..................
;..................
;..................
ISR1:
 SBIS PIND,3				 ; дожидаемся отпускания кнопки
 RJMP ISR1

 RCALL DELAY

 SBIS PIND,3				 ; проверяем действительность отпускания кнопки
 RJMP ISR1

 CLR ZH
 OUT GIMSK,ZH
 OUT MCUCR,ZH

 RET								 ; выход с глобально запрещенными прерываниями

Edited by akl

Share this post


Link to post
Share on other sites

Спасибо, но не помогло...

Для тестов использую протеус.

Когда засыпает, похоже что вобще не реагирует на кнопку, хотя если не спит, то видно что прерывания происходит.

Кнопка подключена через подтягивающий резистор на землю, в параллель стоит конденсатор. В протеусе видно что на ножке низкий уровень при нажатии.

Засыпает так

interrupt [TIM1_OVF] void start_sleep(void){
PORTC=0x00;
PORTD=0x00;
PORTD.3=1;
PORTB=0x00;
GIFR=0x80;
#asm("sleep");
}

Кнопка на PD3

Edited by CTIGRA

Share this post


Link to post
Share on other sites

Засыпает в прерывании? Плохая идея, потому что там прерывания запрещены, да и стеку такое вряд ли понравится. Лучше вынесите в бесконечный цикл.

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 Максим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; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • Guest Денис
      By Guest Денис
      В общем, есть такое чудо китайской техники (фото)
      Что оно может:
      1. Заряжаться через microUSB порт
      2. Кнопка вкл/выкл, она же переключает режимы
      3. 3 режима свечения светодиода (он светит разными цветами)
      Что я хочу сделать:
      1. Пункты 1 и 2 выше
      2. Разнообразить количество режимов, переливание статичный цвет и тд...
      Вопрос: как это сделать? что купить?

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


  • Сообщения

    • Я сверлю, нарезаю резьбу под М3, вставляю каплю под хомут. Хомут любой,  я же использую прижимные пластины для транзисторов КТ819 и им подобным. Термоусадку одеваю на ножки терморезистора, чтобы убрать возможный контакт с радиатором.
    • Хороший вопрос - в принципе и не нужен, тем более что может вносить искажения АЧХ в самом начале, а дальше лампы будут усиливать мусор... по этой же причине, наверное, при внесении изменений в схему для улучшения - выбрасывание этого трансформатора более чем оправдано. Вместо него обычный делитель и ёмкость на входе -  классический вариант. Я подумал, что лучше спросить - вдруг какие-то неочевидные нюансы. Трансформатор с включенным накалом простоял два часа,  нагрелся может на пару градусов. Если учесть, что первые лампы 6Н6П будут заменены на 6Н23П,  как Вы говорили -  у которых ток накала значительно меньше - можно считать, что эта штатная обмотка накала ТСШ-170 отлично держит экзамен. Надеюсь на  днях уже включить пробно один канал, вместо выходного трансформатора временно послужит ТА-163, заодно можно будет снять параметры для расчёта намоточных данных выходных трансформаторов на железе 40х80. Жаль, что я не совсем точно попал по типоразмеру железа - хотя даже то, что попалось можно считать большой удачей. Единственный минус - нужно обрезать почти 400 пластин по высоте, чтобы площадь окна стала аналогичной заводскому железу. Несомненный плюс - то, что трансформаторы в итоге будут приземистые и отлично станут в корпус (от какого-то древнего частотомера RFT)
    • Как рассчитывалось это?
    • на предыдущей плате нащол косяк , исправил фильтр саб V3.lay6
    • Собрал еще один новый контроллер - на этот раз стартанул сразу, после учета грабель, описанных в статье . Так что похоже китам быть ...
    • Встречный вопрос - а зачем он Вам нужен? Ктр у него 1 : 1,  на чувствительность усилителя он не влияет. Судя по виткам, сердечником  может оказаться пермаллоевое кольцо.
×
×
  • Create New...