mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm bleibt hängen


Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
STK300 (ATmega103L)

hallo, folgendes Programm soll den Analog Digital Wandler meines STK300
ansprechen.

es bleibt aber hängen, und zwar an einer Stelle, die der CodeWizard von
CodeVisionAVR programmiert hat.

Hier das Programm mit markierter Stelle, wo's hängen bleibt.

Ich hoff jemand sieht durch, und kann mir helfen.

--------------------------------------------------------------

#include <mega103.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>

unsigned int adc_data;
// ADC interrupt service routine
#pragma savereg-
interrupt [ADC_INT] void adc_isr(void)
{
#asm
    push r30
    push r31
#endasm
// Read the AD conversion result
adc_data=ADCW;
#asm
    pop  r31
    pop  r30
#endasm
}
#pragma savereg+

// Read the AD conversion result
// with noise canceling
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input;
ADCSR&=0x7f;
ADCSR|=0xc0;
#asm
    in   r30,mcucr
    cbr  r30,__sm_mask

    sbr  r30,__se_bit -> bei diesem befehl bleibts hängen

    out  mcucr,r30 -> dieser Befehl wird schon nicht mehr ausgeführt
    sleep
    cbr  r30,__se_bit
    out  mcucr,r30
#endasm
return adc_data;
}
unsigned int Vmess;
float b;
char s[6];

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTD=0x00;
DDRD=0x00;

// UART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: On
// UART Transmitter: On
// UART Baud rate: 9600
UCR=0x18;
UBRR=0x19;

ACSR=0x80;

#asm("sei")

while (1)
      {

if (PIND.0==0)
  {
  printf ("gedrückt\n\r");
  Vmess=read_adc(0b00000000);   //wert aus ADCL und ADCH an Pin1
auslesen
  printf ("%7d",Vmess);
  Vmess*=5;
  b= Vmess/1023.0;
  printf("%f\n\r",b);
  ftoa(b,3,s);
  puts(s);
  putchar('\n');
  putchar('\r');
  delay_ms(400);
  }
      }
}

--------------------------------------------------------------

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man, ich such schon ne woche nach dem beschissenen fehler
... hab den wald vor lauter bäumen nicht gesehn.

ADCSR=0x8F; vergessen.

initialisierung vom ADC hat gefehlt ... ich könnt mir in den arsch
treten.

tja, menschliches versagen ...

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.