Например TDA7294

Форум РадиоКот • Просмотр темы - Програмирование pic на СИ.
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт авг 05, 2025 00:06:27

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 1364 ]     ... , , , 7, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс май 08, 2011 21:02:02 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Я так и не понял как объяснить компилятору какая функция есть обработкой прерываний.


Вернуться наверх
 
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс май 08, 2011 21:09:14 
В MCC18 я вот так делал:
Код:
void MyHighInt (void);
void MyLowInt (void);
#pragma interrupt MyHighInt
#pragma code high_vector=0x08
void high_vector (void)
{_asm goto MyHighInt _endasm}

#pragma interruptlow MyLowInt
#pragma code low_vector=0x18
void low_vector (void)
{_asm goto MyLowInt _endasm}

#pragma code
void MyHighInt(void)
{
   INTCONbits.TMR0IF = 0;
if (PORTBbits.RB4 ==1)
{
   PORTBbits.RB4 = 0;
   Delay10KTCYx (5);
}
//   WriteTimer0( 0 );
}

void MyLowInt(void)
{
   
}



Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн май 09, 2011 06:54:06 
Встал на лапы

Карма: 1
Рейтинг сообщений: 7
Зарегистрирован: Пт янв 07, 2011 08:52:08
Сообщений: 93
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
misterkuk писал(а):
Я так и не понял как объяснить компилятору какая функция есть обработкой прерываний.

Если вопрос про AVR-Libc то там прерывания объявляются так:
Код:
ISR(ИМЯ_ПРЕРЫВАНИЯ){
   какой-то код
}

что писать вместо ИМЯ_ПРЕРЫВАНИЯ можно посмотреть в avr/interrupt.h
Например срабатывание таймера 0 по совпадению с регистром сравнения для ATmega328p:
Код:
ISR(TIMER0_COMPA_vect){
   Какой-то код
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн май 09, 2011 11:24:54 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Работаю с пик. Компилятор HI-TECH Software. во всех функциях обработки прер. что я видел есть ччастичка int. если она есть то значит прерывание уходит в эту функцию. Или как?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн май 09, 2011 11:37:16 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
прерывание уходит на адрес 4, ключевое слово interrupt - компилятор размещает функцию именно по этому адресу - и включает код, сохраняющий - восстанавливающий контекст прерывания.
interrupt void my_name(void)
{


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Пн май 09, 2011 13:45:26 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
То что нада. именно это и хотел услышать:) спс.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 11, 2011 17:00:18 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб фев 07, 2009 19:21:25
Сообщений: 346
Рейтинг сообщения: 0
доброе время суток коты.
я программирую PIC-и на асеммблере, сейчас пытаюсь програмировать на Си в HI-TECH, вопрос вот в чём, имеется результат преоброзований АЦП он в пике лежит в 2-х байтах да ктомуже в 2-х банках. а как мне его переправить в переменную типа << int >>.

_________________
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 11, 2011 17:36:21 
Мучитель микросхем

Зарегистрирован: Пт ноя 20, 2009 20:38:12
Сообщений: 429
Откуда: Калининград (Koenigsberg)
Рейтинг сообщения: 0
БАТАРЕЙКУС писал(а):
доброе время суток коты.
я программирую PIC-и на асеммблере, сейчас пытаюсь програмировать на Си в HI-TECH, вопрос вот в чём, имеется результат преоброзований АЦП он в пике лежит в 2-х байтах да ктомуже в 2-х банках. а как мне его переправить в переменную типа << int >>.

Код:
unsigned int adc_res;
....
adc_res=(ADRESH<<8)+ADRESL;

Всё остальное компилятор делает сам.
Это в случае если результат АЦП "Right justified". Если хочется Left justified догадайся сам ;)
Вообще в комплекте с компилятором (в папке samples) идёт коллекция примеров с подробными коментариями практически по всем основным темам.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 14, 2011 00:56:52 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Ребят, разобрался с прерываниями. Терь тупик. Немогу сделать 1 секундное прерывание. кварц часовой, предделитель 128.
256*128=32768. Тоесть всё чётко ии ббез заморочек. Но в протеусе порт у меня моргает Гдето рас в 2-3 сикунды. Это тошо протеус глючится или чтото не так делаю?
Код:
#include <pic.h>
__CONFIG (LP & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
unsigned long    seconds;
void  interrupt timer0_isr (void)
{
T0IF=0;

      if (PORTB==0)
      PORTB=255;
      else
      PORTB=0;

}

void pauza (void){ // начало переменная
unsigned int x; // локальная
x = 20000; // в tmp поместить некое максимальное число
while (x-->0);
}// конец функции

void podgot (void)
{
TRISA = 0b11110000; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1;  // подтягивающие R (0-вкл, 1-выкл)
OPTION = 0b10010110;
T0CS = 0; // внутренний тактовый сигнал
T0IE = 1; //разрешить прерывания от TMR0
GIE = 1; //разрешить глобальные прерывания

}
void main (void)
{
podgot ();
TMR0=0;
while (1)
{

}
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 14, 2011 02:05:13 
Мучитель микросхем

Зарегистрирован: Пт ноя 20, 2009 20:38:12
Сообщений: 429
Откуда: Калининград (Koenigsberg)
Рейтинг сообщения: 0
Таймер инкрементируется не по тактовой частоте кварца, а каждый машинный цикл, т.е. оная частота делённая на 4. Поэтому предделитель нужен 32.
Код:
if (PORTB==0)
      PORTB=255;
      else
      PORTB=0;

Проще PORTB=~PORTB;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 14, 2011 10:04:31 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Сб апр 17, 2010 10:30:13
Сообщений: 400
Рейтинг сообщения: 0
Я в протеусе прописал в контролере. 32768. Или так нельзя?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Сб май 14, 2011 19:22:19 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
Да кто же Вам запретит ... А где вопрос ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Вс май 15, 2011 01:27:07 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Сб фев 07, 2009 19:21:25
Сообщений: 346
Рейтинг сообщения: 0
ооо спасиибо FlySnake. оказывается всё очень просто. спасибо за помощь.

_________________
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 18, 2011 17:04:40 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Сб июл 11, 2009 18:42:21
Сообщений: 1135
Откуда: Украина, г.Николаев
Рейтинг сообщения: 0
недельку пробую PIC C18. С кнопочками/мигалочками всё получилось сразу. Потом решил подрубить ЖКИ. Использовал для этого официальные библиотеки. Всё работает, кроме ф-ции для вывода строки:
Код:
putrsXLCD ('Hello World');

И она нифига не работает у меня... Делал и по примеру и не по примеру... на ЖКИ она ничего не выводит. Объясните, пожалуйста, как её правильно использовать, а то выводить по символу ещё дольше чем на асме :))
П.С. Интересует именно эта библиотека, хочу понять в чём дело.


Вложения:
putrsXLCD.png [49.99 KiB]
Скачиваний: 380

_________________
Успех - императив!
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 18, 2011 18:33:57 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
А так ?
const rom char *cBuf="HELLO";

putrsXLD(cBuf);

лично я этими не пользуюсь, все равно для русификации надо менять.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 18, 2011 19:30:09 
Мучитель микросхем

Зарегистрирован: Пт ноя 20, 2009 20:38:12
Сообщений: 429
Откуда: Калининград (Koenigsberg)
Рейтинг сообщения: 0
Двойные кавычки для строковой константы нужны, а у вас одинарные как для отдельного char-а. Чесно говоря не знаю как C18 это проглатывает, но по-хорошему это фишка Си.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 18, 2011 21:13:59 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Сб июл 11, 2009 18:42:21
Сообщений: 1135
Откуда: Украина, г.Николаев
Рейтинг сообщения: 0
urry
Цитата:
const rom char *cBuf="HELLO";

putrsXLСD(cBuf);

Вот испробовал. Результат ложно-положительный :)). Выводит только первый символ строки.

Цитата:
лично я этими не пользуюсь, все равно для русификации надо менять.

Дописать нужные символы не проблема.


Вот собсно вся программа...
Код:
#include <p18f4550.h>
#include <delays.h>
#include <xlcd.h>
//#include <openxlcd.c>
#pragma config LVP = OFF
#pragma config PLLDIV = 1
 #pragma config FOSC = XT_XT
#pragma config FCMEN = OFF
#pragma config PWRT = ON
#pragma config WDT = OFF
#pragma config MCLRE = OFF

////////
#define led_yellow PORTAbits.RA0
#define knopka PORTAbits.RA1
////////
unsigned char counter;
const rom char *cBuf="HELLOW";

////////
void setting_ports (void)
{
 ADCON1 = 0xFF;
 TRISA = 0b00000010;
 TRISB = 0x00;
 PORTB=0x00;
}
////////
void proverka (void)
{
if (knopka == 0)

Delay10KTCYx (25), led_yellow = 1;

else led_yellow=0, PORTB=0xff;
}
////////
void main (void)
{

setting_ports ();
OpenXLCD (FOUR_BIT&LINES_5X7);
while(BusyXLCD());
WriteCmdXLCD (SHIFT_DISP_LEFT);
while(BusyXLCD());
SetDDRamAddr (0x40);//адрес 0х40
while(BusyXLCD());
WriteDataXLCD (0x70);//вывести "Р"
while(BusyXLCD());

putcXLCD(*cBuf);//выводит первый символ строки и всё...
putrsXLCD(cBuf);//вообще ничего



   ////////
   while (1)
   {   
   proverka ();
   }
}





_________________
Успех - императив!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Ср май 18, 2011 21:42:36 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
что-то мне подсказывает, что дело не в компиляторе, какие-то времянки не выдержаны, паузу сделайте, что же там выводить..
void lcd_puts(const rom char *s)
{
char chByte;
do{
chByte=*s++;
WriteDataXLCD(chByte);
}while(chByte);
}


Вложения:
lcd.zip [1.44 KiB]
Скачиваний: 238
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт май 19, 2011 22:25:28 
Сверлит текстолит когтями
Аватар пользователя

Зарегистрирован: Сб июл 11, 2009 18:42:21
Сообщений: 1135
Откуда: Украина, г.Николаев
Рейтинг сообщения: 0
urry
Не работает, хоть ты тресни. Скачал другую библиотеку - всё сразу и без проблем. На выходных залезу в ту библиотеку, попытаюсь разобраться. Спасибо, что откликнулись! Это не последний мой вопрос по С :tea:

_________________
Успех - императив!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Програмирование pic на СИ.
СообщениеДобавлено: Чт май 19, 2011 22:54:47 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
мне как-то трудно озадачиться проблемой - та хрень, что я выложил, работает и в проте, и в железе, зачем как бы искать приключений....
работает - не трогай ! вот мой девиз... :)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 1364 ]     ... , , , 7, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y