LINUX.ORG.RU

Arduino vs DSO-2090

 


0

1

Купил себе ардуинку и вышеуказанный USB осциллограф и теперь тычу одно в другое. Нижеприведенный скетч создает ~2,7МГц на 13 пине, но я заметил постоянный сбой синхронизации горизонтальной развертки (и не только на этой частоте). Чуть углубившись, при настройке осциллографа 10 µs/div заметил периодическое пропадание мозговой деятельности ардуины примерно на 30 µs, которое похоже и является причиной постоянного сбоя синхронизации. Баг осциллографа или ардуины или это нормальное явление?

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  while(1){
  PORTB |= 0x20;
  PORTB &= ~0x20;
  }
}

★★★★★

Последнее исправление: af5 (всего исправлений: 1)

Может какие то импульсы и она перезагружается? Попробуй что-то писать в порт в setup() и посмотри, будет ли что-то писаться в консоль.

ymuv ★★★★
()
Ответ на: комментарий от ymuv

хорошая мысль, но похоже не то, только один раз печатает в порт
https://postimg.org/image/y9pw6pukz/
OpenHantek в линуксе то же самое показывает, но он кривой и бажный

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ;
  }
  Serial.println("test");
  pinMode(13, OUTPUT);
}

void loop() {
  while (1) {
    PORTB |= 0x20;
    PORTB &= ~0x20;
  }
}

af5 ★★★★★
() автор топика
Последнее исправление: af5 (всего исправлений: 1)
Ответ на: комментарий от af5

такой кадр ловится раза с десятого примерно если в Single ловить

af5 ★★★★★
() автор топика

Это такой прикол ардуины. Посмотри, как там выглядит функция main:

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}

Ну то есть он между вызовами loop() делает ещё что-то.

DuMOHsmol
()

Чтобы от этого избавиться, перепиши скетч как-то так:

int main() {
  pinMode(13, OUTPUT);
  for (;;) {
    PORTB |= 0x20;
    PORTB &= ~0x20;    
  }
}
DuMOHsmol
()

А хотя нет, у тебя же while(1) там. Тогда непонятно :D

DuMOHsmol
()

Тогда подозреваю, что там попросту какое-то прерывание работает. Пиши, в общем, на голом си (безо всяких ардуино-библиотек) и проблем не будет.

DuMOHsmol
()

Хм, мой код, выше, кстати, скорее всего и прерывания отрубит. Я же не делал их инициализацию. Так что попробуй его все равно.

DuMOHsmol
()
Ответ на: комментарий от DuMOHsmol

Да, так вроде не теряет сознание

af5 ★★★★★
() автор топика
Ответ на: комментарий от DuMOHsmol

Теперь хоть в осциллографе уверен =)

af5 ★★★★★
() автор топика
Ответ на: комментарий от Pythagoras

Да, так тоже работает, спасибо всем

af5 ★★★★★
() автор топика
Последнее исправление: af5 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.