Hej! Hab mich die Tage hingesetzt und versucht meine alte Gameboy-Kamera auszulesen, aber es klappt nicht und wird mit der Zeit immer frustrierender. Ich bekomme als Bild einen Weiß nach Schwarz Verlauf nach der ersten Auslesung, darauf folgende Auslegungen liefern nahe komplett schwarze Bilder zurück. Ich habe probeweise den AD-Wandler mit der Masse verbunden bekomme aber nicht 0 zurück. Ich denke, da stimmt irgendwas nicht. Kann man den AD-Wandler durch falsche Konfiguration kaputt machen (z.B. als Referenzspannung 2,56 V wählen, aber bis zu 5 V anschließen)? Habe nämlich irwann nach bester Try-And-Error Manier alle möglichen Spannungsreferezen durchprobiert. Anbei mein Code um den Wandler auszulesen und die Daten über RS232 an den PC zu schicken:
Ausschnitt aus main.c:
Ausschnitt aus uart/uart.hCode:// Init UART uart_init(); // Init AD converter (prescaler 64, AVCC, channel 0) ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); ADMUX = (1 << REFS0) | (1 << MUX0); // Dummy read ADCSRA |= (1 << ADSC); while (ADCSRA & (1 << ADSC)); while (1) { // Read ADCSRA |= (1 << ADSC); while (ADCSRA & (1 << ADSC)); uart_writec(ADCL); uart_writec(ADCH); // Wait 1 second _delay_ms(2000); }
Ausschnitt aus uart.c:Code:// Write function static inline uint8_t uart_writec(uint8_t c) { /* Wait until transmit buffer (UDR) is empty */ while (!(UCSRA & (1 << UDRE))); /* Write output */ UDR = c; return 1; }
Passt das soweit? Oder habe ich tatsächlich falsch programmiert? Als Ergebnis bekomme ich hier beispielsweise 635d, wenn ich den AD-Eingang mit der Masse verbinde, oder 357d wenn ich den Eingang mit 5V verbinde. Die Ergebnisse schwanken aber +/- 20d.Code:void uart_init(void) { uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU / (16 * UART_BAUDRATE) - 1); UBRRH = (uint8_t) (ubrr >> 8); UBRRL = (uint8_t) (ubrr); /* Enable receiver and transmitter */ UCSRB = (1 << RXEN) | (1 << TXEN); /* 8N1, no parity */ UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); /* Do initial flush */ uart_flush(); }







. Ich bekomme als Bild einen Weiß nach Schwarz Verlauf nach der ersten Auslesung, darauf folgende Auslegungen liefern nahe komplett schwarze Bilder zurück. Ich habe probeweise den AD-Wandler mit der Masse verbunden bekomme aber nicht 0 zurück. Ich denke, da stimmt irgendwas nicht. Kann man den AD-Wandler durch falsche Konfiguration kaputt machen (z.B. als Referenzspannung 2,56 V wählen, aber bis zu 5 V anschließen)? Habe nämlich irwann nach bester Try-And-Error Manier alle möglichen Spannungsreferezen durchprobiert. Anbei mein Code um den Wandler auszulesen und die Daten über
Zitieren

Lesezeichen