hallo, versuche gerade mit dem ad-wandler ein analoges signal von einem infrarot distanz sensor einzulesen und per uart an die serielle schnittstelle zu senden, funktioniert jedoch nicht! weis nicht mehr was ich noch tun kann, quelltext ist im anhang, habe einen atmega8 mit integriertem ad wandler und programmiere ihn in c, bitteee sourcecode prüfen! thx schonmal
Irgendwie fehlt der Prototyp für "init".
> funktioniert jedoch nicht!
Wie wäre es mal mit einer vernünftigen Fehlerbeschreibung?
also das programm soll den analogen eingangswert in einen digitalen umwandeln und per uart senden, jedoch sendet er mir den wert des sensor nicht ans terminal
Hi, ohne direkte Fehlerangabe sind meine Vermutungen nur aus der Glaskugel geholt. Deine globalen Variablen werden vom Compiler weg optimiert. Setze mal diese auf volatile. Globaler Interrupt enable fehlt? sei();
Sehr viel besser ist die Beschreibung auch nicht. Kommen überhaupt keine Ausgaben? Kommen falsche Ausgaben? Eine Vermutung ist, daß Du eine Endlosschleife in read_adc hast.
was für eine headerdatei benötige ich für sei(); ?
es kommt nur die ausgabe das die init funktion erfolgreich ausgeführt wurde, danach kommt garnichts mehr, er reagiert also nicht mehr,
hm ich habe nun den watchdog aktiviert und das timeout auf 1 sekunde eingestellt, und nun resettet er mir den atmega ständig also muss etwas mit der funktion readadc() nicht stimmen, denn wenn ich die funktion auskommentiere resettet der wd nicht!
Sag ich doch. Du hast eine Endlosschleife in Deinem readadc() => while(1){...}
Hallo Christian #define ADC_VREF_TYPE 0x00 //External VREF //#define ADC_VREF_TYPE 0x40 //AVCC //#define ADC_VREF_TYPE 0xc0 //Interne 2,56V Spannung unsigned int read_adc(unsigned char adcinput) { ADMUX=adcinput|ADC_VREF_TYPE; // Starte AD Konversion ADCSRA|=1<<ADSC; // Warte bis AD Konversion fertig ist while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); // Lösche ADC Interrupt Flag return ADCW; }
danke für die funktion, wenn ich jedoch die funktion aufrufe hängt sich das programm wieder auf! hm...
juhuuu^^ es geht, hatte vergessen die initialisierung des ad-wandlers zu starten. vielen dank an alle für die hilfe
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.