A/D-fråga om PIC18F1320

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du menar de två prio nivåer som finns i PIC18 arkitekturen ?

Väldigt sällan som man behöver använda det, och det strular till
interrupt hanteringen en hel del. Nyckel till en bra interrupt hantering
är att interrupt-rutinerna är så korta/snabba som möjligt.

Som du säger, om du ändå inte kör med MB's inbyggda funktioner
så är steget til asm inte så stort. :-)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Kul att du fick det att funka :) Hur många gånger samplar du knapparna med AD-omvandlaren?
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

sodjan:
"Du menar de två prio nivåer som finns i PIC18 arkitekturen ?"

Japp.

"Väldigt sällan som man behöver använda det, och det strular till
interrupt hanteringen en hel del."


Aha! Men då gör det alltså inget att det saknas.


RasmusB:
Jag kör med Tosc/16 för tillfället. (Kör PIC'en med 8MHz.)


Kan passa på att fråga om "Acquisition Time" (ADCON2 ACQT2:ACQT0)
Jag har läst Section 17.3 några gånger, men jag hänger inte riktigt med på vad det är.

When the GO/DONE bit is set, the selected channel is sampled for the programmed acquisition time before a conversion is actually started. This removes the firmware overhead that may have been required to allow for an acquisition (sampling) period (see Register 17-3 and Section 17.3 Selecting and Configuring Automatic Acquisition.

Vad innebär "This removes the firmware overhead..." ?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Att du inte behöver vänta i din kod ?
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Ja kanske det. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Alltså,

*Utan* "Automatic Acquisition" måste du själv vänta "acquisition time"
efter ett kanalbyte innan du startar en omvandling (via GO). Alltså
"firmware overhead"...

*Med* "Automatic Acquisition" så kommer processorn själv att vänta ut
"acquisition time" efter att GO är satt och innan omvandligen startar.
Bara att välja ADC-kanal och sätta GO direkt.

(Jag orkade inte öppna databladet, men så måste det vara... :-) )
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Aha! Då förstår jag. :)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

JimmyAndersson skrev: RasmusB:
Jag kör med Tosc/16 för tillfället. (Kör PIC'en med 8MHz.)
Inte så jag menade, jag undrar om det räcker med att göra en en AD-omvandling? Eller måste du göra flera för att vara säker på vilken knapp som är nertryckt?
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Oj, jag läste lite dåligt. :)
Det räcker med att göra en läsning eftersom jag kollar om värdet ligger inom ett område. T.ex så ger en av knapparna 511 eller 512, men eftersom jag kör med if (knapp >=506) AND (knapp <= 516) then... så stämmer det alltid.

Men jag har märkt att IF-raderna tar ganska mycket processortid. De ligger visserligen inte i interrupt-delen längre, men det är ju trevligt om allt flyter på så bra som möjligt, så jag funderar på att testa med flera omvandlingar och göra en medelvärdesberäkning istället.

En enda värde = avläsning1 + avläsning2 osv / antal borde väl ta mindre processorkraft/tid än 6st IF-rader där varje dessutom innehåller en AND.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du skulle kunna göra så att du bara använder de högsta 8 bitarna, då
slipper Basic kompilatorn att generera 16-bitars operationer för dina
IF satser och det bör bli betydligt mer kompakt.
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Bra idé! Det blev mycket bättre. Dessutom minskade hex-filens storlek med 0,5kB. :)

Nu känner jag mig nöjd med den här delen. Knapparna kan läsas av tillräckligt snabbt trots att en timer ger interrupt 3,815 gånger i sekunden. Nu är det dags för knapparna att få lite uppgifter. Men först en backup av koden. :)
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Hmm... vad är det du bygger förresten? :)
Användarvisningsbild
JimmyAndersson
Inlägg: 26586
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Om man korsar en TFT-skärm med en UV-box och en halv scanner så får man mitt projekt. :lol:

Det blir en pryl som exponerar kretskort utan att man behöver skriva ut kretskortslayouten. Några funktioner: Tidstyrd belysning, mätning av UV-ljuset, mm. Sedan finns några små roliga finesser som jag inte vill avslöja än.

Det "materiella" är 95% klart. Nu återstår bara 20% programmering och ett kretskort. Det blir nog en projekt-tråd i slutet av veckan.
Användarvisningsbild
RasmusB
Inlägg: 1006
Blev medlem: 24 augusti 2006, 23:32:13
Ort: Södertälje

Inlägg av RasmusB »

Coolt! :D Ska hålla ögonen öppna... :)
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

0,5 kB !!
uj uj, ingen bra kompilator.
Skriv svar