PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit ADC beim Atmega8a/au



Franz112
09.06.2013, 12:08
Ich habe es schon mal mit einem Atmega8 versucht und da hat das funktioniert und jetzt mache ich es mit einem atmega8a/au und es geht nicht mehr...

$regfile = "m8def.dat"
$crystal = 1000000

Config Portd.3 = Output
Config Portd.1 = Output
Config Portd.2 = Output

Dim Wert As Word

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Portd.3 = 0

Do

Wert = Getadc(0)

If Wert < 300 Then
Portd.1 = 1
Portd.2 = 0
End If
If Wert > 300 Then
Portd.2 = 1
Portd.1 = 0
End If

Loop
End

ist da vielleicht etwas falsch?

Lg,
Franz112

HeXPloreR
09.06.2013, 12:13
...
$regfile = "m8adef.dat" 'Hier fehlt vermutlich ein "a"
...


Hallo,

möglicherweie wird es garnicht neu compiliert. Da der Chip nicht als Mega8 sondern als mega8a erkannt wird uns somit nicht korrekt im Code angegeben ist.
Sollte eigentlich ne Fehlermeldung geben.

Franz112
09.06.2013, 12:16
Ja also ich nehme den MK2 Programmer von myavr und da gibts ja so eine Programmiersoftware wo man die .hex dateien einfach reinzieht und "brennt" und da wird er chip nur als Atmega8 erkannt und nicht als Atmega8A...das /Au hat ja nur mit der Baugröße zu tun oder? aber wenn der Programmer das nur als Atmega8 erkennt und nicht als Atmega8a dann muss das ja stimmtn ich könnte ja ma in Bascom $regfile = "m8adef.dat" schreiben

Lg,
Franz112

HeXPloreR
09.06.2013, 12:21
ja schreib das mal, denn die Fehlermeldung kommt nicht vom myavr - denn das weiß nicht ob es die aktuelle Version oder die Version davor brennt - weil möglicherweise keine aktuellere Version von Bascom erzeugt wurde. Das /AU ist eher uninteressant.

Prüfen mal ob die Datei mit "ohne a" überhaupt erzeugt wird. Sonnst zieht er eben immer wieder die alte datei rein.

Beim AVR Progtool kannst Du es auf ATmega8 eingestellt lassen - da kommt kein roter Bildschirm, beim ATmega8a ja ;)

Franz112
09.06.2013, 12:23
Problem behoben :D ich hab meine Fehler gefunden :)

$regfile = "m8def.dat"
$crystal = 1000000

Config Portd.3 = Output
Config Portd.1 = Output
Config Portd.2 = Output

Dim Wert As Integer

Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Portd.3 = 0

Do

Wert = Getadc(1)

If Wert < 300 Then
Portd.1 = 1
Portd.2 = 0
End If
If Wert > 300 Then
Portd.2 = 1
Portd.1 = 0
End If

Loop
End

Es war gleich mal ein anderer ADC port den ich gestern abend angelötet hatte ..hatte ich vergessen..:D.. und man muss Wert als integer configurieren..jetzt gehts

HeXPloreR
09.06.2013, 12:34
äh?? :-k...aber okay.

...man muss "Wert" nicht als Integer konfigurieren. Denn der ADC hat maximal 10bit, das bedeutet ein höherer analoger 10bit Wert als 1023 kann da nicht raus kommen. Es sind im normal Fall nur positive Werte von 0 - 1023 zu erwarten. Und deshalb reicht ein "Word" aus.

Franz112
09.06.2013, 14:55
Ah ok also jetzt funktioniert alles so wie es soll...

Vielen Dank,

Franz112