Programm bleibt hängen

Gast #36233
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);
  }
      }
}

--------------------------------------------------------------
Gast
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

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.