Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
08.03.2010, 17:05
|
#21
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Через 1,5 года получить совет это круто На даты все же смотрите иногда.
|
|
|
|
08.03.2010, 17:11
|
#22
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Сообщение от vitalik9
|
-› PORTB=0xff; // настраиваем порт Б на вывод данных
|
Не путайте:
DDRB = 0xFF; // Порт на вывод данных
DDRB = 0x00; // Порт на чтение данных
Это Атмел, а не Микрочип
|
|
|
|
08.03.2010, 17:46
|
#23
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
p-a-s-h-a1
Код:
|
#include ‹ctype.h›
#include ‹stdint.h›
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹inttypes.h›
#include ‹avr/io.h›
#include ‹avr/iom16.h›
#include ‹avr/interrupt.h›
#define F_CPU 11059200UL
#define BAUD_RATE ((F_CPU/(16*115200))-1)
ISR(USART_RXC_vect, ISR_BLOCK)
{
PORTB = UDR;
}
int main(void)
{
/*config USART*/
UBRRH = (unsigned char)((BAUD_RATE ›› 8) & 0x7F); /*Задаем скорость старший байт*/
UBRRL = (unsigned char)BAUD_RATE; //Задаем скорость младший байт
UCSRB = _BV(RXEN) | _BV(TXEN) | _BV(RXCIE); //Разрешаем прием (RXEN), передачу (TXEN), прерывание по приему (RXCIE)
//config io ports
DDRB = 0xFF; //Порт В на вывод
//global interrupt enable
sei();
//
for(;;){}
return(-1);
} |
|
|
|
|
27.02.2011, 21:12
|
#24
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Подскажите, кто сможет. Уcтановил я AVR-studio, попробовал написать несколько прог на ассемблере, вроде все хорошо, но любопытство толкает осваивать СИ. Доставил Winavr, помигал светодиодами, попробовал циклы, дошел до прерываний и заткнулся чего-то. Сделал схемку на Меге8535 и 3-х разрядном 7-сегментном индикаторе с динамической индикацией по разрядам. Сначала по циклу, цифры просто с нехилой скоростью бежали от 0 до 999, ну да ладно - это заработало. Решил сделать на таймере задержку переключения цифр, так в студии они вообще не переключаются, а в протеусе почему то младший разряд переключается нормально, а остальные по какому то неведомому мне закону. Пробовал мигать светодиодом по таймеру, пищалкой пищать - нормально все. Гляньте кто может, пожалуйста, где я начудил?
|
|
|
|
27.02.2011, 21:59
|
#25
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Немного подправил
while(1)
{
PORTD=0xff;
count1=count;
if(count1==10)count2++;
if(count›=10)count=0;
PORTB=number[count1];
PORTD=0xfe;
PORTD=0xff;
PORTB=number[count2];
PORTD=0xfd;
PORTD=0xff;
PORTB=number[count3];
PORTD=0xfb;
if(count2==10)count3++;
if(count1==10)count1=0;
if(count2==10)count2=0;
if(count3==10)count3=0;
}
}
ISR(TIMER1_OVF_vect)
{
TCNT1=0xfc00;
count++;
}
Расчеты надо делать до вывода на табло и цифра не может быть равна 10.
|
|
|
Сказали "Спасибо" andries5
|
|
|
27.02.2011, 22:32
|
#26
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Спасибо, попробую внимательно разобрать получившееся. И еще как-то неудобно получается, что AVRctudio не отображает при симуляции изменяющееся значение таймера, непонятно когда ловить прерывание, это никак нельзя исправить?
|
|
|
|
27.02.2011, 22:52
|
#27
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Странное дело! Запускаю исправленную прогу в Протеусе - все идет как задумано, включаю симуляцию в Студии - идет только сам цикл, на счетчике 2 секунды, а прерывания так и не возникло! Что это? Ни у кого так не было?
|
|
|
|
27.02.2011, 23:21
|
#28
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Переустановил и Студию и Winavr с перезагрузками, начал ход таймера отображаться, правда коэффициент деления тактовой большой, довольно таки медленно процесс идет, но идет!
|
|
|
|
28.02.2011, 08:55
|
#29
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Разобрался почему симулятор косячил - новая версия касперского порезала файлы, даже компиляция такой простой программы около минуты шла, я теперь прям в раздумьях...
|
|
|
|
28.02.2011, 11:34
|
#30
|
Почётный гражданин KAZUS.RU
Регистрация: 19.02.2008
Сообщений: 1,802
Сказал спасибо: 124
Сказали Спасибо 602 раз(а) в 419 сообщении(ях)
|
Re: Программирование на Си в WinAVR.
Сообщение от roma9112
|
новая версия касперского порезала файлы
|
Странно, у меня касперский ничего не испортил. А вообще пользую Winavr.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:22.
|
|