forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
PIC 24FJ64GA002 problem a AD prevodnikom
Jdi na stránku Předchozí  1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 04 červenec 2018, 21:30    Předmět: Citovat

Zde nebývá příliš zvykem rozdávat instatní řešení jako někde na arduino fóru, pokud tedy očekáváš tohle. Je třeba vynaložit trochu vlastní snahy. O to víc tě pak bude těšit až to rozjedeš - dokázal jsi to sám, a taky tě to o to víc posune dále.

Zřejmě něco přehlížíš, ovšem když to nejde jedním způsobem, tak to musí jít jiným, není-liž pravda? Co třeba vrátit si kód do původního stavu a přepojit potenciometr na AN0 (a ledku jinam) například, když na něj je všechno v původním kódu nastavené - to jsi zkoušel? Nebo ten program zjednodušit až na dřeň, tedy převodník samotný a regulaci led si tam přidat až ve chvíli, kdy budeš mít ten ADC na jistotu rozjetý?

Já se k tomu (svému hardwaru) dostanu nejdříve v pátek, ale nemůže to být zas kdovíjak těžké, dělali to lidé a pro lidi, ne pro kybernetické mozky. Podle tvého webu nepůsobíš jako nějaký noob, takže určitě máš dost zkušeností na to abys věděl, že je ještě dost brzo na házení flinty do obilí.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
diallix
Účastník
Účastník


Založen: 16.2.2018
Příspěvky: 16

PříspěvekZaslal: 06 červenec 2018, 8:54    Předmět: Citovat

Mahoney napsal:


Já se k tomu (svému hardwaru) dostanu nejdříve v pátek, ale nemůže to být zas kdovíjak těžké, dělali to lidé a pro lidi, ne pro kybernetické mozky. Podle tvého webu nepůsobíš jako nějaký noob, takže určitě máš dost zkušeností na to abys věděl, že je ještě dost brzo na házení flinty do obilí.


Ja sa to snazim rozchodit vyse mesiaca a nejde mi nic. Keby si to skusil ty bol by som ti moc vdacny.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 06 červenec 2018, 9:28    Předmět: Citovat

No, dokázal jsi mě namotivovat abych konečně nějakej ten PIC24 vytáhnul, když už je tu léta mám v šuplíku Very Happy takže zkouším zkouším - C30 jsem si nainstaloval už včera, teď zrovna jsem ve stádiu hledání nějakého vhodného potenciometru, jinak to mám zapojený a připravený už komplet.

Když už jsme u zapojování, tak jen tak pro jistotu - ten 10 μF kondík na VCAP/VDDCORE máš nějakej schopnější? Měl by totiž být LowESR, takže nějaká obyčejná čína by nemusela stačit ( má mít ESR < 5 Ω). Ten vnitřní měnič napájí celý jádro MCU, takže když nepojede pořádně tohle, tak ti nepojede nic Exclamation
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
diallix
Účastník
Účastník


Založen: 16.2.2018
Příspěvky: 16

PříspěvekZaslal: 06 červenec 2018, 10:08    Předmět: Citovat

ano mam zapojeny kondik. myslim si ze spravny, skusal som ich par. kamo som fakt zvedavy ci to pojde tebe.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 06 červenec 2018, 10:16    Předmět: Citovat

caute, nevidim tam nikde zapnuti ADC ?
_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
diallix
Účastník
Účastník


Založen: 16.2.2018
Příspěvky: 16

PříspěvekZaslal: 06 červenec 2018, 10:47    Předmět: Citovat

ahoj. skusal som

AD1CON1bits.ADON = 1;
a

AD1CON1bits.SAMP = 1;

ale nic...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 06 červenec 2018, 10:51    Předmět: Citovat

preruseni funguje ?

skus nastavit pevnou hodnotu misto z ADC, skus vice hodnot jestly to funguje ..

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 06 červenec 2018, 11:41    Předmět: Citovat

Přerušení funguje, na debug ledce jsem viděl že to tím úsekem proběhlo. Zrovna si s tím takhle taky hraju (to měnění hodnot ručně; jinak abych někoho nezmátl - debug ledku jsem si přidal sám, na RB6).

ADC - měl jsem zato, že je zapnutý tím IEC0bits.AD1IE = 1, ale jak tak na to koukám tak nejspíš ne, asi máš pravdu. Co jsem ale zjistil já je, že onen T3, který se na začátku nastavuje, nemá žádný interrupt handler jestli dobře vidím. Ten časovač je tam zbytečně, tedy pokud se bavíme jen o změně rychlosti blikání led. Jinak hodnoty z ADC v long, čekačky ovšem v int, přepočet prapodivnej Confused (hlavně teda u tý "delay_us"). Jinak nejsem žádnej velkej Céčkař, ale vidím dobře, že se někdo snaží nacpat 1000 DEC do Int proměnný?

Diallix: Místo bitu SAMP zapnout spíš hned vedle bit ASAM, což? Jak to vidíš? Nepíšeš, do jaký části programu jsi to vkládal...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 06 červenec 2018, 12:06    Předmět: Citovat

IE -> interrupt enable

ADC ma zdroj hodin z taktu procesoru , jestly jsem to dobre pochopil takze T3 je k nicemu

pokud zadas hodnotu rucne blika ledka na RA0 ? stabilne podle zadanych ms ?
kód:
void __attribute__((interrupt,auto_psv)) _ADC1Interrupt(void)
{
   IFS0bits.AD1IF = 0;   
//   ADCValue = ADC1BUF0;
   ADCValue = 500;
}

kód:

Example 17-1: A/D Initialization Code Example
AD1PCFG = 0; // Configure A/D port
// all input pins are analog
AD1CON1 = 0x2208; // Configure sample clock source
// and conversion trigger mode.
// Unsigned Fraction format (FORM<1:0>=10),
// Manual conversion trigger (SSRC<3:0>=000),
// Manual start of sampling (ASAM=0),
// No operation in Idle mode (ADSIDL=1).
AD1CON2 = 0; // Configure A/D voltage reference
// and buffer fill modes.
// Vr+ and Vr- from AVdd and AVss (VCFG<2:0>=000),
// Inputs are not scanned,
// Interrupt after every sample
AD1CON3 = 0; // Configure A/D conversion clock as Tcy/2
AD1CHS = 0; // Configure input channels,
// CH0+ input is AN0,
// CH0- input is Vr- (AVss).
AD1CSSL = 0; // No inputs are scanned.
IFS0bits.AD1IF = 0; // Clear A/D conversion interrupt.
// Configure A/D interrupt priority bits (AD1IP<2:0>) here, if
// required. Default priority level is 4.
IEC0bits.AD1IE = 1; // Enable A/D conversion interrupt
AD1CON1bits.ADON = 1; // Turn on A/D
AD1CON1bits.SAMP = 1; // Start sampling the input
Delay(); // Ensure the correct sampling time has elapsed
// before starting conversion.
AD1CON1bits.SAMP = 0; // End A/D sampling and start conversion
// Example code for A/D ISR:
void __attribute__ ((__interrupt__)) _ADC1Interrupt(void)
{
IFS0bits.AD1IF = 0;
}

zalezi na prekladaci jak to ma
MPLAB® C30 C COMPILER USER’S GUIDE napsal:
TABLE 5-1: INTEGER DATA TYPES
int, signed int 16 -32768 32767

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 06 červenec 2018, 12:16    Předmět: Citovat

Jj, to už mi došlo. Mě to s tím AD1CON1bits.ADON a ASAM = 1 funguje jak má, jen je třeba se pořádně podívat na ty čekačky a jak se to tam (debilně) vkládá a počítá. Když mám poťák skoro u země (asi 1mm běžcem na dráze od kraje, odhadem na ruce a osce), tak mi to bliká asi v dvacetisekundovým intervalu. Když zvednu, trvá to věky => upravit typy proměnných a přepočet.

Edit: Aha, no vida, to jsem si neověřil, přiznávám (ten Int). Já jdu od osmibitů, měl jsem zato že je osmibitovej Very Happy Nicméně platí co píšu, jede to, je třeba si upravit počty.

Edit2: Ještě teda radši celej kód, ať zas nejsou zmatky:

Edit3: Kód jsem zase odebral, po obědě a úpravě hodnot zjištěno, že sice už čteme periodicky z ADC, ale nějaký hausnumero bůhvíodkud a ne hodnotu z poťáku (na kterej to nereaguje, proto to trvá tak dlouho). Bez debuggeru i serial portu se fakt blbě ladí Confused
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
diallix
Účastník
Účastník


Založen: 16.2.2018
Příspěvky: 16

PříspěvekZaslal: 06 červenec 2018, 14:05    Předmět: Citovat

Mahoney napsal:
hodil som to pred while. ak ti to ide mozes tu hodit tvoj upraveny kod?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 06 červenec 2018, 14:25    Předmět: Citovat

No to můžu, ale byl bych radši kdyby ten kód napřed pořádně fungoval. Dej mi ještě nějakej čas, nemám jak debuggovat a musím si nějak poradit, value z ADC se fakt blbě zobrazuje na jedný ledce a tenhle typ ADC je pro mě novinka, musím si to nějak ošahat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
diallix
Účastník
Účastník


Založen: 16.2.2018
Příspěvky: 16

PříspěvekZaslal: 06 červenec 2018, 14:29    Předmět: Citovat

dobre v pohode kamo. uvidime co z toho nakoniec zkvete.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
MiloPS3
Profesionál
Profesionál


Založen: 24.12.2008
Příspěvky: 897
Bydliště: LAZNE KYNZVART

PříspěvekZaslal: 06 červenec 2018, 14:42    Předmět: Citovat

citace:
value z ADC se fakt blbě zobrazuje na jedný ledce

jeste nez jsem se dostal k mcu udelal jsem si citac , 2x nakej IO + 3x 7segment, 2 vstupy,signal/reset, no a pak pozdeji jsem si podle toho zobrazoval data z IR ovladace pomoci mcu,
takze si tam bud rozjet uart nebo pripoj 8/10 ledek nebo jinej mcu s lcd ovladanej pomoci 2 dratu .... treba

_________________
PIC,ASM / C , Mplab + CCS C Compiler
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 140

PříspěvekZaslal: 06 červenec 2018, 16:03    Předmět: Citovat

Jj, v klidu, tohle nebude ten problém. Ten problém je, že jsem už asi třetí noc po sobě spal jen 4 až 6 hodin nekvalitního spánku, takže se mi aktálně zoufale moc nechce nic drátovat - ale asi budu muset. Jak jsem psal, nějak si poradím, jen to nebude úplně "na lusknutí prsty". Ten UART asi vyhraje.

Edit 18:27: Už to chodí. Ještě si kdyžtak odmaž/te tu konfiguraci remappable pinů, tu jsem nějak zapomněl smazat a nechce se mi to dělat ve zdejším editoru zpráv. Jinak se skutečně se musí číst z bufferu 0, takže celý nějak takhle:
kód:

#include "p24FJ64GA002.h"
#define CLOCK 16

_CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF
   & COE_OFF & ICS_PGx1 & FWDTEN_OFF)

_CONFIG2(IESO_OFF & FNOSC_FRCPLL & FCKSM_CSDCMD
   & OSCIOFNC_OFF & IOL1WAY_OFF & I2C1SEL_PRI & POSCMOD_NONE)

void delay_us(int usec);
void delay_ms(int msec);

unsigned long ADCValue = 0;

//----------------------

int main(void)
{
   CLKDIV = 0;                  //
   AD1PCFG = 0xFFEF;            // AN4(RB2) - analog inputs
   TRISA = 0xFFFE;              // RA0
   TRISB = 0xFFBF;              // 0xFFBF; 0xFFFF puvodne

   //50msec, 1/256,FOSC=16MHz
   T3CON=0b1000000000110000;
   PR3 = 3124;                  // 50000 ·((1/16) —256)-1 = 3124

   //----------
   // Remappable pins config for UART TX (PC RX)
   // Configure Output Function

   // Unlock Registers
   __builtin_write_OSCCONL(OSCCON & 0xBF);

   RPOR1bits.RP3R = 3;         // Assign U1TX func. to pin RP3

   // Lock registers
   __builtin_write_OSCCONL(OSCCON | 0x40);
   //----------

   // UART1 transmit config



   // ADC config
   AD1CON1 = 0x8044;            // AD1CON1:A/D1
   AD1CON2 = 0x0400;            // AD1CON2:A/D2; 31Tad   3.0Tcy
   AD1CON3 = 0x1F05;            // AD1CON3:A/D3; AN4 MUX A
   AD1CSSL = 0x0010;            // AD1CSSL:A/D
   AD1CHS  = 0x0004;            // AD1CHS:A/D // 0x0000 puvodne

   IEC0bits.AD1IE = 1;          // A/D
   AD1CON1bits.ADON = 1;
   AD1CON1bits.ASAM = 1;   // if this is on, do not need to turn SAMP
   // AD1CON1bits.SAMP = 1;

   delay_us(50);

   // LATBbits.LATB6 = 1;   // DEBUG LED on RB6

   while(1)
   {
   delay_ms(ADCValue);
         LATAbits.LATA0 = !LATAbits.LATA0;
   }

   return 0;
}

//----------------------

void __attribute__((interrupt,auto_psv)) _ADC1Interrupt(void)
{
   ADCValue = ADC1BUF0;
   IFS0bits.AD1IF = 0;   
}

//----------------------

void delay_us(int usec)
{
   usec=(int)(CLOCK*usec)/10;
   while(usec)
   {
      asm("NOP");
      asm("NOP");
      asm("NOP");
      asm("NOP");
      asm("NOP");
      asm("NOP");
      usec--;
   }
}

//----------------------

void delay_ms(int msec)
{
   int i;
   for(i = 0; i < msec; i++)
   {
      delay_us(1000);
   }
}

//----------------------
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
Jdi na stránku Předchozí  1, 2, 3  Další
 
Strana 2 z 3
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)