Hi, ich habe einen ADC an einem Mega8 und mir dazu die passende LIB geschrieben. Leider bekomme ich vom ADC nur Mist. ADC läuft mit Prescaler 128, Quarz ist 14,xx MHz. Die ausgelesenen werte schicke ich mir über RS232. Protokollerklähring: 0xaa steht für anfang, dann folgen die zwei Werte, dann 0xee für ende. ====================== 00000000: aa 00 40 ee aa 00 40 ee aa 00 40 ee aa 00 c0 ee 00000010: aa 00 c0 ee aa 00 00 ee aa 00 40 ee aa 00 00 ee 00000020: aa 00 c0 ee aa 00 80 ee aa 00 80 ee aa 00 80 ee 00000030: aa 00 00 ee aa 00 80 ee aa 00 c0 ee aa 00 80 ee ======================= Das ganze zieht sich so immer weiter. Meine ADC datei ist im Anhang. adc.c hänge ich in den Anhang, main folgt hier: #include <avr/io.h> #include <avr/interrupt.h> #include "leds.h" #include "edelay.h" #include "adc.h" #include "usart.h" void main(void){ d // INITZILASATION led_green_on(); adc_init(0); adc_activate(1); usart0_init(); while(1){ usart0_putc(0xaa); //highvoltage_control(); unsigned int send; send=adc_read_and_null(0); usart0_putc(send<<8); usart0_putc(send); usart0_putc(0xee); for(i=40;i;i--){ edelay(64000); } if(send<256){ led_yellow_off(); led_green_off(); continue; }else if(send<512){ led_yellow_off(); led_green_on(); continue; }else if(send<768){ led_yellow_on(); led_green_off(); continue; }else{ led_yellow_on(); led_green_on(); continue; } } while(1); }
Michael H. schrieb: > send=adc_read_and_null(0); > usart0_putc(send<<8); So wird das auch nichts, wenn du dir die Highbits links rausschiebst. Lass dir doch das Zeugs im Klartext ausgeben. Du bist ein Mensch, du willst lesbare Zahlen haben!
1 | void usart_puts( const char* s ) |
2 | {
|
3 | while( *s ) |
4 | usart_putc( *s++ ); |
5 | }
|
6 | |
7 | int main() |
8 | {
|
9 | ...
|
10 | char buffer[10]; |
11 | ....
|
12 | |
13 | send=adc_read_and_null(0); |
14 | sprintf( buffer, "%d ", send ); |
15 | usart_puts( buffer ); |
16 | ....
|
Okay, das habe ich mal gemacht;Prefix ist immer Val online Val 747 Val 575 Val 580 Val 578 Val 574 Val 587 Val 572 Val 594 Val 571 Val 599 Val 572 Val 600 Val 577 Val 599 Val 585 Val 593 Val 591 Val 584 Val 598 Val 579 Val 604 Val 580 Val 606 Val 579 Val 604 Val 585 Val 601 Val 590 Val 595 Val 599 Val 587 Val 607 Val 583 Val 608 Val 582 Val 608 Val 583 Val 607 Val 589 Val 600 Val 596 Val 592 Val 604 Val 586 Val 608 Val 584 Val 610 Val 581 Val 607 Val 584 Val 602 Der Wert ist unabhängig von der Spannung. Diese liegt am ADC an. Der Chip ist auch komplett neu.
jipphipp hura, es geht... es scheint, als sei in meiner Lib noch ein Fehler mit der Kanalwahl...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.