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
 
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: 07 červenec 2018, 8:02    Předmět:   Citovat

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

 
diallix
Účastník
Účastník


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

PříspěvekZaslal: 07 červenec 2018, 14:38    Předmět: Re:   Citovat

Este raz diky.

Skusal som dat namiesto trimra joistick analogovy a dioda hapruje.S trimrom to ide super. Joistick by mal ist tiez nie?
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: 07 červenec 2018, 19:17    Předmět: Citovat

V pohodě, nemáš zač Wink Joystick by měl jít také, je v něm také potenciometr, ale je tam pár úskalí: Jednak záleží co je to přesně za joystick, ale obecně je to většinou tak, že se v joysticku nevyužívá celá dráha potenciometru, ale jen její část. S tím zřejmě souvisí druhý problém - ta část dráhy v potenciometru se rychleji opotřebuje a pak běžec s dráhou ztratí kontakt či má jen náhodný (tj. "chrastí" - u zesilovačů má stejná závada na potenciometru hlasitosti projev podobný chrastění) - tohle bude zřejmě i tvůj problém.

Jinak nedíval jsem se u tohoto typu MCU, ale další věc je, že microchipí ADC obvykle nemají moc velký vstupní odpor (2,5 - 5 kΩ). Pokud máš v joysticku potenciometr s velkou hodnotou (bývají tam obvykle "stokilové", ale není to pravidlo), tak by to chtělo hodnotu snížit, když ho stejně budeš měnit pro poruchu - platí samozřejmě jen v případě, že joystick předěláváš a původnímu účelu už sloužit nebude (nebo bude, ale s novou elektronikou - zkrátka a dobře prostě nevím, co s ním máš dál za úmysly). Já měl teď na poli poťák pětikilový.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 299
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 07 červenec 2018, 22:48    Předmět: Citovat

Teď jsem naštěstí neměl potřebu ani zapínat delší dobu PC a je fajn, že jste to rozchodili.
Microcrochip má nízký vnitřní odpor A/D, ale jen když A/D připojí sample kýbl ke vstupu ná pár stovek ns než se nabije, jinak to má impedanci/ odpor jak jakýkoli jiný CMOS vstup. Běžně mám 3x 330k a dole 5k6 dělič na 400VDC. 330k a 44k na 12VDC... a bez jediného problému už tak 10 let. Na vstupu ještě je pověšenej kond 100n.

Ad ty vstupy: Takok moc se se s tím nedrbal, zabil jsem tím asi 2 dny a docela to chodilo.
Takhle mám nastavený A/D na P24FJ64GA306, který má stejný A/D

kód:

// <nastavení A/D>
   AD1CON1 = 0b0000010000000000;   // 12b
   AD1CON2 = 0b0000100000000000;
   AD1CON3 = 0b0000010000001001;   //OSC /8
   AD1CON4 = 0;               //DMA OFF
   AD1CON5 = 0b0000000000000000;
   
   IPC3bits.AD1IP = 2;            //Interrupt priority = 2
   IEC0bits.AD1IE = 1;            //Povolení přerušení od A/D převodníku

   AD1CON1bits.ADON = 1;
// </nastavení A/D>


Při přerušení od ADC1 si pak vyberu data v konkrétním AD1BUFxx

Převod se spouští
kód:

void ADC_start   (unsigned char Kanal)
{
   unsigned char t;
   AD1CHSbits.CH0SB = Kanal;   //Nastavení kanálu
   AD1CHSbits.CH0SA = Kanal;
   AD1CON1bits.SAMP = 1;      //Spustit vzorkování
   for (t=0;t<14;t++);         //Počkat na přepnutí
   AD1CON1bits.SAMP = 0;      //Spustit převod
}

_________________
Stavím UPSky
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: 08 červenec 2018, 21:56    Předmět: Citovat

Dík za info, to se hodí.

Nicméně teď řeším jiný problém, a to se serial portem - a myslím, že zrovna ty bys mohl vědět. Jde o to, že mám framing error při vysílání (viz obrázek) a už nevím co s tím, nic mě nenapadá - zkoušel jsem všechna možná nastavení portu včetně BRGH=1 atd, a chyba se pořád drží. Díval jsem se i do errata sheetu, povídání okolo serial portu je tam "velmi veselé", nicméně o tomto problému jsem tam nenašel zmínku - nesetkal ses s tím někdy, nevíš co s tím?

Je mi jasný že ten analyzér komunikace není kdovíco, ale tady prostě "něco chybí" už na první pohled...

Brouk je pořád 24FJ64GA002, fosc = 16 MHz (FRC + PLL), komunikace je naprostá klasika (9600, 8N1, nejnižší bit znaku "jde první")



serial-analyzer.png
 Komentář:
Serial - analyzer
 Velikost:  13.11 kB
 Zobrazeno:  422 krát

serial-analyzer.png


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

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 299
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 09 červenec 2018, 6:35    Předmět: Citovat

S tím jsem nikdy neměl problém. Používám teda jen PIC24FJ64GA306, ale to je v podstatě to stejné.
Mám rozchozené 2 UARTy a přes přerušení po obou sypu data na 57600 Baud, 8N1... fosc 16 MHz - FRC + PLL

On se v podstatě nedá ani ten UART nastavit blbě aby nefungoval Smile

Tohle mám nastaveno já:
kód:

// < UART 2>
   U2MODE = 0b0010000000001000;   //High speed mode - RS485
   U2STA = 0b0010010000000000;   
   U2BRG = 34;                  // 57600 Baud +-
   U2MODEbits.UARTEN = 1;         // Povolit UART
   U2STAbits.UTXEN = 1;         //Povolit odesílání

   IPC7bits.U2TXIP = 2;         //Priorita přerušení 2
   IPC7bits.U2RXIP = 2;         //Priorita přerušení 2
// </UART 2>


Co to máš za analyzátor?

_________________
Stavím UPSky
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: 09 červenec 2018, 11:45    Předmět: Citovat

No, to je právě ten problém, že to v podstatě blbě nastavit nejde, ale přesto to v mém případě blbě funguje. Myslel jsem jestli to nemá souvislost s něčím o čem třeba nevím, proto jsem se tě jako zkušenějšího s těmito typy radši zeptal. GA306 a podobné nové nedám, jedu jen typy co umí Pickit2 z Linuxu z konzole pomocí pk2cmd utility, a těch tedy popravdě moc není (protože Pickit 3 je useless sám o sobě a navíc k němu taková utilita ani není, zařízli to, a k tomu navíc "jako bonus" k PK3 ani pořádně nefunguje ta standalone programmer app pod Win, kterou jsem používal pod Windows ve virtuálu - nejedu totiž většinou to jejich obludné IDE, Kate je v Linuxu skvělý lightweight editor který mám už celkem v malíku a jsem v něm produktivnější, ovšem Microchip se na Linux zkrátka vykašlal, tedy kromě té jejich javové šílenosti, která nejde spustit jinak než s admin právy. V pasti ze všech stran).

No, asi si budu si muset nějak poradit, zkusím ještě změnit na nějaký jiný alternate pin a vyzkouším i ten druhý serial port, a jinak pak už nebudu vědět když to nepomůže. Jsem trochu zklamán, už se mi ten brouk začínal pomalu líbit, a v tom zas nějaká jejich obvyklá "microchipóza" (už jednou jsem měl prakticky stejný problém na osmibitovém PICu, tam však pomohlo zapnout BRGH bit, errata sheet o tom problému věděl).

Každopádně díky za ochotu, dám vědět když na něco přijdu, když už jsem vás s tím teda "otravoval" (doufám, že ne moc...)
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 299
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 09 červenec 2018, 16:39    Předmět: Citovat

Teď jsem se díval na Errata a to je snad nejzabugovanější brouk co jsem kdy viděl. Ještě tak zkusit jiný RPx, vyhnul bych se RP18 a 12, sice je v ERRATA popsaná jiná chyba, ale člověk nikdy neví co dalšího.

Já jsem si na PK3 zvyknul, nemám s tím problém až na to ře občas potřebuje přehrát komplet SW ve chvíli kdy se mi to nejmíň hodí. Koupil jsem si i ICD3 a kdybych ho i platil (načštěstí firma Very Happy), tak bych byl asi hoooooodně nasranej... Děbugging mi nefunguje na žádným Microchip brouku se kterým nějak dělám.

GA306 je fakt dobrej PIC, jsem s tím maximálně spokonej. Hlavně šel naprogramovat ještě pod MPLAB 8.92. Poháním s tím moje vlastní PLC (128 výstupů, 123 vstupů přes ext. moduly)

Javovej moloch MPLAB IPE dost často používám na progrtamování a pod Win to chodí dobře jak s PK3, tak s ICD3.

_________________
Stavím UPSky
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: 09 červenec 2018, 18:32    Předmět: Citovat

Pokud je to tedy tak, tak mu dám šanci (doplňující info: Starej MPLAB totiž není kdovíjak velkej a běhá pod XP, takže ve virtuálu s ním není žádnej větší problém, a tohle prostředí dokonce běhá i pod Wine přímo , tedy asi kromě ovládání HW, to jsem ani nezkoušel). Díval jsem se na jeho datasheet, ten brouk se mi dost líbí a errata sheet má celkem mírumilovnej, ale i tak je tohle u mě pro Microchip nejspíš jedna z posledních šancí a možná ani ne na dlouho (asi bych to tu neměl psát, ale pro ARMy mě tu definitivně "zlomili" Radius s Electrinem a taky už se to pomalu, ale jistě blíží. Kit už je doma).

Já to MPLABX IDE taky občas používám, někdy není zbytí. Nevím jak to maká pod Windows a zjišťovat to asi ani nebudu, ale i když vynechám úplně všechno, tak dvě věci tomu stejně odpustit nemůžu: Jednak že je to náladový jak aprílový počasí, často je třeba např. ukončit projekt a zase ho znovu načíst, protože se začne dít něco o čem ani to prostředí samotný neví co (tj. tají runtime chyby, jednou - naštěstí jenom jednou - mi dokonce zmizely všechny soubory ze složky s projektem, prostě se to neuložilo. Ještěže jsem měl zálohu i jinde), a to, že je třeba to spouštět pod správcem systému - tady asi Microchip něco těžce nepochopil, správce systému není běžný user a ani jím nemá být (což mimochodem platí i pod těmi Windows).

Je tedy pravda že jsem nezkoušel úplně nejnovější verzi, mám cosi trojkového, tak ještě můžu zkusit jestli nějaké chyby už nevychytali (aby zanesli jiné, jak už tak někdy bývá). Jinak když už to pitváme tak chápu že embedďák si asi nemůže moc vybírat, platí ho od práce a nástroje jsou jaké jsou (a podezírám Microchip že právě na tohle dost hřeší), nicméně já se tím momentálně neživím a doma chci mít prostředí a nástroje podle sebe, tedy přinejmenším aspoň co se kvality týče - což je přesně to kde dělá podle mého názoru Microchip chybu, protože sice to není nejhorší, ale nejlepší taky zdaleka ne. To platí i co se týče podpory amatérů a dorostu - ze kterých se ti profíci můžou stát později, tak už to chodí, ovšem jen když jim nebude nikdo házet klacky pod nohy nekvalitou, omezenými kompilátory, nefunčním debuggingem přesně jak píšeš, atd. V tomto se mi právěže více líbí přístup ST, ta je k amatérům vstřícnější (ale zase si člověk musí spoustu věcí nastavit sám). Abych jen nehaněl, musím naopak vyzdvihnout kvalitu microchipí dokumentace, ta je velmi dobrá - a abych se nerozkecal moc, tak už to musím utnout, koukám že už z toho mám pomalu článek Very Happy

Toho brouka si koupím.
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: 10 červenec 2018, 11:53    Předmět: Citovat

Takže po dalších pokusech je tu roz(h)řešení: Musím si tu nasypat popel na hlavu a veřejně se omluvit Microchipu, tentokrát je v tom nevinně - závada byla na mém přijímači (a to doslova - totiž buď převodník, nebo přímo COM v PC, ještě přesně nevím).

Po všemožných pokusech s oběma serial porty, RP piny atd jsem se přes výpočet baudové rychlosti postupně propracoval k tomu, že mi nesedí "system clock". Jelikož jsem mezitím stihl vyměnit GA002 za GB002, který má nejen mírumilovnější errata, ale také USB a tudíž je okolo jeho oscilátorů hodně srandy s nastavováním, tak jsem si to tím mírně zkomplikoval, nicméně po ponocování a a dnešním kafi nad datasheetem už je to to co má být včetně časů (obrázek, tentokrát znak 'K').

Jak již správně tušíte, do počítače mi 'K' stále ne a ne dorazit, nicméně "z brouka" už jde to co má - převodník bude nyní podroben vyšetřování a případně i ošetřování. Děkuji za pozornost a věřím, že jste se dobře bavili Laughing



serial-analyzer2-K.png
 Komentář:
 Velikost:  36.72 kB
 Zobrazeno:  309 krát

serial-analyzer2-K.png


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

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 299
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 10 červenec 2018, 15:40    Předmět: Citovat

Jak říkáš, jak je člověk placen od práce a a nemá to jen pro zábavu, tak je to pak jiná.
Používám MPLABX 3.50 a 4.05 a nezaznamenal jsem větší problém, rozhodně to nepoadá, ale potřebuje to občas až 1GB paměti, což s 3GB v Opeře je dost zapeklitý problém Very Happy Občas to přemýšlí jestli to co jsem napsal označit hned za chybu nebo až za 5s, ale nakonec se v tom dá i dělat. Sice 8.92 bylo mnohem lepší a jelo i na 1,6GHz jednojádrovým 32b Atomu s 2GB RAM a vše tam chodilo bleskově.

Nejhorří jsou starty, pak přijde část "Parsing project" ta trvá několik minut v případě mých projektů a pak už to tak nějak šlape. BEz větších komplikací. Nicméně simulátor, tak jak jsem ho hodně používal v 8.92 je tady strašně pomalý a krkolomný, takže už nepožívám a raději to nahraju do brouka + Saleae Logic! (Mám origo Logic 8 PRO a je to pecka jak hovado)

Vzpoměl jsem si, že v Logicu občas blbne Autobaud detect, je potřeba nastavit rychlost nějakou podobnou, potom se to chytá bez problémů. Pak to hodí rychlost nějakou a pak chodí ty rozbitý znaky.

Mám doma několik kitý NXP Kinetis a jeden Nucleo 64. Ale pro moje potěšení jsem zatím nebyl schopen rozumně rozchodit prostředí. Pro mě je super, že stáhnu MPLAB X, k tomu odpovídající XC a nic dalšího neřeší, kdežto pro ARM je prostředí 4 prd....ele a zatím jsem se nedobral ani k blikání LEDky. No pravda moc času jsem tomu nepověnoval, ale u toho uChipu je to celý takový dost intuitivní, tady mi to nepřijde.
Teď mám stáhnuté Atollic cosi, tak snad někdy.

Nakonec mi u uChipu nepřijde ani ten kompilátor tak špatnej, používám verzi Free a neřeším to. Vše funguje v pohodě. Ale ceníková cena za PRO verzi je vážně úsměvná. Kdyby to dali za 150 USD, tak je to snesitelný, ale 852 EUR Very Happy

Poslední dobou mě začalo ale dost bavit ESP8266 a Arduino IDE

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
diallix
Účastník
Účastník


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

PříspěvekZaslal: 16 červenec 2018, 17:23    Předmět: Citovat

ADC kody som trocha poupravil a nasadil na LCD display. Zariadenie meria napätie na trimru + zobrazuje hodnotu ADC1BUF0

Kod:
kód:
#include "config_diall.h" // http://www.diallix.net/headers
#include "config_words.h" // http://www.diallix.net/headers
#include "LCD_D.h" // http://www.diallix.net/el/145-lcdcontroll

char *PageSys(void)
{
return "0x21";
}

struct __attribute__ ((packed)) {
float voltage;
float number;
char results_voltage[32];
char results_number[32];
}ADC_Results;

unsigned long ADCValue = 0;

void ADC_Init(void)
{
CLKDIV = 0;
//Init_Port(PORTA, 1, "analog"); /* Set AN1 as analog */
AD_Set_Analog(AN1); /* Set AN1 as analog */
Set_ADC_port(AN1); /* Set AN1 port for scanning */
Config_OUT(TRISA,0); /* Set RA0 for detect LED */
T3CON=0b1000000000110000; /* 50msec, 1/256,FOSC=16MH, Current time clock */
PR3 = 3124; /* 50000 ·((1/16) —256)-1 = 3124 */

AD1CON1 = 0x8044; /* AD1CON1:A/D1 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 = 0x0400; /* AD1CON2:A/D2; 31Tad 3.0Tcy
                                   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 = 0x0000; /* AD1CON3:A/D3; MUX A
                                   Configure A/D conversion clock as Tcy/2 */

AD1CHS = 0x0000; /* AD1CHS:A/D
                                 Configure input channels */

IEC0bits.AD1IE = 1; /* Enable A/D conversion interrupt */
AD1CON1bits.ADON = 1; /* Turn on A/D */
AD1CON1bits.ASAM = 1; /* Sampling begins immediately after the last conversion */
AD1CON1bits.SAMP = 1; /* Start sampling the input */
}

void Display_Init(void)
{
OSCTUN = 0;
RCONbits.SWDTEN = 0;
This.Detect.Debug = FALSE;

LCD.Direct.Port = uintptr &PORTA;
LCD.Data.Port = uintptr &PORTB;
LCD.Direct.RS = 2;
LCD.Direct.RW = 3;
LCD.Direct.EN = 4;

//LedStatus.Port = uintptr &PORTB;
//LedStatus.Led = 0;
LCD_Init();
}

int main(void)
{
ADC_Init();
Display_Init();

Delay_us(50);

while(1)
{
//Delay_ms(ADCValue);
//Bit_Toogle(LATA, 0);
LCD_Send_(1,LCD.position_1,null);
LCD_Send_(0,null, ADC_Results.results_voltage);
LCD_Send_(1,LCD.position_2,null);
LCD_Send_(0,null, ADC_Results.results_number);
}

return 0;
}

void __attribute__((interrupt,auto_psv)) _ADC1Interrupt(void) /* interrupt thread */
{
ADCValue = ADC1BUF0; /* Get data from buffer0 */

ADC_Results.voltage = ((float)ADC1BUF0 * 3.3f)/1024.0f;
sprintf(ADC_Results.results_voltage, "Voltage: %3.2f ",ADC_Results.voltage);

ADC_Results.number = ((float)ADC1BUF0);
sprintf(ADC_Results.results_number, "Number: %3.2f ",ADC_Results.number);

IFS0bits.AD1IF = 0; /* ADC flag set 0 */
}



video: www.youtube.com/watch?v=M402vAYV5ws


cely clanok : http://diallix.net/el/199-adc-prevodnik-2
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
 
Strana 3 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)