Hallo anbei der Code ist für n AT90S8535 8mhz ausgelegt hab aber nur n AT MEGA8535 16 mhz zuzeit da sobald ich den code drauf schiebe natürlich mit geänderter #include zeile (#inc...mega8535...) in code vision schaltet der controller alle ports auf 5 volt... wo liegt da der fehler ? sollte n vu meter für n spec analyzer werden.. #include <90s8535.h> #include <stdio.h> // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input; // Start the AD conversion ADCSR|=0x40; // Wait for the AD conversion to complete while ((ADCSR & 0x10)==0); ADCSR|=0x10; return ADCW; } // Initialisierungsroutine fuer den Prozessor void McuInit(void) { DDRD=0xff; DDRA=0xff; DDRB=0xff; DDRC=0xff; // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; ADCSR=0x87; } void Ausgabe(unsigned int Wert) { char c=0; char d=0; // Jetzt folgen ein paar frei erfundene Werte. Ich lege jetzt // mal z.B. 2V als maximalen Eingangswert fest und nenne // das +6dB. Dann ist: // 2,00V = +6dB = 1023 (nur Rechenbeispiel) // 1,41V = +3dB = 721 = alle LEDs an. // 1,26V = +2dB = 644 // 1,12V = +1dB = 572 // 1,00V = +0dB = 511 // 0,89V = -1dB = 455 // 0,79V = -2dB = 403 // 0,71V = -3dB = 363 (alle LEDs von PortD an und PB0, PB1) // 0,63V = -4dB = 321 (alle LEDs von PortD an und PB0) // 0,56V = -4dB = 286 (alle LEDs von PortD an) // 0,50V = -6dB = 256 // 0,45V = -7dB = 229 // 0,40V = -8dB = 204 // 0,35V = -9dB = 178 // 0,32V = -10dB = 163 = 1.,2.,3. LED an (PD0, PD1, PD2) // 0,28V = -11dB = 142 = erste und zweite LED an (PD0, PD1) // 0,25V = -12dB = 128 = erste LED an (PD0) if (Wert>=128) d=1; if (Wert>=142) d=d+2; if (Wert>=163) d=d+4; if (Wert>=178) d=d+8; if (Wert>=204) d=d+16; if (Wert>=229) d=d+32; if (Wert>=256) d=d+64; if (Wert>=286) d=d+128; if (Wert>=286) c=c+1; if (Wert>=321) c=c+2; if (Wert>=363) c=c+4; if (Wert>=403) c=c+8; if (Wert>=455) c=c+16; if (Wert>=511) c=c+32; if (Wert>=572) c=c+64; if (Wert>=644) c=c+128; PORTC=c; PORTD=d; } void Schalten(void) { char Kanalnummer; unsigned int Wert; Kanalnummer=0; while(Kanalnummer<32) { PORTB=Kanalnummer; a=0; while (a<2000) { a=a+1; } PORTB=Kanalnummer+128; Wert=read_adc(0); Ausgabe(Wert); Kanalnummer=Kanalnummer+1; } } void main(void) // Hauptprogramm { unsigned int wert; char kanal; McuInit(); while(1) { Schalten(); } }
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.