Arduino: Analogread visar endast 1023 hela tiden!

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Al_Bundy »

Jag förstår inte vad du menar med OSCCAL = 128; . Ska jag bara klistra in det i programmet?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av bearing »

Japp, precis i början av setup(). Sen får du testa olika värden tills seriekommunikationen funkar.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Al_Bundy »

Det var något nytt. Nej, det blev inte bättre. Mycket sämre. :)
Jag kanske ska införa en funktion som endast låter rena flotat tal passera :)
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av bearing »

Haha, bra jobbat. Det var faktiskt ganska kul, även för mig.

Det blev så klart sämre eftersom att just numret 128 gjorde att oscillatorn avvek mer ifrån 8 MHz än tidigare. Ifall du skickar original OSCCAL-värde till datorn till att börja med, så att du har något att utgå ifrån, kommer det nog inte ta så lång tid att hitta rätt. Det finns många metoder för att kalibrera OSCCAL, men jag tror att denna manuella metod som jag föreslog är enklast för dig, som inte verkar så kunnig inom programmering.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av jesse »

OSCCAL är redan programmerad i förväg för att ge just 8 MHz. Det brukar inte vara så fel att det inte fungerar med UART. Men om man ska programmera om OSCCAL så är nog det smartaste att utgå från det okända värdet den har från början. Det gör man genom att läsa in värdet från OSCCAL och sedan skriva tillbaks ett ändrat värde. Till exempel skrivar man någonstans i setup():

Kod: Markera allt

OSCCAL = OSCCAL * 1.05; // testa med 5% snabbare oscillator
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av bearing »

Det är en bättre ide, fast jag tror inte det går att multiplicera med en flyttalskonstant på det där viset. Men man kan ju skriva typ OSCCAL += 2; eller OSCCAL -= 3; och leta sig rätt.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av jesse »

Du har helt rätt. Det går utmärkt att multiplicera på det viset, men det är ju helt onödigt. Din metod är vettigare och skapar inga problem med avrundning.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Al_Bundy »

Tackar jessie! Jag ska testa och kallibrera med 5% succesivt! Jag återkommer med svar! :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av sodjan »

Läs på om OSCCAL och hur registret "skalar" mot oscillator frekvensen.
Sen kan ju justera så att det blir t.ex 1% steg i hastigheten på oscillatorn.
Det kan vara lagom för att trimma seriekommunikationen.

(Sen så brukar man inte behöva göra det, så jag är inte övertygad om
det är just detta. Jag skulle mäta upp hastigheten så att man vet
säkert vad det är som strular...)
Användarvisningsbild
Nisse
Inlägg: 908
Blev medlem: 9 juli 2006, 23:25:46
Ort: Kumla

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Nisse »

Al_Bundy skrev:Att jag inte få med dessa svordommar i float variabeln ¤%¤%.C´

Jag kanske ska införa en funktion som endast låter rena flotat tal passera :)
De där skräptecknen uppstår ju i kommunikationen mellan din microprocessor och datorn.
En float innehåller ett tal, inget annat: http://arduino.cc/en/Reference/Float
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Miramithe »

Om man tar en arduino som stock har 16mhz men sen kör den i 8 mhz påverkar det baud?
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Icecap »

Om man ställer Baud-rate genereringen som att den kör på 16MHz kommer det självklart att påverka avsevärd. Men vill man köra på 8MHz t.ex. för att spara ström, kan man bara ställa Baud-rate genereringen korrekt, sedan ska saken vara biff.

Noggrannheten är ju baserat på samma oscillator varför den ska vara lika bra/dålig.

Sedan tror jag inte på att de har interna oscillatorer på 8mHz hhv. 16mHz, det är ju oerhört långsamt. 8MHz hhv. 16MHz är mycket mer aktuellt, det är ju ändå en skillnad på 10^9 gg.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av sodjan »

Man måste läsa på om hur den aktuella baudrate generatorn är konstruerad.
Självklart måste man ställa om *någonting*, men var väl aldrig oklart (?).
Att köra i 16 MHz ger så klart mindre fel, om allt annat är samma.
Miramithe
Inlägg: 1423
Blev medlem: 21 januari 2013, 17:45:10
Ort: Borlänge

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av Miramithe »

Nej jag bara tänkte lite, håller inte på med något sådant själv just nu men har för mig att jag läst att baud måste ställas om om man kör annan frekvens och al om jag inte har fel kör på en annan frekvens, kan dock blanda ihop trådar det multipostas ju rätt vad det är.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino: Analogread visar endast 1023 hela tiden!

Inlägg av sodjan »

Ja, värdet som ska skrivas till registren är *helt* beroende på
den hastighet/frekvens som processorns ska köras på, det är
ju den som används som insignal för att räkna fram baudrate...
Skriv svar