DeltaEx
14.10.2005, 22:55
Was mach ich falsch? Ich gebe ADC und PWM auf dem LCD aus.
Wenn ich am Poti drehe ändert sich der ADC wert aber der PWM bleibt auf 214.
Und die LED am Port PD5 leuchtet auch nicht auf :-(
Die LED ist mit 1k auf GND geschaltet.
/************************************************** ***
Project :
Version :
Date : 14.10.2005
Author : DeltaEx
Company : Privat
Comments:
Chip type : AT90S8535
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
************************************************** ***/
#include <90s8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.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;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
char lcd_buffer[10];
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=1 State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Set
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=11000011;
TCCR1B=00000101;
TCNT1H=0x00;
TCNT1L=0x01;
OCR1AH=0x01;
OCR1AL=0x33;
OCR1BH=0x02;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
ADCSR=0x86;
// LCD module initialization
lcd_init(16);
lcd_putsf("Hallo Welt!");
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"ADC=%4u",read_adc(0));
lcd_puts(lcd_buffer);
OCR1AL = lcd_buffer;
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"PWM=%4u",OCR1AL);
lcd_puts(lcd_buffer);
delay_ms(100);
};
}
Wenn ich am Poti drehe ändert sich der ADC wert aber der PWM bleibt auf 214.
Und die LED am Port PD5 leuchtet auch nicht auf :-(
Die LED ist mit 1k auf GND geschaltet.
/************************************************** ***
Project :
Version :
Date : 14.10.2005
Author : DeltaEx
Company : Privat
Comments:
Chip type : AT90S8535
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
************************************************** ***/
#include <90s8535.h>
#include <stdio.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <delay.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;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
char lcd_buffer[10];
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=1 State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Set
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=11000011;
TCCR1B=00000101;
TCNT1H=0x00;
TCNT1L=0x01;
OCR1AH=0x01;
OCR1AL=0x33;
OCR1BH=0x02;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
ADCSR=0x86;
// LCD module initialization
lcd_init(16);
lcd_putsf("Hallo Welt!");
while (1)
{
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"ADC=%4u",read_adc(0));
lcd_puts(lcd_buffer);
OCR1AL = lcd_buffer;
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"PWM=%4u",OCR1AL);
lcd_puts(lcd_buffer);
delay_ms(100);
};
}