Jump to content

Recommended Posts

Здравствуйте! До недавнего времени использовал ОС Windows, но решил попробовать Linux и не пожалел. Все программы которые были в Windows я с успехом перенес на Ubuntu. Но вот пришла очередь WinAVR. Нашел я в репозитрии компилятор avr-gcc дополнительно к нему скачал avr-libc, написал простую программу мигания светодиодом

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

int main()
{
DDRA = 0xff;
for(;
{
PORTA = 0xff;
_delay_ms(1000);
PORTA = 0x00;
_delay_ms(1000);
}
}

Ввожу команду

 $avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -o main.o main.c

но при компиляций компилятор выдает ошибку что не знает такой переменой как PORTA и DDRA!

Кстати для примера использовал это статью

Edited by admin

Share this post


Link to post
Share on other sites

Внимательно смотрим даташит на Мегу8... И где там порт А ?

Edited by qwer

Share this post


Link to post
Share on other sites

Внимательно смотрим даташит на Мегу8... И где там порт А ?

Точно! Вот я... Спасибо...

@qwer, а вы не могли бы подсказать хороший симулятор МК-в AVR?

Share this post


Link to post
Share on other sites

Литиевые батарейки Fanso для систем телеметрии и дистанционного контроля

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

Подробнее

под линухом ? Разве что Eclipse + gdb. Или Протеус под Wine.

Но я не пользуюсь, хватает светодиодов/индикаторов и RS232.

Edited by qwer

Share this post


Link to post
Share on other sites
                     

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

Компэл совместно с Texas Instruments 23 октября 2019 приглашают на вебинар, посвященный системам-на-кристалле для построения ультразвуковых расходомеров жидкостей и газов на базе ядра MSP430. Вебинар проводит Йоханн Ципперер – эксперт по ультразвуковым технологиям, непосредственно участвовавший в создании данного решения. На вебинаре компания Texas Instruments представит однокристальное решение, позволяющее создавать точные недорогие счетчики жидкостей и газов.

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

Join the conversation

You can post now and register later. 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 Anton Bondarenko
      Всем привет
      Прошу не ругать, впервые подобный вопрос задаю.
      Хочу сделать прибор, который будет посылать сигнал, когда возле прибора будет проходить металлический предмет. 
      — угол отслеживания до 30° а лучше прямая линия, траектория
      — время реакции очень высокое до 100 мс
      — ширина проема в котором нужно сканировать от 10 до 20метров,
      — передача сигнала через вифи
      Может есть готовые решения, или отдельные компоненты.
      Подскажите пжл в каком направлении искать.
      Смотрел датчики движения, но главная проблема — время реакции.
      Спасибо
       
    • 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; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
  • Сообщения

    • Доделал блок давно, все не отписывался так как тестировал подольше. Немного отзыва: - заработал сразу, все защиты отрабатывают четко и сразу (поначалу немного не хватало напряжения питания ОУ при нагружении блока, домотал дополнительную обмотку - все хорошо). - блок переключения обмоток от Silvi (Иван Ключ) показал хорошую стабильную работу, но гистерезис показался великоват, минимум, что получается добиться на подстроечниках - 1В (подбором постоянных не занимался). Дребезга реле в разных режимах при нормальной эксплуатации пока не замечено. - блок вкл/откл выхода от boris_ka на полевом не подошел по причине того, что при КЗ для выставления тока он отключает выход. Блок от Dr. West на реле работает безотказно. Хотя первый вариант был более привлекательным в плане потребления, но увы.  Смущают некоторые моменты: - напряжение на КТ опорного напряжения (12В) в зависимости от нагрузки немного меняется в пределах 0,1-0,2В (точно не помню уже, не записывал) это у всех так? Или все таки мой трансформатор совсем дохлый? Сильно ли влияет? Тл ка питается от отдельной обмотки того же транса. Замерил пульсации (на клеммах) с нагрузкой: - пульсации доходили до 10-12 мВ. Замена конденсаторов на другие и экранирование проводов регуляторов снизило до 5мВ. Это при соблюдении номиналов по схеме (10 мкФ и 0,68 мкФ). У кого сколько? При замене 10 мкФ на 22 мкФ пульсации в районе 2-3 мВ. Хотелось бы оставить номиналы по схеме. При ограничении тока пульсации что-то совсем многовато - доходит до 40-50 мВ. Тут кто-то может предоставить свои измерения, у кого сколько? По поводу: и т.д. это гениальная формулировка того, что я пытался объяснить выше. Кто бы предоставил более точные цифры или хотя бы свои замеры на падение напряжения на участках цепи, транзисторе, при нагружении и прочее... Для показометра использовал вольтамперметр от сюда вольтамперметр на atmega8. Показал хорошее быстродействие и весьма точные показания во всем диапазоне. На али продаются готовые как 2 в 1, но ни линейности показаний ни быстродействия такого близко нет. Кто еще что собирал, есть чем поделиться?
    • Собрал себе цифровой усилитель, 2х250ватт на 4Ом. Теперь у меня два усилителя для дома. Один линейный 2х600ватт на 2Ом. и цифровой.  
    • Либо это просто нулевой резистор - перемычка. Тестер покажет. Установлен, кстати, по счётному входу микросхемы. Возможно, в процессе наладки устройства импульсы подавались с другого источника, а потом был запаян этот "резистор". Либо номинал подбирался экспериментально до получения нужной частоты встроенного мультивибратора - плохо видно дорожки.
    • Можно на один раз - слить важные данные, а потом выбросить. Либо припаять намертво в адаптёр microSD - SD и пользоваться так.
    • Да просто у него в щитке бутылка припрятана, а коллега мешает "здоровье поправить". Нет бы помочь.
    • можно ли починить сд карту если стертый один контакт 
    • Эта заглушка представляет собой обыкновенный штекер СШ-5 (он же DIN41524) с двумя перемычками. Вы можете легко изготовить такой самостоятельно или попросить сделать это в любой мастерской по ремонту аппаратуры. При желании можно и корпус вылепить "как заводской" из эпоксидной замазки.  
  • Покупай!

×
×
  • Create New...