www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit AT908535 - ATMEGA8535


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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();
  }
 }

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.