[ Brelak @ 25.02.2011. 12:50 ] @
Postovana gospodo, radim sa gore pomenutom opremom i u fazi sam provaljivanja. Radio sam primere gde sam koristio GPIO pinove, tajmere, PWM, ispisivao svasta na ekran, crtao a sada sam zapeo kod analognog komparatora. Kao analognu vrednost koristim obican potenciometar ciji su krajevi na +3,3V , GND a srednji sam prosledio na PB6, odnosno C+ ulaz. CIlj mi je da imam indikaciju da je testirani napon (srednji kraj pot.) visi ili nizi od internog referentnog napona.

Pozdrav i hvala!
[ bogdan.kecman @ 25.02.2011. 13:30 ] @
to je neki cortex m3?

probaj ovako:

Code:

#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "drivers/rit128x96x4.h"

#include "driverlib/comp.c"
#include "driverlib/comp.h"
#include "driverlib/adc.c"
#include "driverlib/adc.h"
#include "driverlib/gpio.c"
#include "driverlib/gpio.h"

#include <stdio.h>
#include <LM3Sxxxx.H>           // LM3Sxxxx library definitions

int i;

//*****************************************************************************
//
// The error routine that is called if the driver library encounters an error.
//
//*****************************************************************************
#ifdef DEBUG
void
__error__(char *pcFilename, unsigned long ulLine)
{
}
#endif

int
main(void)
{
    //
    // Set the clocking to run directly from the crystal.
    //
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);                                                     // dozvola rada porta E
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);                                                     // dozvola rada porta F
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);                                                     // dozvola rada porta C
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);                                                     // dozvola rada porta G
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);                                                     // dozvola rada porta D
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);                                                     // dozvola rada porta A
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);                                                     // dozvola rada porta B

    GPIOPinTypeComparator(GPIO_PORTB_BASE,GPIO_PIN_6);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_ANALOG);
    ComparatorRefSet(COMP_BASE, COMP_REF_2_371875V);
    ComparatorConfigure(COMP_BASE, 0, (COMP_TRIG_NONE | COMP_INT_BOTH | COMP_ASRCP_REF | COMP_OUTPUT_NORMAL));


    //
    // Initialize the OLED display.
    //
    RIT128x96x4Init(1000000);

    RIT128x96x4StringDraw("Analog comparator",  15,  6, 12);
    RIT128x96x4StringDraw("      test...",         15, 15, 12);
    RIT128x96x4StringDraw("Comparator:", 0, 40, 12);
    RIT128x96x4StringDraw("***Set...", 0, 50, 12);
    RIT128x96x4StringDraw("***Configured...", 0, 60, 12);

    for(i=0;i<10000;i++);
 
    while(1){
        if(ComparatorValueGet(COMP_BASE, 0)){
            RIT128x96x4StringDraw("HIGH", 0, 80, 12);
        }else{
            RIT128x96x4StringDraw("LOW ", 0, 80, 12);
        }
    
    }
}
[ bogdan.kecman @ 25.02.2011. 13:33 ] @
takodje proveri da li mozda treba da dovedes analogni signal na B4 a ne na B6 .. tj

Code:

    GPIOPinTypeComparator(GPIO_PORTB_BASE,GPIO_PIN_4);
    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_ANALOG);


ne secam se vise gde to ide, batalio sam TI arm verziju ... ST mi se mnogo vise svidja
[ Brelak @ 25.02.2011. 13:53 ] @
U sustini meni funkcije tipa:

RIT128x96x4StringDraw("Comparator:", 0, 40, 12);
RIT128x96x4StringDraw("***Set...", 0, 50, 12);

uopste ne trebaju. Koristim ih samo posle funkcija konfigurisanja kako bih video dokle program radi jer se desavalo da prodje kroz jednu funkciju ali blokira na sledecoj nego ok. PB6 i PB4 su analogni ulazi gde je PB4 (C-) eksterni referentni napon a PB6 test napon, obzirom da koristim interni ref. napon C- mi ne treba...valjda. Mada probao sam i na PB6 i na PB4 da dovedem an. ulaz i ne radi. Inace u pitanju je ARM® Cortex™-M3...
[ bogdan.kecman @ 25.02.2011. 14:03 ] @
da da .. cm3 .. ovaj kod koji sam ti ja stavio bi trebalo da radi - da li si probao?
[ Brelak @ 25.02.2011. 14:14 ] @
Na zalost ne radi, probao sam upravo. Displej ne prikazuje apsolutno nista. Problem pravi "COMP_BASE", kada ga zamenim sa "GPIO_PORTB_BASE" prolazi ali komparator se i dalje ne odaziva. Nigde na netu nisam nasao primer za AC...
[ bogdan.kecman @ 25.02.2011. 14:31 ] @
cudno .. u library pdf-u stoji comp_base ..

pogledaj http://e2e.ti.com/support/micr...ller/f/471/p/46476/163353.aspx
i http://e2e.ti.com/support/micr...ller/f/476/p/68827/249149.aspx

ovaj prvi je za lm3s800 i on gadja D7 --> GPIODirModeSet( GPIO_PORTD_BASE , GPIO_PIN_7 , GPIO_DIR_MODE_HW) ;

ovaj drugi je LM3S9B96-DK (mislim da ima isti mcu kao tvoj board, isto B4 minus i B6 plus) ... on doduse koristi interapt ali konfiguracija je ista .. (on je vezao pot na - ulaz ac-a) .. probaj njegov kod ..

sve u svemu - http://e2e.ti.com/support/micr...microcontroller/f/default.aspx - je pravo mesto za pretragu i postavljanje pitanja ... ima dosta ljudi tamo koji znaju znanje a ima i par likova koji rade za TI koji tu daje odgovore .. tako da za neke stvari za koje nema teorije da bi provalio sam bez nekog extra iskustva dobijes odgovor :) .. vrlo iskusno .. forum jeste malo ruznjikav al .. vredi

inace, ovaj drugi link - lik je rekao da mu je CAN modul pravio problem, a inace se na netu spominju i neki jumperi ... (nisam video taj dev board nikad, kao sto rekoh ja sam odlucio da koristim STM32 za cortex m3 posto mi se nekako vise svidja, ali kapiram da ima neke jumpere koji biraju sta je gde vezano posto ako ti je neki externi modul vezan za te Bx pinove mozda moras da ga jumperima otkacis da bi imao pristup nesmetan na ac)
[ Brelak @ 25.02.2011. 15:13 ] @
Ok, problem je resen! Hvala Bogdane, linkovi su bili od koristi. Problem je bio taj sto sam umesto COMP_BASE pisao GPIO_PORTB_BASE, gde je prvi "unsigned long ulPort" a drugi "unsigned long ulBase". Prikacio sam kod pa kome treba neka koristi kao referencu.

Funkcije:

GPIOPinTypeComparator(GPIO_PORTB_BASE,GPIO_PIN_6);
GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_6, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_ANALOG);

su u ovom primeru visak, program radi i bez njih.

[Ovu poruku je menjao Brelak dana 25.02.2011. u 17:49 GMT+1]