Egen PC Mjukvara för styrning av PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Egen PC Mjukvara för styrning av PIC

Inlägg av Jeppsson »

Hej!

Bakgrund
Jag har ett litet PIC projekt baserat på en PIC18F2320 som pratar men en PC via RS232. Koden till PICen är skriven i mikroC och fungerar som den skall.

Så då var jag tvungen att ge mig in i att börja skriva koden till programmet som skall rulla på själva PCn.

Jag har varit på gång flera gånger att börja lära mig programmera i Windows men aldrig fott foten loss... Från nu! :)

Efter kollat runt lite så bestämde jag mig för att börja med att försöka programmera i Visual C# 2008 Express Editon.

Måste bara säga att det är väldigt likt mikroC och att det är super lätt att komma igång med.

Så långt som jag har kommit i programvaran nu så kan jag skicka och ta emot få PICen och även få PICen att bete sig som jag vill till stordel.

Behöver hjälp med!
Men det som jag inte kan få till på ett bra sätt i C# är hur går man in och kontrollerar individuella bitar i en byte och påverkar dom om man vill?

Alltså både kontrollera bits och påverka individuella bitar om man så vill.

Om ni inte kan koden för C# men för något annat liknade som C++ eller VB så skriv gärna den koden så kanske jag kan konventer den eller hitta liknande funktioner i C#...

Tack på förhand!

Projekt tråd kommer... :)
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Inlägg av exile »

i C använder man | (or) eller & (och) när man manipulerar bitar
Exempel:

test |= (1<<5); //sätter bit 5
test &= ~(1<<4);//clerar bit 4

if( (test & (1<<5) ) ) { ... } //testar om bit 5 är satt

if( !(test & (1<<4))) { ... } //testr om bit 4 är cleard


Så det bör fungera i C#..... ^^
H.O
Inlägg: 5919
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Inlägg av H.O »

Hej Jeppson,
Låt mig börja med att säga att jag kan nada om C, C#, och C++ men ett sätt att kolla om en enskilld bit är satt är göra en AND med den önskade bitens "värde".

Alltså, säg att värdet på din variabel (A) är 12 och du vill veta om bit 2 är satt. If A AND 4 = 1

Om du vill sätta en enskilld bit utan att påverka andra bitar så gör du A = A OR 4.

Exakt hur syntaxet ser ut för det här i C# borde du kunna hitta i hjälpen/MSDN.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Man kan använda mycket av den vanliga C-syntaxen även i C#, men det finns även vissa skillnader. Är det nåt speciellt du undrar över?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag har inte kollat om C#" skiljer sig från C på det punkt men man kan deklarera såhär:

Kod: Markera allt

union
  {
  struct
    {
    BYTE B0 : 1; // Betyder att storleken är 1 bit
    BYTE B1 : 1;
    BYTE B2 : 1;
    BYTE B3 : 1;
    BYTE B4_7 : 4; // Är 4 bit stor
    } Bit;
  BYTE B; // Hela byten
  } The_Byte;
Man kan komma åt dessa variabler på olika sätt, först hela bytes:
The_Byte.B

Sedan de enstaka bits eller samlingar av bits:
The_Byte.Bit.B0
The_Byte.Bit.B1
The_Byte.Bit.B2
The_Byte.Bit.B3
The_Byte.Bit.B4_7
spaderkung
Inlägg: 138
Blev medlem: 12 maj 2007, 11:24:24
Ort: Sjöbo

Inlägg av spaderkung »

När jag skrev ett VB-interface till Siemens PLC-simulator upptäckte jag att MS egen dokumentation om Visual Studio är rätt så omfattande. Den kan kanske vara bra som referens:

http://msdn2.microsoft.com/sv-se/librar ... n-us).aspx
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Kolla här :
http://www.cwu.edu/~iet/programs/eet/co ... /11037.htm

"Communicate with PIC16 and PIC18 MCUs via the PC serial port"
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Inlägg av LHelge »

Du kan hitta mycket värdefull information på MSDN, vad gäller operatorer så är detta en bra utgånspunkt:

http://msdn2.microsoft.com/en-us/librar ... S.80).aspx

De operatorer som är nyttigast vid bitmanipulering är:

& Logisk AND
| Logisk OR
^ Logisk XOR
>> Shift right
<< Shift left
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Jag tackar så mycket för hjälpen...

Det är precis var jag har sökt efter!

Skall knacka lite kod senare idag/morgon och åter kommer med resultat!

/ Jeppsson
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Den logiska hanteringen fungerar bra...

Men nu har jag en annan fråga, finns det något enkelt sätt att i C# omvandla från t.ex 6000000 Hz till 6000 kHz eller 6 MHz eller måste jag skriva egna rutiner för det?

/ Jeppsson
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Omvandla? Det är ju exakt samma sak...
Eller hur menar du ?
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Jag menar att istället för att skriva ut 6000000 Hz så blir det enklare att läsa om det står 6 MHz istället och det tar också mindre plats på skärmen där det redan är trångt.

Det är allså till för att det skall kunna presenteras enklare på skärmen. Värdet kommer att variera.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det är en sak du får göra själv.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Plocka bort nollorna och lägg till ett "M"...
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

Investera tid i C# låter jättebra tills M$ får nycker att byta till något annat.. Hellre riktig C.
Skriv svar