Re: C szintaxis kérdés, avagy dsPIC33 AD scannelés

Kovács Árpád arpad.kovacs at freemail.hu
Mon Feb 5 20:34:57 CET 2007


Köszi a hozzászólásokat, mindkettő ötlet működik. A volatile kulcsszóval már 
nincs warning.
Az ADCBUF[0] eszembe jutott, de a fordító rögtön szólt persze, hogy ez 
egyszerű tömb, ne próbálkozzak vele :-), azonban a (&ADCBUF0)[0] már tényleg 
jó. Ezt a formát eddig nem is láttam, mindíg tanul valamit az ember :)

----- Original Message ----- 
From: "bl" <bendelaci at yahoo.co.uk>
To: <elektro at tesla.hu>
Sent: Sunday, February 04, 2007 9:45 AM
Subject: Re: C szintaxis kérdés, avagy dsPIC33 AD scannelés


Nem értek konkrétan a dsPIC-hez, de nem feltétlenül szükséges az ADC16Ptr.
ADCValue = (&ADCBUF0)[0]; //az a 0-s csatorna értéke,
ADCValue = (&ADCBUF0)[1]; //az az egyesé és így tovább,
ennek működnie kell.

Az ADC16Ptr-el az lehet a baja, nem ismervén a procit hogy nem unsigned az
ADCBUF0 típusa, vagy nem int :) Ha 16 bites akkor lehetne inkább short az
int helyett. Nézd meg a headerben ahol definiálták ADCBUF0-t hogy milyen
típusú és ha ragaszkodsz az ADC16Ptr-hez akkor pontosan ilyen típusra mutató
pointernek deklaráld.



----- Original Message ----- 
From: "Kovács Árpád" <arpad.kovacs at freemail.hu>
To: <elektro at tesla.hu>
Sent: Saturday, February 03, 2007 8:35 PM
Subject: C szintaxis kérdés, avagy dsPIC33 AD scannelés



Sziasztok!

dsPIC33-al adódott egy kis problémám, AD scannelést kellene csinálnom, és
akkor nem kellene nekem multiplexelni a vonalakat, hanem megcsinálná azt
automatikusan a periféria és az eredményeket a 16 szavas bufferben helyezi
el a RAM-ban, melynek báziscímét ADC1BUF0 -nak hívják.

A problémám az, hogy csak a nulladik elemhez tudok hozzéférni, az utána
következőkhöz nem, mert az ADC1BUF1, 2, 3... nincs külön deklarálva.
A proci egyik példaprogramjában így oldják meg:

ADC16Ptr = &ADCBUF0;         // Értékadás a pointernek címképző operátorral

ADCValue = *ADC16Ptr++;      // hozzáférés a buffer második eleméhez
indirekcióval

Na jó, gondoltam akkor így jó lesz, deklarálom a mutatót az elején:

unsigned int *ADC16Ptr;

Erre a fordító az értékadás sornál warning-ol egyet, és persze nem működik a
dolog:

warning: assignment discards qualifiers from pointer target type


Akkor most hogyan? :) Megnézve további példaprogramokat azt láttam, hogy úgy
kerülik meg még ezt a dolgot, hogy vagy DMA kezelés van, vagy minden AD
konverzióra megszakítás van és akkor nem kell csak a nulladik elemhez
hozzáférni. Ha nem jön össze akkor maradok én is ennél.

Ha valaki tud segíteni, köszönöm előre is

Árpi



-----------------------------------------
          elektro[-flame|-etc]


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.17.19/663 - Release Date: 2007. 02.
01. 14:28



___________________________________________________________
The all-new Yahoo! Mail goes wherever you go - free your email address from 
your Internet provider. http://uk.docs.yahoo.com/nowyoucan.html

-----------------------------------------
          elektro[-flame|-etc]



More information about the Elektro mailing list