Sida 2 av 2

Re: Problem med interupt Uno32

Postat: 1 april 2024, 16:43:10
av hawkan
Rad 66

Kod: Markera allt

//************************************************************************
// PIC32 devices only support rising and falling edge triggered interrupts
// on the external interrupt pins. Only the RISING and FALLING modes are
// supported.
//************************************************************************
Du får väl göra attachInterrupt två gånger då, en på RISING och en på FALLING.
Du kan ha samma isr.

Re: Problem med interupt Uno32

Postat: 1 april 2024, 16:56:58
av Klas-Kenny
hawkan skrev: 1 april 2024, 16:43:10 Du får väl göra attachInterrupt två gånger då, en på RISING och en på FALLING.
Du kan ha samma isr.
Nej, det går inte.
Det kommer att bli det sist valda.

Stigande eller fallande flank väljs till sist genom att sätta eller inte sätta en bit i INTCON-registret i processorn. Kan inte vara både och.
I så fall får man använda två parallellkopplade pinnar och två interrupt.
Skärmbild 2024-04-01 165615.png

Re: Problem med interupt Uno32

Postat: 1 april 2024, 17:11:50
av sodjan
Toggla biten i INTCON vid varje interrupt?

Re: Problem med interupt Uno32

Postat: 1 april 2024, 17:20:18
av SeniorLemuren
Så här blev det

Kod: Markera allt

attachInterrupt(1, LEDchange, RISING);
attachInterrupt(2, LEDchange, FALLING);
Använde 2 interuptpinnar. fungerar bra.

Re: Problem med interupt Uno32

Postat: 1 april 2024, 17:47:50
av agehall
hawkan skrev: 1 april 2024, 09:47:39 Att läsa och skriva en pinne är knappast för mycket i en isr, det är istället mycket lämpligt i detta fallet.
Problemet med digitalWrite() i Arduino är att det är en funktion som gör mycket mer än vad vid första anblick tror. Det blir en hel del kod som ska köras av ett anrop. Kanske inte är ett problem, men det kan vara.

Jag är smått allergisk mot hur Arudino’s bibliotek fungerar. De försöker dölja hårdvaran på ett sätt som inte hjälper. Det är snarare så att det hindrar folk från att förstå vad som faktiskt händer. Det Arduino gjort bra, är att de fyllt marknaden med billiga utvecklingskort som man kan använda utan att göra något eget.
SeniorLemuren skrev: 1 april 2024, 11:04:12Vilken plattform använder du till Digilent ChipKit Uno32?
Jag kör oftast ”rå” C på mina utvecklingskort, dvs kompilerar rakt av med GCC och programmerar med lämplig programmerare. Dvs inga halvmysko C++-bibliotek eller annan svart magi. Det kräver att man läser lite specar för att få fram portar och annat men det är något som lönar sig i längden att kunna. Har man gjort det en gång för en CPU är det ganska enkelt att göra det för en annan.

Re: Problem med interupt Uno32

Postat: 1 april 2024, 18:41:57
av hawkan
Ja men det låter vettigt. SeniorLemuren, sluta med det du håller på med och börja utveckla ett stegmotorbibliotek för din processor.
Glöm inte funktioner för att kontrollera pinnar. Undersök och skriv kod också hur du kopplar ett interrupt till närt en pinne ändrar läge.
Nej nej oroa dej inte, det är väl använd tid.

Re: Problem med interupt Uno32

Postat: 1 april 2024, 19:55:26
av SeniorLemuren
agehall skrev: 1 april 2024, 17:47:50
hawkan skrev: 1 april 2024, 09:47:39 Att läsa och skriva en pinne är knappast för mycket i en isr, det är istället mycket lämpligt i detta fallet.
Problemet med digitalWrite() i Arduino är att det är en funktion som gör mycket mer än vad vid första anblick tror. Det blir en hel del kod som ska köras av ett anrop. Kanske inte är ett problem, men det kan vara.

Jag är smått allergisk mot hur Arudino’s bibliotek fungerar. De försöker dölja hårdvaran på ett sätt som inte hjälper. Det är snarare så att det hindrar folk från att förstå vad som faktiskt händer. Det Arduino gjort bra, är att de fyllt marknaden med billiga utvecklingskort som man kan använda utan att göra något eget.
SeniorLemuren skrev: 1 april 2024, 11:04:12Vilken plattform använder du till Digilent ChipKit Uno32?
Jag kör oftast ”rå” C på mina utvecklingskort, dvs kompilerar rakt av med GCC och programmerar med lämplig programmerare. Dvs inga halvmysko C++-bibliotek eller annan svart magi. Det kräver att man läser lite specar för att få fram portar och annat men det är något som lönar sig i längden att kunna. Har man gjort det en gång för en CPU är det ganska enkelt att göra det för en annan.
Mycke fördomar på en gång. Jag har varit med sedan assemblers tider och hunnit pröva det mesta. Att jag nu använder Arduino till mina konstruktioner beror på att jag lärt mig att det mesta går att lösa på ett enkelt och snabbt vis. De som påstår motsatsen har nog aldrig riktigt försökt, utan bara förkastat det vid en ytlig granskning. Bland annat så så gjorde jag ett varvräknare-instrument till min båt av en Arduino Due. Det är en hel del tunga flyttalsberäkningar och grafikfunktioner för att få den att fungera. Inga som helst problem att slänga ihop med Arduinos bibliotek.

Re: Problem med interupt Uno32

Postat: 1 april 2024, 21:00:34
av Icecap
Jag har också en mental allergi mot Arduino, just av de grunder som agehall anger.

Även jag kör helst "bare metal", helt enkelt för att jag inte litar på vad andra har gjort.

MEN å andra sidan har senior också rätt: Det fungerar ju, det utför funktionen och det var ju kravet.

Ja, jag har lagt många "onödiga" timmar på att göra funktioner som redan fanns på nätet, några enstaka har jag använd, dock med modifikationer som jag anser viktiga o alla sådana funktioner är GRUNDLIGT testat innan de blir använd skarpt.

De funktioner jag har som "basfunktioner" är extremt väl testat o dokumenterat o jag har alltid fått veta att den mjukvara jag har skrivit är 100% stabil.

Men jag lägger mycket tid i den också...

Re: Problem med interupt Uno32

Postat: 2 april 2024, 07:29:15
av agehall
Jag skulle inte kalla mina åsikter fördomar eftersom de bygger på erfarenheter. Jag har kodat assemblera sedan tidigt 90-tal och C i runt 30 år nu.

Visst kan det fungera med Arduinos bibliotek, men när det inte gör det tar det allt som oftast mångdubbelt med tid att reda ut jämfört med att ha kodat allt från början. Ofta finns det kod man kan använda som inte kommer i form av Arduino-bibliotek som är 1) väldokumenterade och 2) skrivna i C. Det är helt klart att föredra framför Arduinos magi som vill göra allt så osynligt som möjligt för mig som utvecklare.