Du hast eine Endlosschleife programmiert... Wann meinst Du wird dasZitat von molleonair
"Loop" nach "Waitms200" wieder verlassen ?
Hallo
ich will den ADC über die register steuern um code im tiny26 zu sparen
wenn ich die config adc und getadc befehle nutze funktioniert es allerdings brauchts viel mehr platz aufm flash
also hab ich folgenden einfachen code geschrieben:
dim Adchoch As Byte
Dim Adcniedrig As Byte
Dim Adcergebniss As Word
Admux = &B10000000 'referenz =2,56V intern
Adcsr = &B11000110 'adc enable , adc starten , Prescaler 64
Do
Set Adcsr.6 'einen ADC Vorgang starten
Do
Loop Until Adcsr.6 = 0 'warten bis adc abgeschlossen ist
Adchoch = Adch 'auslesen des ADCH
Adcniedrig = Adcl 'auslesen des ADCL
Adcergebniss = Adchoch * 256 'aus den beiden wird
Adcergebniss = Adcergebniss + Adcniedrig 'ein ergebniss erechnet
Locate 1 , 1
Lcd Adcergebniss ; " "
Waitms 200
Loop
End
im simulator läuft es auch allerdings aufm chip wird nur ein einziger ADC vorgang gestartet denn die ausgabe bleibt immer gleich
was mach ich falsch
bitte helft mir
Gruß Daniel
Du hast eine Endlosschleife programmiert... Wann meinst Du wird dasZitat von molleonair
"Loop" nach "Waitms200" wieder verlassen ?
MfG
Ruedi
Das Loop gehört zu dem oberen Do, was du unterschlagen hast!
...und End ist einfach nur das Ende des Programms.
Ansonten kann ich aber ni weiterhelfen...ich kenn nicht mal die Sprache *oops*
MK
ich versteh nicht was ihr mir sagen wollt
das programm soll auch ne endlosschleife sein
eine schleife in der endlos der adc kanal 0 abgefragt wird
und das ergebniss aufs display kommt
@ruediw das loop soll den AVR wieder zum obersten do springenlassen und somit erneut adc samplen
oder meint ihr das eine do-loop schleife in einer anderen nicht läuft ?
Gruß Daniel
Hallo molleonair,
schreib mal unten vor dem End noch ein
Loop
hin, dann kommt das Programm auch wieder zu dem oberen 'Do ' und startet einen neuen Wandlervorgang. So wie du das Programm geschrieben hast, hört es nach dem ersten Wandlervorgang bei 'End' auf.
Eigentlich sollte der Compiler aber einen Fehler anzeigen, wenn das zweite 'loop' fehlt.
felack
ich verstehs echt nicht ..
vor dem end steht ein loop
es sind genau zwei do und zwei loop
wo soll denn da ein loop fehlen ???????????
Hallo Mollionair,
Tausch mal die beiden Zeilen:
Adchoch = Adch 'auslesen des ADCH
Adcniedrig = Adcl 'auslesen des ADCL
Das hat folgenden Grund:
Wenn ADCL gelesen wird, wird ADCL und ADCH solange blockiert, bis ADCH gelesen wird. Damit wird verhindert, dass während des Auslesens eine neue Wandlung in die Register eingetragen und das Ergebnis verfälscht wird.
felack
ja ich glaub daran könnte es liegen ..werd es morgen mal gleich testen
Danke Felack war n super Tip
also es läuft
felack lag genau richtig man muß natürlich erst das adcl und dann das adch auslesen
Das steht auch irgendwo im datenblatt aber ich habs vergessen
Also nochmal Danke
Gruß Daniel
Lesezeichen