PIC18F und MCP3421

Gast #2273225
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??
Gast #2273332
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren