Hallo,...
Ich lese einen TLC549 mit einem ATMEGA88 aus, da ich die internen ADC
Pins leider nicht frei zugänglich habe.
Nun zum Eigentlichen Problem ich bekomme anstelle von 000 bei 0V den
Wert 128 also 2^7 angezeigt möchte den 8-bit A/D Wandler aber gerne auch
als solchen nutzen!
der TLC549 hat Vref auf 5v,... CLK_io,CS,Data am µC,... ein POTI
zwischen Analog in und GND angeschlossen.
Der C-Code ist rel. simpel und absichtlich aufgebläht gehalten:
1 | value=0;
|
2 |
|
3 | PORTC=0xDF; //CS auf low also auslesen
|
4 | PORTB=0xFD;
|
5 | if( ( PINB & ( 1 << PB0 ))) // MSB zuerst
|
6 | value+=128;
|
7 |
|
8 | PORTB=0xFF;
|
9 | wait(i);
|
10 | PORTB=0xFD;
|
11 | wait(i);
|
...usw bis...
1 | if( ( PINB & ( 1 << PB0 ))) // LSB
|
2 | value+=1;
|
3 |
|
4 | PORTB=0xFF; // 8-ter Takt
|
5 | wait(i);
|
6 | PORTB=0xFD;
|
7 | wait(i);
|
8 |
|
9 | PORTB=0xFF;
|
10 | wait(i);
|
11 | PORTC=0xFF; // CS auf high
|
12 | wait(i);
|
die Variable i entspricht in etwa der Anzahl an Wartetakten @ 8 MHz
also im Prinzip wie im Datenblatt von Texas-Instruments ich hab hier
auch schon im Forum gesucht und rumgelesen hab aber keinen konkreten
Hinweis hierzu gefunden,...
vielen Dank schon mal im Vorraus Gruß Kai