Sida 1 av 2
Har någon testat Code Configuration Plug-In för MPLAB® X ?
Postat: 11 juli 2014, 10:23:14
av dubbear
Jag tvingades byta processor för mitt nuvarande projekt, och plockade då en av dom nyare(16f1708) som stöds av detta verktyg.
Personligen är jag mycket imponerad!
Capture.JPG
Speciellt i synergi med peripheral pin select där man kan mappa om samtliga digitala in och utgångar.
Bilden ovan genererar följande kod
Kod: Markera allt
void PWM4_Start_rear_pwm_10(void)
{
// Set the PWM to the options selected in the MPLAB® Code Configurator.
// PWM4POL active_hi; PWM4EN enabled;
PWM4CON = 0x80;
// PWM4DCH 255;
PWM4DCH = 0xFF;
// PWM4DCL 48;
PWM4DCL = 0x30;
// Selecting Timer6
CCPTMRSbits.P4TSEL = 0x80;
}
Och när man definierar en digital port skapas en stor mängd macron som man kan använda om man vill.
Här är för utgången Front_Inductor_Feed .
Kod: Markera allt
#define Front_Inductor_Feed_TRIS TRISA2
#define Front_Inductor_Feed_LAT LATA2
#define Front_Inductor_Feed_PORT RA2
#define Front_Inductor_Feed_WPU WPUA2
#define Front_Inductor_Feed_ANS ANSA2
#define Front_Inductor_Feed_SetHigh() do { LATA2 = 1; } while(0)
#define Front_Inductor_Feed_SetLow() do { LATA2 = 0; } while(0)
#define Front_Inductor_Feed_Toggle() do { LATA2 = ~LATA2; } while(0)
#define Front_Inductor_Feed_GetValue() RA2
#define Front_Inductor_Feed_SetDigitalInput() do { TRISA2 = 1; } while(0)
#define Front_Inductor_Feed_SetDigitalOutput() do { TRISA2 = 0; } while(0)
#define Front_Inductor_Feed_SetPullup() do { WPUA2 = 1; } while(0)
#define Front_Inductor_Feed_ResetPullup() do { WPUA2 = 0; } while(0)
#define Front_Inductor_Feed_SetAnalogMode() do { ANSA2 = 1; } while(0)
#define Front_Inductor_Feed_SetDigitalMode() do { ANSA2 = 0; } while(0)
Pins.JPG
Eusart.JPG
Jag har aldrig konfat en USART snabbare.

Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 10:57:41
av sodjan
Kollade det där för ett par dagar sedan, och det såg ju trevligt ut.
Nu så körde jag det i ett redan påbörjat projekt, så det blev inte så
bra, man ska nog gå "all in" och använda konfiguratorn fullt ut...

Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 11:31:51
av dubbear
Om man går all in så får man väldigt lättläst kod.
även om de känns lite ovant.
Kod: Markera allt
if (Front_Led.is_conected == 1){
Front_Inductor_Feed_SetDigitalOutput();
Front_Inductor_Feed_SetHigh();
PWM3_Start_front_pwm_10();
}
Här behövs ju knappast några kommentarer i koden.
edit: Stavfel och koden
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 12:14:21
av sodjan
Är det som med en del andra definitioner att man får en drop-down
då man skriver punkten efter "Front_Led." med tillgängliga alternativ?
Annars föredrar jag lättläst kod framför kryptisk kod som *måste*
kommenteras...

Det blir ju lika mycket att skriva i alla fall.
Sen så är väl/ju 1 "true" i C, så det borde kunna skrivas:
Kod: Markera allt
if (Front_Led.is_conected){
Front_Inductor_Feed_SetDigitalOutput();
Front_Inductor_Feed_SetHigh();
PWM3_Start_front_pwm_10();
}

Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 12:28:27
av dubbear
Om det var detta du menade så funkar det med Ctrl+Space när man har börjat skriva.
och if (Front_Led.is_conected) är bättre
Dropp.png
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 12:55:05
av sodjan
Ja men va bra, då gör det inget att namnen är långa.
Det blir bara dokumentation "på köpet", så att säga.
Det var inte riktigt det jag menade, om man skriver t.ex
"INTCONbits" så får man de olika bitarna i en lista då man
skriver en punkt, men resultatet blir ju detsamma.
Alltså ungefär som "Front_Led.is_conected", d.v.s om man får
"is_conected" och de övriga options när man skriver punkten.
Aja, spelar ingen större roll...
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 13:04:09
av dubbear
Ja de får man, Men just i detta fallet är det för att jag har definierat en struct
Kod: Markera allt
typedef struct {
uint8_t is_conected;
uint8_t needs_SMPS;
uint16_t power_lv;
} LED;
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 13:12:57
av sodjan
Aha, OK då är jag med.
Jag trodde att det kom from konfiguratorn...
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 13:18:52
av kodar-holger
Här behövs ju knappast några kommentarer i koden.
Kommentarer behövs alltid. Dom är inte där för att tala om VAD man gör utan VARFÖR man gör det.
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 13:37:14
av TomasL
Är motstånder till dylika hjälpmedel, framförallt för nybörjare, risken är att användaren inte riktigt vet vad han håller på med.
Det var ju till exempel orsaken till att man i MPLAB-X numera måste skriva in konfigurationsbitarna i koden, istället för som i gamla MPLAB, den generade det automatiskt.
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 13:50:34
av sodjan
> Kommentarer behövs alltid. Dom är inte där för att tala om VAD man gör utan VARFÖR man gör det.
Man kanske inte behöver kommentera på varje rad utan kan lägga en
samlad beskrivning av (och med bakgrund och orsak till) den aktuella koden.
Den kod som visades som exempel behöver ingen detaljbeskrivning
om man innan har fått bakgrunden klar för sig. Se så är den ju
mycket trevligare att "läsa", så att säga.
> Det var ju till exempel orsaken till att man i MPLAB-X numera måste skriva in konfigurationsbitarna i koden...
Jo, fast man kan välja "Configuration bits" och ställa in det med drop-down listor.
Man får även en förklarande text direkt till varje val. Sedan trycker man "generate code"
och klipper in det i sin egen källkod. Det är i princip samma sak som i gamla MPLAB,
fast man måste lägag det i källkoden. Och ja, det är bättre så här.
Och när det gäller konfiguratorn som sådan, så sker ju inget i det fördolda.
All kod är i klartext och det går utmärkt att se vad som görs. Till skillnad
från då man t.ex använder färdiga funktioner i MikroC (eller i en Arduino).
Där är det betydligt svårare att leta reda på detaljfunktionen. Här är
all automat genererad kod en del av själva projektet.
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 14:14:31
av dubbear
TomasL skrev:Är motstånder till dylika hjälpmedel, framförallt för nybörjare, risken är att användaren inte riktigt vet vad han håller på med.
Det var ju till exempel orsaken till att man i MPLAB-X numera måste skriva in konfigurationsbitarna i koden, istället för som i gamla MPLAB, den generade det automatiskt.
Jag förstår vad TimasL säger.
Men om man följer ett macro så får man precis vad det gör.
Kod: Markera allt
#define Rear_Indoctor_Feed_SetHigh() do { LATC4 = 1; } while(0)
Och härifrån kan man söka på LATC4 i databladet och få sin förståelse för vad som händer.
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 15:02:46
av TomasL
Makron borde vara förbjudna, och är det egentligen.
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 15:42:09
av sodjan
Märkligt kommentar. Makro hantering är centrala
delar i många olika programeringsspråk. Och vad
är det som "egentligen" är förbjudet?
Re: Har någon testat Code Configuration Plug-In för MPLAB® X
Postat: 11 juli 2014, 16:03:55
av TomasL
Makron är en av de främsta källorna till buggar i kod, om man tittar på de kvalitetsnormer och standarder som finns, till exempelvis MISRA, så är FunktionsMacron i princip förbjudna.