Forum: Mikrocontroller und Digitale Elektronik PIC18F und MCP3421


von Obi Plal (Gast)


Lesenswert?

Wie kann ich mit dem PIC18F4550 und dem MCP3421 kommunizieren?
Welche Daten werden gesendet/empfangen?
Kennt jemand eine Seite wo ich eine Anleitung finde??

von holger (Gast)


Lesenswert?

>Kennt jemand eine Seite wo ich eine Anleitung finde??

Das Datenblatt?

von Obi Plal (Gast)


Lesenswert?

Leider verstehe ich das nicht :(
1
void main(void){
2
   
3
   osccon = 0x41;
4
   
5
   //first, configure ADC
6
      i2c_start();
7
     
8
      i2c_write(0xD0); //write mode
9
10
      //16bit, continuous conversion, PGA = 1V/V
11
      i2c_write(0x1C);
12
   
13
      i2c_stop();
14
   
15
   while(1){
16
      i2c_start();
17
      i2c_write(0xD1);//Read mode
18
19
     
20
      high_buffer = i2c_read();
21
   
22
23
      low_buffer = i2c_read();
24
      i2c_stop();
25
      high_buffer&=0x7F;
26
      adc_in = high_buffer;
27
      adc_in <<= 8;
28
      adc_in += low_buffer;   
29
      }
30
   }

Habe deiesen code irgendwo gefunden. Könnte der funktionieren??

von Arc N. (arc)


Lesenswert?


von holger (Gast)


Lesenswert?

>Leider verstehe ich das nicht :(

Ist doch nicht schlimm, such dir ein anderes Hobby.

von Joachim .. (joachim_01)


Lesenswert?

Böser, böser Holger.

von Hans W. (stampede)


Lesenswert?

Nein, das ist kein böser KOmmentar. Ist ist nur wahr.

von Andreas G. (beastyk)


Lesenswert?

Moin Obi,
ich nehm mir hier mal den Configurationsteil des MCP3421.
Aus dem Datenblatt des MCP3421 Abschnitt 5.2 und dort Register 5.1 sieht 
man die 8bit für die Konfiguration. Binär (0000.0000 bis 1111.1111), die 
Konfiguration geschieht hier über I2C. Zuerst startet man den I2C, dann 
sendet man die Daten und schließt danach die Verbindung.
Es werden 2 I2C-Write anweisungen übergeben, die Zahlen darin (0xD0  und 
0x1C sind Hexadezimalzahlen.
Um das Register 5.1 zu verstehen schreib ich dir die Zahlen mal als 
Hexadezimal, Dezimal und (wichtig für das Register) in Binärcode.

Obi Plal schrieb:
> //first, configure ADC
>       i2c_start();
>
>       i2c_write(0xD0); //write mode
>
>       //16bit, continuous conversion, PGA = 1V/V
>       i2c_write(0x1C);
>
>       i2c_stop();

0xD0 ->  208 -> 1101.0000
0x1C ->   28 -> 0001.1100

Wenn du nun mit den Binärzahlen und dem Register 5.1 des Datenblattes 
nicht verstehst was da passiert dann lese nochmal die bösen Kommentare 
oder wenn du noch zu jung bist geh weiter zur Schule und pass gut auf!

Gruß
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.