Forum: Mikrocontroller und Digitale Elektronik bin am verzweifeln meine LED blinkt nicht


von A.erwin W. (der_neugierige)


Lesenswert?

Guten morgen

Ich bin am verzweifeln, ich habe einen AT8 in einem Evaluationsboard von 
pollin, einen AT8 hab ich schon zerfused, nun hat´s mit dem fusen 
wenigstens geklappt.
Allerdings versuche ich schon die ganze zeit eine LED zum blinken zu 
bringen.
Sie leuchtet nur

das hier ist mein zusammengeschnipselter code

$regfile = "m8def.dat"
$crystal = 1600000
Ddrd = &B01100000
Portd = &B01100000
Config Portd = Output
Do

Portd.6 = 0
Waitms 1000
Portd.6 = 1

Loop
End

Bitte nicht steinigen, ich weiß das es total simpel ist, aber ich werd 
gleich cholerisch ;-)
Vielen dank im vorraus.
Der neugierige

von AVRFan (Gast)


Lesenswert?

>Portd.6 = 0
>Waitms 1000
>Portd.6 = 1

Du musst nicht nur nach dem Einschalten der LED, sondern auch nach dem 
Ausschalten warten:

Do

Portd.6 = 0
Waitms 1000
Portd.6 = 1
Waitms 1000   <-- !

Loop

von A.erwin W. (der_neugierige)


Lesenswert?

Hallo AVRFan

Das habe ich gerade mal probiert, aber sie leutet trotzdem nur :-(

von Holger K. (krulli) Benutzerseite


Lesenswert?

Für das Programm war es unnötig an den Fuses rumzuspielen. Das hätte 
auch mit dem internen Takt von 1 MHz gut funktioniert.

Wie wäre es hiermit? Wechselblinker der beiden LEDs

Do
  Toggle Portd.5
  Waitms 500
  Toggle Portd.6
Loop

von AVRFan (Gast)


Lesenswert?

$crystal = 1600000

Hast Du hier nicht ne Null vergessen?

von Fred (Gast)


Lesenswert?

Hi,

handelt es sich hier um den Standardfehler, dass die LED einfach zu 
schnell blinkt, Stichwort PWM? Dann wäre sie nur gedimmt.
Gruß

Fred

von Karl H. (kbuchegg)


Lesenswert?

Fred wrote:
> Hi,
>
> handelt es sich hier um den Standardfehler, dass die LED einfach zu
> schnell blinkt, Stichwort PWM? Dann wäre sie nur gedimmt.
> Gruß

Bei den Zeiten eher unwahrscheinlich.
Wenn er aber tatsächlich eine 0 bei $crystal vergessen
hat, dann blinkt die LED nicht alle 1 Sekunde sondern alle
10 Sekunden. Wenn er nicht geduldig genug war, dann
übersieht man das schon mal. 10 Sekunden können laaaang sein.

von M. V. (-_-)


Lesenswert?

>Wenn er aber tatsächlich eine 0 bei $crystal vergessen
>hat, dann blinkt die LED nicht alle 1 Sekunde sondern alle
>10 Sekunden. Wenn er nicht geduldig genug war, dann
>übersieht man das schon mal. 10 Sekunden können laaaang sein.

Andersrum wird 'n Schuh draus. Wenn er eine Null zu viel hätte, würde 
sie alle 10 s blinken.
Wenn er ne Null zu wenig hat, blinkt sie alle 100 ms.

Ich versteh zwar nicht viel von Bascom, aber wieso konfigurierst du den 
Port mehrmals als Ausgang?

von bcc (Gast)


Lesenswert?

probiers mal hiermit:

$regfile = "m8def.dat"
$crystal = 1600000
Config Portd.6 = Output

Do
Portd.6 = 0
Waitms 1000
Portd.6 = 1
waitms 1000
Loop
End


oder mit

$regfile = "m8def.dat"
$crystal = 1600000
Config Portd.6 = Output

Do
toggle Portd.6
Waitms 1000
Loop
End

von Christoph S. (mixer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

bei Pollin gibt es da schon ein fertiges Testprogramm für das Board zum 
runterladen, ist auch in bascom. Probier mal das aus, und wenn das 
funktioniert kannst du es ja umbauen.

MFG Mixer

von Paul Baumann (Gast)


Lesenswert?

$regfile = "m8def.dat"
$crystal = 16000000
'entweder Port D so komplett als Ausgang konfiguriren
Ddrd = &B11111111
'oder so
Config Portd = Output
Do

Portd.6 = 0
Waitms 1000
Portd.6 = 1
Waitms 1000

Loop
End

So müßte es mit 0,5Hz blinken WENN der Mega8 tatsächlich mit 16Mhz
getaktet ist.Sonst probiere mal, den Wert $Crystal auf 1Mhz zu setzen,
nicht daß Dir die Fuse-Einstellungen mißlungen sind und er nicht wie
erwartet getaktet wird.

MfG Paul

von Marc M. (bytewood) Benutzerseite


Lesenswert?

Lass mal die Compilerdirektiven $.. weg und stelle unter 
"Options/Compiler/chip" den Controller und unter 
"Optins/Compiler/Communications" die Taktrequenz ein.

Hat denn die Programmübertragung zum M8 hin?

von Holger K. (krulli) Benutzerseite


Lesenswert?

Marc Meise wrote:
> Lass mal die Compilerdirektiven $.. weg und stelle unter
Was soll das bringen?

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
Noch kein Account? Hier anmelden.