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);
}
}
}
--------------------------------------------------------------
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 ...
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.