Отговори на тема  [ 1 мнение ] 
I2C В прекъсване при LPC11xx. 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Нед Окт 19, 2008 7:26 pm
Мнения: 673
Мнение I2C В прекъсване при LPC11xx.
Имам четене по I2C към един датчик. Трансфера е съвсем обикновен: -CPU праща адреса(7-bit)+бита за R/W, чака ACK от датчика, праща pointer byte ... чака ACK от датчика и приема 1 байта, праща ACK и приема втори байт. Прекъсването се случва при всяка промяна на състоянието на i2c шината, като се чете статус регистъра и се разпознават 31 състояния на i2c. Не мога да схвана ситуацията при която след поява на прекъсване по i2c се омазва трансфера. Случва се това че за четене на 2 8-битови регистъра на датчика, се получават поне 7-8 промени (прекъсвания) по i2c шината, и става само чрез сетъп на CB (callback,която се извиква след приключване на целия трансфер- след генериране на стоп нивото по i2c) функция, която я ползвам само за да разреша продължение на програмата (иначе става мазало). Да ама в същото време се случват прекъсвания на 16-bit таймера , SysTick , Uart-a ... и всичко е наред. Е пусна ли 3 реда код ( който не е в прекъсване) след функцията за четене по I2C без чакане на края на трансвера ... става тотално мазало. Дали причината е в това , че след първата промяна на статуса по i2c, програмата излиза от функцията по трансфер, и ако има код след нея продължава , докато не се случи следващо прекъсване, и компилатора не запазва в стека адресите на променливите, и вобще променливите дефинирани в тялото на функцията, и се осират нещата. Но от друга страна ако по време на трансфера по i2c се случат други прекъсвания, същия компилатор коректно си пази всичко ... :cry: Или ако не чакам четенето по i2c да завърши, не мога да продължа програмата, а същевремено, всички други прекъсвания, се изпълняват коректно без да омазват i2c шината.

Може ли да се случва това мазало заради променлива дефинирана в тялото на функцията, но тя да се пази единствено когато функцията се прекъсва от прекъсване на процесора.

_________________
Вниманиене съмвишист....ИЙ.


Съб Окт 15, 2011 8:40 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 1 мнение ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни