Was mache ich falsch, habe Datenblatt schon hundertmal durchgelesen, Tutorial aber funktioniert nicht. Mit Atmega 16 und STK500: #include <AVR/io.h> void wait (void); int main (void) { unsigned int x,y,z; ADMUX=0x40; ADCSRA=0xA5; DDRB=0xFF; SFIOR=0x00; for(;;) { ADCSRA |= (1<<ADSC); PORTB=0xFF; if (bit_is_set(ADCSRA,ADIF)) { x=ADCH; y=ADCL; PORTB=0xFD; z=x+y; if(z==0) { PORTB=0x03; wait(); } if (z==512) { PORTB=0xF4; wait(); } } } return 0; } void wait (void) { unsigned int j,i; for (i=0;i<10;i++) { for (j=0;j<50000;j++); } ADCSRA |=(1<<ADIF); PORTB=0xFF; }
> Was mache ich falsch, ...? > #include <AVR/io.h> <avr/io.h> bitte, C ist case sensitive, und du verbesserst die Portabilität deines Projektes, wenn du den Gepflogenheiten folgst. ADCSRA |= (1<<ADSC); ... if (bit_is_set(ADCSRA,ADIF)) Du willst while(bit_is_clear(...)) warten stattdessen.
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.