Forum: Mikrocontroller und Digitale Elektronik Atmel Ausgang zerschossen?


von Donny (Gast)


Lesenswert?

Hallo

Gibt es eine zuverlässige Möglichkeit, einen bestimmten Ausgang eines 
AVR auf einen Defekt zu kontrollieren, ohne eigens ein Programm dafür 
schreiben zu müssen?
Ich habe es mit dem Fluke Diodentest und Widerstandprüfer versucht, kein 
Durchgang.

von Olaf (Gast)


Lesenswert?

Diodentest gegen VCC
Diodentest gegen GND
sollte eigentlich ein Ergebnis zutage führen. Insbesondere, wenn du mal 
mit anderen Pins vergleichst.

von Olaf (Gast)


Lesenswert?

Wenn man einen Ausgang killt (Überspannung), sollten die internen 
Schutzdioden mit Sicherheit hops gegangen sein. Das kann man meist 
messen.

Mit Kurzschluss (gegen VCC oder GND) habe ich beim AVR noch keinen 
Ausgang kaputt bekommen... da scheint der Innenwiderstand groß genug zu 
sein.

von michael_ (Gast)


Lesenswert?

Frage ist, was könnte passiert sein?

von Andre (Gast)


Lesenswert?

Per JTAG drauf und am Pin wackeln. Genau dafür wurde das doch eigentlich 
erfunden.

von Manfred (Gast)


Lesenswert?

Donny schrieb:
> ohne eigens ein Programm dafür schreiben zu müssen?

Kindergarten, Schuhe zubinden kannst Du schon?

Da schreibt man sich ein Progrämmchen, was die Ausgänge wackeln lässt in 
der Art Lauflicht und gut - das geht schneller als hier im Forum zu 
kaspern.

von Donny (Gast)


Lesenswert?

ich habe mit AVR32 noch kaum Erfahrung, darum wollte ich es vermeiden, 
ein Programm zu schreiben. Hab mich aber nun doch damit 
auseinandergesetzt und habe bislang folgendes (der Pin um den es sich 
handelt ist PB01):


#include <avr32/io.h>

int main(void)
{
  int i ;
  AVR32_GPIO.port[1].gper = 1 <<1;
  AVR32_GPIO.port[1].oder = 1 <<1;

  while (1)
  {
    AVR32_GPIO.port[1].ovrs = 1 <<1;
    for (i=0;i<100000;i++);
  }
}



Hab es noch nicht geflasht, wollte zuerst eure Meinung dazu...

von Jim M. (turboj)


Lesenswert?

Andre schrieb:
> Per JTAG drauf und am Pin wackeln. Genau dafür wurde das doch eigentlich
> erfunden.

Blöd nur das die AVR eben kein Boundary Scan können IIRC.
Wie übrigens die Mehrzahl der "üblichen" Mikrocontroller.

von Stefan F. (Gast)


Lesenswert?

Donny schrieb:
> for (i=0;i<100000;i++);

Eventuell entfernt der Optimizer die ganze Zeile, weil sie "nichts" 
bewirkt. Du kannst den Optimizer mit der Compileroption -O0 
deaktivieren, oder in der Schleife einen Nop Befehl ausführen:

for (i=0;i<100000;i++) { __NOP(); }

Der bewirkt zwar auch nichts, ist aber als volatile gekennzeichnet, was 
dem Optimizer verbietet, ihn weg zu optimieren.

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.