Автор Тема: Зареждане на число на изходите на Ардуино  (Прочетена 11550 пъти)

emil74

  • Зомбиран Роботостроител
  • *****
  • Публикации: 227
    • Профил
    • http://www.maystorio.com
Започнахме да правим един проект, който ще се управлява от Ардуино. Става дума за управление на няколко независими паралелни процеса.
Самите процеси съм оставил на PIC контролери, като между Ардуиното и драйверите има комуникация. Обаче, какво става. За част от командите се изисква ЕДНОВРЕМЕННО подаване на 1 или 0 на няколко порта на Ардуино. Опитах с последователно бързо зареждане, но както и очаквах, PIC-ът веднага "разбира", че има времезакъснение от няколко us и изпълнява командата, отговаряща на първия активиран порт.
С други думи, ако искам да заредя един байт в цифрови портове 2,3,4,5,6,7,8,9 на Ардуино, които да прочета като байт, как да го направя? Търсенето в нета, засега не ми помага.
----------------------------------------------------------
Да не трия темата, понеже може да е полена за някого. Това става с директно обръщане към портовете на самия ATMEGA. За целта трябва да се намери съответната схема на даденото Ардуино.

AA

  • Робо-Новак
  • *****
  • Публикации: 28
    • Профил
Зареждане на число на изходите на Ардуино
« Отговор #1 -: Декември 21, 2011, 06:00:08 am »
Евентуално на още един пин да се изведе команда ,когато всичко е заредено и тогава да се чете байта.

emil74

  • Зомбиран Роботостроител
  • *****
  • Публикации: 227
    • Профил
    • http://www.maystorio.com
Зареждане на число на изходите на Ардуино
« Отговор #2 -: Декември 23, 2011, 07:49:28 pm »
Това е направено. Само не успявах да подам числото. То си стана една добра система за управление на паралелни процеси, само имах проблем със скоростта, защото числата ги четях побитово, за да мога да предам нещо.

naughty

  • Новодошъл
  • *****
  • Публикации: 2
    • Профил
Зареждане на число на изходите на Ардуино
« Отговор #3 -: Февруари 05, 2012, 05:02:12 pm »
Пробвай с директно управление на портовете

например:

DDRD = DDRD | B11111100;  //sets pins 2 to 7 as outputs
PORTD = B10101000; // sets digital pins 7,5,3 HIGH

PORTD maps to Arduino digital pins 0 to 7
PORTB maps to Arduino digital pins 8 to 13 The two high bits (6 & 7) map to the crystal pins and are not usable


повече тук:

http://www.arduino.cc/en/Reference/PortManipulation