Hi,
danke, hatte jetzt nur in dem AVR Tutorial unter Interrupt geschaut.
eine Frage, ich brauche eigentlich nur einen ADC Interrupt und habe
diese
Code gefunden als Vorlage.
1 | #include <avr\io.h>
|
2 | #include <avr\interrupt.h>
|
3 |
|
4 | // Global variables
|
5 | char adc_data;
|
6 |
|
7 | setup_adc(){
|
8 | SREG = SREG | 0x80;
|
9 | ADMUX = (1<<REFS0)|(1<<ADLAR);
|
10 | ADCSRA = ADCSRA | (1<<ADEN)| (1<<ADIE)| (1<<ADPS2)| (1<<ADPS1)| (1<<ADPS0);
|
11 | }
|
12 |
|
13 | void ini_pwm(){
|
14 | TCCR0 = (1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
|
15 | }
|
16 |
|
17 | SIGNAL(SIG_ADC){ //ADC EOC interrupt
|
18 | adc_data = ADCH;
|
19 | ADCSRA = ADCSRA | (1<<ADSC); //re start conversion
|
20 | }
|
21 |
|
22 | // ***********************************************************
|
23 | // Main program
|
24 | // ***********************************************************
|
25 | int main(void) {
|
26 | DDRB = DDRB | (1<<PB3); //set PB3 as output.
|
27 | DDRA = DDRA | (0<<PA0); //set PA0 as Input.
|
28 |
|
29 | setup_adc(); //setup the ADC
|
30 |
|
31 | ini_pwm();
|
32 |
|
33 | ADCSRA = ADCSRA | (1<<ADSC); //start ADC conversion
|
34 |
|
35 | while(1) { // Infinite loop
|
36 | OCR0 = adc_data;
|
37 | }
|
38 | }
|
Würde der so auch auf einem Atmega64 funktionieren.
Quelle ist http://www.ikalogic.com/tut_8051_to_avr.php
In den Datenblätter vom 64 habe ich jetzt keine Codebeispiel
gefunden, um in Erfahrung zu bringen ob
SIGNAL(SIG_ADC), setup_adc() etc. anders formuliert werden
muß.
Falls die Frage, saudoof ist, sorry, so genau genau
weiß nicht wie ich an gewünschte Infos komme. Etwas
viel Neuland.
Viele Grüße
ABSimon