MCU boards - test og udvikling

MCU boards - test og udvikling

MCU boards

Tanken med denne blog er at samle nyttige links og andet til Micro Board.
Vi er i klubben startet op med et Arduino projekt og bloggen vil derfor være stedet hvor der kan deles "guldkorn" og der kan spørges, når / hvis I "kører fast" med Jeres eksperimenter
Gruppen lige nu er Istvan ( OZ1EYZ), Michael ( OZ5WU ), Niels ( OZ1JLT ), Jesper ( OZ9AFK ), Villads ( OZ3CM ) og Ole ( OZ8NZ ). Og alle er velkomne til at deltage og komme med gode idéer, så kom ud af "busken og deltag her til glæde for alle med interesse for disse små boards.

Timer interrupt i UNO board

Arduino UNOPosted by Ole Bent Nielsen Fri, February 13, 2015 18:38:54

Jeg har lavet en lille demo her på hvordan timer interrupt kan gøres på et UNO board.

Bemærk at den timer der bruges, somme tider anvendes i andre biblioteker, så det skal vi lige være opmærksomme på.
Jeg har fået inspiration fra denne side http://letsmakerobots.com/content/arduino-101-timers-and-interrupts , som giver et godt overblik over de funtioner der er til rådighed.

Kodestumpen er sakset på nettet og modificeret til demo. Ikke det store program; men det viser funktionen, så der er noget at gå videre med.
Timer interrupt er jo meget nyttige, når ting skal ske med bestemte intervaller, som f.eks. timebase o.lign.

------------ her er koden til at klippe ud og sætte i Arduino compileren -----------

/* Denne kode er sakset og modificeret så der tælles og udlæses hvert sekund
da det er en 500 mSec timer interrupt skal der tælles op med 2 for hver ganf der skrives ud
til terminalvinduet
OZ8NZ, Ole den 13.02.2015
*/
/*
Example Timer1 Interrupt
Flash LED every second
*/
#define ledPin 13
int cnt = 0 ; /* counter fra interupt */
int timer1_counter;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;

// Set timer1_counter to the correct value for our interrupt interval
//timer1_counter = 64886; // preload timer 65536-16MHz/256/100Hz
//timer1_counter = 64286; // preload timer 65536-16MHz/256/50Hz
timer1_counter = 34286; // preload timer 65536-16MHz/256/2Hz

TCNT1 = timer1_counter; // preload timer
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}

ISR(TIMER1_OVF_vect) // interrupt service routine
{
TCNT1 = timer1_counter; // preload timer
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
++cnt; /* add 1 ved interrupt */
}

void loop()
{
delay(1000);
Serial.print(" Counter har talt til ");
Serial.println(cnt);
if (cnt >= 100) /* Reset counter hvis > end = 100 */
{
cnt =0;
}
}





  • Comments(0)//mcu.oz8nst.dk/#post11

Demo af interrupt funktion

Arduino UNOPosted by Ole Bent Nielsen Thu, February 12, 2015 18:59:57

Her er et lille test setup, til demo af hvordan interrupt kan gøres på et Arduino UNO board, samme funktioner kan bruges på Mega boardet, som har flere indgange til interrupt. UNO board har kun 2 indgange der kan bruges. Der kan ses meget mere i dokumentationen til Arduino.

Følgende er et lille program der kan vise interrupt funktionen på et UNO board

/* Simpel demo af interrupt funktion til Arduino uno board
Interrupt input er digital pin 2, interrupt her er ved skift af status på pin
der er indsat en counter som kan læses vha af debug terminal, hver gang der er talt til
100 resettes counter til 0

Test gøres ved at sætte "pullup" på pin 2 f.eks. 220 ohm, hvorefter pin 2 lægges til 0 for at tælle
Bemærk at der når der testes kan blive mere end en værdi højere for hver læsning, selv
om status ikke ændres, dette skyldes at der er "prell" i den forbindelse der lægges til
0, det er derfor vigtigt at sørge for ikke at få mere end 1 puls hvis dette skal bruges til
andet end en demo.

Interrupt kan være på følgende state
LOW to trigger the interrupt whenever the pin is low,
CHANGE to trigger the interrupt whenever the pin changes value
RISING to trigger when the pin goes from low to high,
FALLING for when the pin goes from high to low.

OZ8NZ den 12.02.2015

*/

int pin = 13;
volatile int state = LOW;
volatile int cnt = 0 ; /* counter fra interupt */

void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE); /* Digital pin 2 */
Serial.begin(9600);
}

void loop()
{
delay(500);
digitalWrite(pin, state);
Serial.print(" Counter har talt til ");
Serial.println(cnt);
if (cnt >= 100) /* Reset counter hvis > end = 100 */
{
cnt =0;
}
}

void blink()
{
state = !state;
++cnt; /* add 1 ved interrupt */
}



  • Comments(0)//mcu.oz8nst.dk/#post10

Et godt sted at starte

PIC StartPosted by Ole Bent Nielsen Sat, March 28, 2009 18:24:26

Når der er kommet en god idé og tiden er kommet til hvilken PIC der skal anvendes er der en større "guldgrube" hos Microchip, på addressen www.microchip.com , hvor der findes datablade, application notes og meget mere.

Når denne hjemmeside "nærlæses", kan der findes forslag til en mængde løsninger af en opgave. Et godt råd er dog efter min mening kun at bruge det til inspiration, med mindre at der findes en løsning på en opgave, som der pusles med som passer direkte til opgaven, så brug den, da det jo som bekendt ikke kan betale sig at "gå over åen efter vand"

Der findes også en større mængde af software idéer; men en stor del er skrevet i assembler, da Microchip har et udviklingsmiljø der inkluderer en assembler, som er frit tilgængelig til download fra deres hjemmeside.

Der findes naturligvis en meget stor mængde information på internettet, med design og programmering af PIC processorer, da det jo idag er sådan at der stort set ikke laves et stykke "isenkram" uden mindst en processor.

Håber at dette lille indlæg kan give lidt inspiration til at starte på et lille projekt.

Vy best 73 de OZ8NZ, Ole

  • Comments(0)//mcu.oz8nst.dk/#post1

Start på kursus

PIC StartPosted by Ole Bent Nielsen Wed, March 25, 2009 15:01:44

Der er nu startet lidt op på et kursus i PIC programmering og design af projekter med PIC processorer.

Det er besluttet at der vil være forskellige typer af processorer, fra små med få porte og til de lidt størrre med analog ind porte.

På den måde vil der være noget, som kan give idéer til mange projekter.

Her på denne blog er det min tanke at der kan komme "indspark" til forespørgler, når der hen ad vejen kommer spørgsmål. Det kan også være et forum hvor der kan udveksles gode idéer og f.eks. små kodestumper som kan være inspiration til andre.

vy best 73 de OZ8NZ, Ole

  • Comments(1)//mcu.oz8nst.dk/#post0