Forum: Mikrocontroller und Digitale Elektronik LED blinkt (ATA6613-EK bzw. ATmega168)


von Der Basti (Gast)


Lesenswert?

Hallo zusammen!

Wollte mich für ein Uniprojekt mit dem Tutorial wieder ins 
C-programieren einarbeiten. Habe ein ATA6613-EK zur Hand. Das ist ein 
Evalboard für LIN Bussysteme. Darauf ist ein ATmega168 und der LIN 
Transceiver ATA6624.

Wollte jetzt zum Anfang wie gesagt das Tutorial durch arbeiten, da das 
letzte programieren schon länger her ist und stolper gleich über die 
LEDs.

Also ich habe an Port B zwei LEDs angeschlossen (mit Vorwiderstand an 
VCC und an Pin 0 und 1. Programm ist wie im Tutorial. Übertragen hat 
funktioniert und wenn ich denn Controller an Spannung anlege, fangen die 
LEDs an zu blinken.

Statt der erwarteten 5V an den Pins, messe ich auch nur ca. 3V und wie 
gesagt die LEDs blinken.

Kennt jemand diese Phänomen?

Gruß der Basti

von Krapao (Gast)


Lesenswert?

Blinken kann bedeuten, dass du eine Blink-LED eingebaut hast. Nicht 
lachen, die gibt es.

Oder dass

* der AVR laufend resettet z.B. wegen einem Watchdog oder einem 
Brownout

* das Programm die LED wieder ausschaltet und wieder anschaltet. 
Blinkprogramme gibt es auch im Tutorial!

Deine Spannungsmessung an den Pins kann ich nicht nachvollziehen. Bei 
der Schaltung mit active-low angeschlossenen LEDs:

        R     LED
Vcc o---###--->|---o PB0

Vcc o---###--->|---o PB1

Sollte bei leuchtender LED an PB0 bzw. PB1 die Spannung nahe 0V sein und 
nicht "erwartet 5V und gemessen 3V".

von Der Basti (Gast)


Lesenswert?

Hallo Krapao,

danke für deine Antwort. Ich weiß das es keine Blink-LEDs sind. Ein 
Brownout würde ich ausschließen. Betreibe die ganze Sache an einem 
Netzteil mit 1,2A und 12V DC Output. Achtung nicht erschrecken, bei dem 
Board ist das von der Versorgungsspannung erlaubt! Die 5V nehme ich vom 
VCC Pin des Controllers. Du hast natürlich recht, es sind nahe 0V (ca. 
0,1V). Hatte mich im Pin geirrt und gegen VCC gemessen.

Das Programm schaltet die LEDs nicht aus:

#include <avr/io.h>

int main(void)
{
while(1)
{
  DDRB = 0xFF;
  PORTB= 0x03;
}
}

Ob mir der Watchdog dazwischen funkt muss ich mal prüfen.

Gruß der Basti

von Daniel H. (Gast)


Lesenswert?

Hallo,

noch so eine Idee, ist der RESET-Pin korrekt beschaltet?

von Daniel H. (Gast)


Lesenswert?

Ah, vergiss es, grad nochmal gelesen und gesehen, dass du ein Eval-Board 
nutzt, da sollte das natürlich der Fall sein.

von Der Basti (Gast)


Lesenswert?

Hmm, zwischen Watchdog output und Reset ist ein Jumper, ziehe ich den ab 
(verbindung auf) hören die LEDs auf zu blicken. Setze ich den jumper 
wieder rein, fangen sie wieder an mit blinken.

von Daniel H. (Gast)


Lesenswert?

Was passiert wenn du den Jumper setzt und in deinem Hauptprogramm PD3 in 
jedem Schleifendurchlauf umschalten lässt?

von Der Basti (Gast)


Lesenswert?

Dann leuchten die LEDs und blinken nicht mehr!?

von Daniel H. (Gast)


Lesenswert?

Ist das da erwünschte Verhalten? Falls ja, soweit ich das aus dem 
Datenblatt erkenne hat das Board einen externen Watchdog, dieser wird 
über PD3 getriggert, bleibt dieses Triggern aus dann führt er einen 
Reset durch, was das Blinken erklären würde.

von Daniel H. (Gast)


Lesenswert?


von Krapao (Gast)


Lesenswert?

> Hmm, zwischen Watchdog output und Reset ist ein Jumper, ziehe ich den ab
> (verbindung auf) hören die LEDs auf zu blicken. Setze ich den jumper
> wieder rein, fangen sie wieder an mit blinken.

Dann sollte man schauen, wie der Watchdog regelmäßig beruhigt werden 
kann oder man lässt den Jumper offen. Die erste Variante kann bedeuten, 
dass der µC oder der LIN Bus regelmäßig ein Signal liefern muss. Dafür 
sind u.U. Änderungen im Programmcode nötig. Wenn du auf deinem Board mit 
rel. unverändertem Tutorialcode arbeiten willst, lass einfach den Jumper 
offen.

von Der Basti (Gast)


Lesenswert?

Also danke erstmal für eure Mühe!!!

Der Watchdog gehört nicht zum Controller sondern zum LIN transceiver...
Ich habe mir immer den Kopf über den internen zerbrochen und dachte, 
dass es doch nicht sein kann das der resetet obwohl ich nicht mit ihm 
arbeite.

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.