|
Трабл с USART1 в Mega64, Не работают прерывания !!! |
|
|
|
Aug 15 2006, 07:59
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 22-03-05
Из: Краснодар
Пользователь №: 3 600

|
Проект написан в CodeWizardAVR V1.24.8d Professional, Инициализация портов USART: // USART0 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART0 Receiver: On // USART0 Transmitter: On // USART0 Mode: Asynchronous // USART0 Baud rate: 4800 UCSR0A=0x00; UCSR0B=0xD8; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x5F; // USART1 initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART1 Receiver: On // USART1 Transmitter: On // USART1 Mode: Asynchronous // USART1 Baud rate: 4800 UCSR1A=0x00; UCSR1B=0xD8; UCSR1C=0x06; UBRR1H=0x00; UBRR1L=0x5F; USART0 - работает без проблем USART1 - не отрабатывают прерывания: usart1_rx_isr, usart1_tx_isr Проверял через AVRStudio+JTAGICEmkII, регистры проиницализированы нормально. Попробовал часть кода перенести в IAR 4.12A, все работает !!! Может кто-то сталкивался с подобными глюками Как побороться, проект большой, не хотелось бы переписывать под IAR !
|
|
|
|
|
 |
Ответов
|
Aug 17 2006, 06:01
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 22-03-05
Из: Краснодар
Пользователь №: 3 600

|
Цитата(WHALE @ Aug 16 2006, 17:36)  можно несколько замечаний? BuffStep[RecvStp] = ch; RecvStp++; можно обьединить BuffStep[RecvStp++] = ch; PORTD.4 = ~PORTD.4;-по моему,так работать не будет я делал по другому bit morg; morg ^= 1;PORTD.4 =morg; а что за команда return из прерывания?В CV она не нужна,все делается автоматом по закрытии скобок обработчика. Да,а что вы принимаете?Там точно есть посылки и протокол совпадает с установленным вами? PORTD.4 = ~PORTD.4; - это работает в CVAVR return - что бы пропустить выполнение следующего кода. Посылки и протокол совпадает полностью. Цитата(WHALE @ Aug 16 2006, 10:41)  нет,по приему все стандартно через interrupt [USART1_RXC] void usart1_rx_isr(void) Попробуй,переделывается пара строчек кода-разреши прерывания по очистке буфера TX и поменяй вектор обработчика. Попробовал, без измененей, отправляет один байт и усе.
|
|
|
|
|
Aug 17 2006, 07:37
|
Местный
  
Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332

|
Цитата(srg_co @ Aug 17 2006, 10:01)  PORTD.4 = ~PORTD.4; - это работает в CVAVR ~PORTD.4; так тоже работает в CVAVR
|
|
|
|
|
Aug 17 2006, 08:27
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 22-03-05
Из: Краснодар
Пользователь №: 3 600

|
Цитата(Shurmas @ Aug 17 2006, 11:37)  Цитата(srg_co @ Aug 17 2006, 10:01)  PORTD.4 = ~PORTD.4; - это работает в CVAVR
~PORTD.4; так тоже работает в CVAVR Нет, не будет. Цитата(aesok @ Aug 17 2006, 11:01)  Цитата(srg_co @ Aug 16 2006, 16:22)  Цитата(WHALE @ Aug 16 2006, 16:15)  так еще и прием не работает?не,че-то в консерватории не-то.Приведите текст приемного модуля.
interrupt [USART1_RXC] void usart1_rx_isr( void ) { char ch; ..... //строка принята, выведем ее if ( ch == CRLF ) { PutStrCom( BuffStep ); } } Вы и не сможете вывести более 1 смвола с помощю PutStrCom, вы же находитесь а обработчике прерывания, и прерывыния запрещенны. Анатолий. Вот PutStrCom: void PutStrCom( char *str ) { strcpy( BuffSend, str ); strcat( BuffSend, CrLf ); ic = 0; ls = strlen( BuffSend ); UDR0 = BuffSend[ic]; } Она как раз и вывод один символ в другой порт, а продолжает выводить уже прерывание USART0
|
|
|
|
|
Aug 17 2006, 09:29
|
Местный
  
Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332

|
Цитата(srg_co @ Aug 17 2006, 12:27)  Цитата(Shurmas @ Aug 17 2006, 11:37)  ~PORTD.4; так тоже работает в CVAVR
Нет, не будет. "спешал фо ю" чичас проверил - работает! как и всегда это работало в CVAVR !
|
|
|
|
|
Aug 17 2006, 09:50
|
Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 22-03-05
Из: Краснодар
Пользователь №: 3 600

|
Цитата(Shurmas @ Aug 17 2006, 13:29)  Цитата(srg_co @ Aug 17 2006, 12:27)  Цитата(Shurmas @ Aug 17 2006, 11:37)  ~PORTD.4; так тоже работает в CVAVR
Нет, не будет. "спешал фо ю" чичас проверил - работает! как и всегда это работало в CVAVR ! Понял, а версия CVAVR у Вас какая ?
|
|
|
|
Сообщений в этой теме
srg_co Трабл с USART1 в Mega64 Aug 15 2006, 07:59 bgc Ну это скорее всего классиaческая тема про фуз бит... Aug 15 2006, 08:05 srg_co Цитата(bgc @ Aug 15 2006, 12:05) Ну это с... Aug 15 2006, 09:02  WHALE а работаете через putchar-getchar?Если да,то они ... Aug 15 2006, 09:29   srg_co Цитата(WHALE @ Aug 15 2006, 13:29) а рабо... Aug 15 2006, 09:48 WHALE Вроде все правильно Попробуй в обработчике постав... Aug 15 2006, 10:43 srg_co Цитата(WHALE @ Aug 15 2006, 14:43) Вроде ... Aug 15 2006, 11:10 WHALE дык может у тебя NextCharStep() ноль присылает? Aug 15 2006, 12:17 srg_co Цитата(WHALE @ Aug 15 2006, 16:17) дык мо... Aug 15 2006, 14:58 WHALE Щас поднял старый проект на меге128 с 2usart и всп... Aug 15 2006, 15:32 srg_co Цитата(WHALE @ Aug 15 2006, 19:32) Щас по... Aug 16 2006, 06:34 defunct ЦитатаПопробовал часть кода перенести в IAR 4.12A,... Aug 15 2006, 20:25 bodja74 Да не IAR нужно учить а ассемблер и знать разницу ... Aug 15 2006, 21:24 Shurmas Цитата(bodja74 @ Aug 16 2006, 01:24) комп... Aug 16 2006, 07:47 WHALE нет,по приему все стандартно через interrupt [USA... Aug 16 2006, 06:41 WHALE Во блин,иногда они возвращаются Чур меня
Щас п... Aug 16 2006, 08:33 srg_co Цитата(WHALE @ Aug 16 2006, 12:33) Во бли... Aug 16 2006, 09:51 WHALE Это я про господина Shurmas,вы не в курсе про прои... Aug 16 2006, 11:25 srg_co Цитата(WHALE @ Aug 16 2006, 15:25) Это я ... Aug 16 2006, 11:47 WHALE так еще и прием не работает?не,че-то в консерватор... Aug 16 2006, 12:15 srg_co Цитата(WHALE @ Aug 16 2006, 16:15) так ещ... Aug 16 2006, 12:22  aesok Цитата(srg_co @ Aug 16 2006, 16:22) Цитат... Aug 17 2006, 07:01      Shurmas Цитата(srg_co @ Aug 17 2006, 13:50) а вер... Aug 17 2006, 10:04 WHALE попробуй тогда действительно в симуляторе каком-ни... Aug 17 2006, 06:30 srg_co Цитата(WHALE @ Aug 17 2006, 10:30) попроб... Aug 17 2006, 06:38 pokos Похоже, застревает оно в прерывании, выйти не могё... Aug 17 2006, 06:57 WHALE Цитата(aesok @ Aug 17 2006, 11:01) Цитата... Aug 17 2006, 08:46 srg_co Цитата(WHALE @ Aug 17 2006, 12:46) Цитата... Aug 17 2006, 09:05 WHALE да,имитировать прерывание. Aug 17 2006, 09:53 srg_co Цитата(WHALE @ Aug 17 2006, 13:53) да,ими... Aug 17 2006, 10:33 srg_co Цитата(WHALE @ Aug 17 2006, 13:53) да,ими... Aug 18 2006, 07:03 Shurmas Извините! я ошибся. он это компилит но выдает ... Aug 17 2006, 10:16 arttab Мегу 64 юзал под IAR - все OK! Оба UARTA. попр... Aug 18 2006, 07:51 srg_co Цитата(arttab @ Aug 18 2006, 11:51) Мегу ... Aug 18 2006, 09:37  defunct Цитата(srg_co @ Aug 18 2006, 12:37) В том... Aug 19 2006, 12:32   srg_co Цитата(defunct @ Aug 19 2006, 16:32) Цита... Aug 20 2006, 08:50 WHALE Цитата(srg_co @ Aug 20 2006, 12:50) Цитат... Aug 20 2006, 09:36 srg_co Цитата(WHALE @ Aug 20 2006, 13:36) Цитата... Aug 24 2006, 12:08 vet Компилятор крайним оказался? ну-ну
Работаю в CV п... Aug 24 2006, 12:21 srg_co Цитата(vet @ Aug 24 2006, 16:21) Компилят... Aug 24 2006, 14:14 vet Как и в любой программе.
За все время работы сталк... Aug 25 2006, 06:04 srg_co Цитата(vet @ Aug 25 2006, 10:04) Как и в ... Aug 25 2006, 08:09 vet Разберитесь, с какой частотой возникало прерывание... Aug 25 2006, 09:26 srg_co Цитата(vet @ Aug 25 2006, 13:26) Разберит... Aug 25 2006, 14:02 WHALE Вообще-то такие проблемы решаются довольно быстро ... Aug 25 2006, 15:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|