Vanochtend afgeleverd
En meteen even spelen met een leonardo
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_BUILTIN, LOW);
digitalWrite(LED_BUILTIN, HIGH);
}
En het resultaat
Hmmm, waar komen die onregelmatigheden vandaan, Is dat ding nu al stuk? Foutje in the pulseview software?
Oh wacht, misschien wel interrupts. Een cli() toegevoegd in setup() en het probleem verdween als sneeuw voor de zon; ik het niet uitgezocht welke interrupts het waren.
Verder spelen, laten we eens zien hoe snel we een poort aan en uit kunnen schakelen. Op een leonardo zit pin 13 op portC.
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
PORTC |= 0x80;
PORTC &= 0x7F;
}
En het resultaat
Hmmm, asymetrisch, Wat is daar nu weer aan de hand? De pulsen zijn 125ns hoog en 375ns laag. Ik heb het niet verder uitgezocht; zeer waarschijnlijk de call en return van loop().
En dan de laatste
void setup()
{
Serial1.begin(57600);
}
void loop()
{
delay(2000);
Serial1.print("Sinterklaas kapoentje");
}
Een het resultaat
Deze kostte me wat tijd omdat de eerste bytes niet lekker waren. De oplossing was om een kleine pre-capture trigger ratio in te stellen in pulseview. Als je sigrok,4.jpg hieronder opent zul je zien dat de uart output inderdaad 'sinterklaas kapoentje' geeft.
PS
openen van enige plaatje hieronder geeft een grotere versie.