Konstigt beteende på program.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

OjOj. detta är över min kunskap. Har du lite ledtrådar/tips/ tester jag kan göra för att testa om så är fallet?
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Konstigt beteende på program.

Inlägg av Swech »

din PCA9306 har 100nF i schemat på en kondensator som är rekommenderad till 100pF

Swech
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

Icecap skrev:Det verkar som att ditt omstartsproblem beror på att µC'n startar om.

På vissa PIC kan man lägga in att OM det blir stack-overflow resettas den.
Hur andra reagerar på detta står i databladet men OM det är en stack-overflow beror det till 100% på mjukvaran.

I t.ex. "alla" PIC är det en begränsning i den fysiska hårdvara-stack för interrupts, antal varierar med version PIC.
Kan det vara något sådan?

Kollar i databladet. hittar då att
"300006h CONFIG4L DEBUG XINST BBSIZ1 BBSIZ2 — LVP — STVREN 1000 -1-1"
dvs att stack overflow per deafult är aktivt och resetar

Jag provade att stänga av denna funktion men det är samma beteende. Är det ngt mer man behöver göra ?
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Konstigt beteende på program.

Inlägg av Icecap »

Så länge den exakta orsak till att det omstartas inte är känd är det svårt att göra så mycket.
Du använder ju ett färdigt lib - kan det vara instabilt?
Eller ha krav på interrupt-inställningar eller liknande?

T.ex. kan en "tom' interrupt-vektor ofta peka på noll (alltså starta om).
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

Shit ja, har verkligen inte ngn insikt i libbet men det har funnits länge och jag antar att det ska vara någorlunda ok. det var lite därför jag provade att prova både hårdvarulibbet och mjukvarulibbet.

Finns det ngt sätt att läsa i PICen vad som orsakade resetten?

Sen en fråga till bara så vi inte missförstår varandra. Du prata om interupts men jag använder inga interupts..... :)
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Konstigt beteende på program.

Inlägg av Icecap »

Och JUST att du inte använder interrupt kan betyda att OM en interrup utlösas sker det "intressanta" saker.
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

funderar lite mer. det finns ju ett register som heter RCON som säger vad som orsakat senaste resetten. Kan detta ge ngt? funderar på om det är möjlig att vid uppstart skriva ut detta på ngt sätt på i2c porten och kanske få info om vad som händer. OM det nu är ngn form av reset
Castor
Inlägg: 1980
Blev medlem: 24 mars 2012, 13:03:49

Re: Konstigt beteende på program.

Inlägg av Castor »

Har du någon annan port än I2C du kan skriva ut på? En vanlig Uart eller bara en ledig pinne där du bitbangar så du inte ger nya problem på den port du felsöker.
TheUnreal
Inlägg: 115
Blev medlem: 4 september 2005, 16:04:57
Ort: Sundsvall
Kontakt:

Re: Konstigt beteende på program.

Inlägg av TheUnreal »

Så här på väg ut ur influensasvängen så läser jag ditt första meddelande på nytt sätt :)
Sist var jag helt övertygad om att INT satt på MCU och inte på accelerometer...

Men om du skriver en interupt-rutin som bara innehåller "return;" så hoppar den ju tillbaka dit du var innan det hände.
Resetar den fortfarande så är det alltså en reset och inte en interupt som inträffar.

De där biblioteken du inte vet riktigt av de gör, vad händer om de inte känner till:

Kod: Markera allt

 SDO=0; // do not alter to avoid short circuit!!!!!
Edit:
Ok, det kanske är bäst att skicka ut status på interuptregistren någonstans så du kan se källan till interupten, om den inte nollställer lär du ju hamna i en evig loop av interupt...
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

Castor skrev:Har du någon annan port än I2C du kan skriva ut på? En vanlig Uart eller bara en ledig pinne där du bitbangar så du inte ger nya problem på den port du felsöker.

Där finns en hel del portar lediga. Just uart är också upptagen eg, där sitter en gsm modem
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

TheUnreal skrev:Så här på väg ut ur influensasvängen så läser jag ditt första meddelande på nytt sätt :)
Sist var jag helt övertygad om att INT satt på MCU och inte på accelerometer...

Men om du skriver en interupt-rutin som bara innehåller "return;" så hoppar den ju tillbaka dit du var innan det hände.
Resetar den fortfarande så är det alltså en reset och inte en interupt som inträffar.

De där biblioteken du inte vet riktigt av de gör, vad händer om de inte känner till:

Kod: Markera allt

 SDO=0; // do not alter to avoid short circuit!!!!!
Edit:
Ok, det kanske är bäst att skicka ut status på interuptregistren någonstans så du kan se källan till interupten, om den inte nollställer lär du ju hamna i en evig loop av interupt...
Fyfan för influensa...

Jag ska fundera på det med interupt om det finns ngt rimligt sätt jag får ihop ngt test.

Det jag kallar sdo har jag kopplat fel och driver jag den högt med picen så drar det en del ström men inget som brinner så att säga. Jag kan väl aldrig med säkerhet säga att liben inte hittar på ngt med den pinnen men magkänslan säger att den är fredad
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

Problemet är "löst"..
Jag gav i princip upp till slut. Löste problemet genom att byta kretsen till 16F1937 som är pinkompatibel med det mesta och är en krets som jag använt flera ggr förut. Den saknar dock CAN modul så om jag behöver detta i framtiden så lär det bli strul.

Tyvärr fick jag ingen klarhet till slut om det var ngt register som var fel eller ngt kompilatorn hittar på ihop med den kretsen :(
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Konstigt beteende på program.

Inlägg av Icecap »

En fråga:
Har du låtit vissa register vara för att deras default-inställning var OK?

Det är nämligen en mycket farlig sak att göra, man kan per definition inte lita på default-efter-reset!
Användarvisningsbild
newbadboy
Inlägg: 2426
Blev medlem: 16 september 2006, 19:16:28
Ort: Landskrona
Kontakt:

Re: Konstigt beteende på program.

Inlägg av newbadboy »

Jepp. Jag lät alla vara utom de jag "medvetet" behövde ställa. Så man kan inte lita på default? Det visste jag inte
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Konstigt beteende på program.

Inlägg av Icecap »

Det finns ett antal trådar där det finns oförklarliga saker som sker/inte sker när det ska.
När man sedan lägger in ALLA värden rätt fungerar det plötsligt.

Konklusion: lita inte på default!
Skriv svar