| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Программирование ATmega 128 https://radiokot.ru/forum/viewtopic.php?f=57&t=152980 |
Страница 1 из 1 |
| Автор: | PaleyAlex [ Ср фев 28, 2018 10:40:10 ] |
| Заголовок сообщения: | Программирование ATmega 128 |
Уважаемые форумчане есть следующий код для МК ATmega 128: /* * DC_Voltmetr_Prog.cpp * * Created: 28.02.2018 11:19:19 * Author : LAN_Admin */ #include <avr/io.h> void Prb() { asm("sbi 0x1B,2"); asm("nop"); asm("cbi 0x1B,2"); asm("nop"); }; void Drrb() { asm("sbi 0x15,0"); asm("nop"); asm("cbi 0x15,0"); asm("nop"); } int main(void) { DDRA=0xFF; DDRC=0xFF; /* Replace with your application code */ while (1) { Drrb(); Prb(); } } По непонятной причине не выполняется функция Prb? В отладчике всё нормально, а смотрю на ножку при помощи осциллограаф там ничего нет ? Как такое может быть ? Подскажите пожалуйста ? |
|
| Автор: | city77 [ Ср фев 28, 2018 11:05:28 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
JTAG |
|
| Автор: | pyzhman [ Ср фев 28, 2018 12:04:45 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
отключить. |
|
| Автор: | PaleyAlex [ Вт апр 10, 2018 13:36:08 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
Я с программатором всё правильно делаю. Это уже неоднократно проверялось. А глюки при залипании функции всё равно остаются. Например вот такой код не будет работать: #define CS_ASM_Arg0 "sbi 0x1B,2" #define CS_ASM_Arg1 "cbi 0x1B,2" //---------- #include <avr/io.h> //---------- void Proba() { asm(CS_ASM_Arg0); asm(CS_ASM_Arg1); }; //---------- int main(void) { /* Replace with your application code */ DDRA=0xff; PORTA=0x00; while (1) { Proba(); asm("sbi 0x1B,0"); --проверяем по установлению высокого уровня что программа запущена (до сюда не доходит!!!!!) }; } А вот такой уже будет: #define CS_ASM_Arg0 "sbi 0x1B,2" #define CS_ASM_Arg1 "cbi 0x1B,2" //---------- #include <avr/io.h> //---------- void Proba(uint8_t sr) { asm(CS_ASM_Arg0); asm(CS_ASM_Arg1); }; //---------- int main(void) { /* Replace with your application code */ DDRA=0xff; PORTA=0x00; while (1) { Proba(1); asm("sbi 0x1B,0"); --проверяем по установлению высокого уровня что программа запущена ( а теперь доходит!!!!!) }; } Почему так??? Поясните пожалуйста!!! |
|
| Автор: | ARV [ Вт апр 10, 2018 13:49:19 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
изучите, как надо в avr-gcc оформлять ассемблерные вставки. но лучше - ответьте на вопрос, зачем вы это делаете? у вас Си в руках, зачем в него вставки делать бессмысленные?! |
|
| Автор: | PaleyAlex [ Ср апр 11, 2018 10:50:05 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
Задача проста как помидор нужно написать программный SPI. Собственно говоря посмотрел вчера внимательно дизасемблированный код. Для первого варианта: SER R24 Out 0x1A,R24 out 0x1B,R1 SBI 0x1B,2 CBI 0x1B,2 SBI 0x1B,0 RJMP PC-3 тут всё работает как нужно видны импульсы практически меандр Tполки=2uS период - 8uS Для второго варианта: основной цикл: SER R24 Out 0x1A,R24 out 0x1B,R1 RCALL PC-6 в подпрограмме SBI 0x1B,2 CBI 0x1B,2 RET продолжение основного цикла: SBI 0x1B,0 RJMP PC-2 а здесь работает уже не так как нужно видны импульсы Tполки=11uS период - 1.8mS Я полагаю, что проблема именно в вызове. rcall и ret. Стек инициализирован правильно! Повторял данные коды в качестве отдельных проектов на ассемблере. Всё точно также. Вопросы следующие: 1. В чём собственно проблема? 2. Можно ли дать пример написания таймера с использованием подпрограмм на ассемблере ? |
|
| Автор: | Feruz [ Сб апр 14, 2018 22:50:19 ] | ||
| Заголовок сообщения: | Re: Программирование ATmega 128 | ||
Если Вам нужен программный SPI именно на ассемблере, то возьмите готовое решение от Atmel
|
|||
| Автор: | akl [ Вс апр 15, 2018 05:01:13 ] |
| Заголовок сообщения: | Re: Программирование ATmega 128 |
Код: RCALL PC-6 Или компилятор цэ бредит или вами что-то не досказано...СпойлерКод: LDI XH,HIGH(RAMEND) LDI XL,LOW(RAMEND) OUT SPH,XH OUT SPL,XL CLR R1 SER R24 Out 0x1A,R24 ; DDRA out 0x1B,R1 ;PORTA RCALL PROG_SCLK SBI 0x1B,0 RJMP PC-2 PROG_SCLK: SBI 0x1B,2 CBI 0x1B,2 RET Цитата: ...Королева ходит куда угодно.
Куда угодно кому?.. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


