So, nochmal mit besserem Threadtitel.
Das simpelste Programm das ich schreiben konnte (LED leuchten lassen)
läuft nicht. Programm mit AVRStudio in µC laden geht fehlerfrei (mit
ATmega328p und ATtiny13a probiert, jeweils auch mit einem unbenutzten).
Aber die Pins sind einfach stumm (hochohmig). Wenn ich die LED an einen
der Programmierpins stecke flackert sie beim programmieren, aber danach
leuchtet sie nicht, obwohl alle Programmierpins auch Teil von PORTB
sind.
Ich hab nichts an den Fuses rumgepfuscht. Die brandneuen µC die ich
probiert habe, haben sogar noch CKDIV8 gesetzt weil sie nie benutzt
wurden. Alle laufen und liefen immer mit internem Takt von 8 bzw 9.6
MHz.
Kann mir bitte jemand sagen, dass das Programm ok ist?
Wo weitersuchen? Ist mein Steckbrett vielleicht kaputt? Virus im µC?
1
#include<avr/io.h>
2
3
4
intmain(void){
5
6
7
DDRB=0xff;
8
9
PORTB=0xff;
10
11
while(1){
12
13
}
14
15
return0;
16
17
}
Und als Ergänzung: Um zu überprüfen ob der µC überhaupt selbständig
läuft nach der Programmierung, habe ich jetzt mal beim ATmega328p die
Fuse CKOUT gesetzt damit der Prozessortakt am Pin 14 (PB0) ausgegeben
wird. Multimeter zeigt knapp 8 MHz dort an. Die LED leuchtet wenn ich
sie dort einstecke. Grundsätzlich ist der Port also funktionsfähig,
liefert genug Strom und die CPU läuft. Also wieso kann ich
Softwaremässig keinen Port einschalten?
Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das
Programm nicht automatisch gestartet wird? Irgendwelche Bootloader
Optionen die Probleme machen wenn man keinen Bootloader hat?
Sonst schmeiss ich den ganzen Kram in die Tonne :(
Lass die LEDs doch mit ner _delay_ms()-Schleife blinken, das ist dann
zuverlässiger von einem nicht laufenden µC zu unterscheiden.
Ansonsten würde ich mal den Pegel am Reset-Pin messen, und ggf. einen
Pullup einbauen.
PS: welches Programmiergerät?
Bei dem gezeigten Programm sollte an den I/O-tauglichen Pins von Port B
jeweils ein dauerhafter HIGH Spannungspegel zu messen sein.
Mit einer Widerstandsmessung> Aber die Pins sind einfach stumm (hochohmig).
bist du mit den falschen Waffen unterwegs.
Auch ein dynamisches Flackern solltest du nicht erwarten bzw. wäre das
ein Zeichen für eine Fehlfunktion.
Danke für eure Vorschläge. Aber lest bitte meinen ersten Beitrag
komplett durch. Die grundlegenden Sachen habe ich ja schon probiert.
Programmer hab ich diesen hier:
http://shop.myavr.ch/Programmer/mySmartUSB%20MK3.htm?sp=article.sp.php&artID=100058
Reset hab ich schon mit und ohne Pull-up probiert.
Spannungsversorgung ist ok. Ich hab diverse Quellen genommen (vom
Programmer mit 3.3V und 5V, Knopfzelle mit 3V).
Bitte gebt mir keinen neuen C-Code der komplexer ist als meiner. In
meinem Programm ist kein Fehler, oder? (ich weiss es eigentlich aber
weils nicht funktioniert... vielleicht bin ich einfach blind).
Es muss ja nichts blinken. Ich hab keine hohen Ansprüche. Es soll nur
"etwas" an einem Pin feststellbar sein. Ich hab auch schon den Port low
geschaltet und die LED von VCC an Pin angeschlossen. Und ich hab immer
auch die LED umgedreht (nur um sicher zu sein) und auch an diversen Pins
probiert.
Serieller schrieb:> Bei dem gezeigten Programm sollte an den I/O-tauglichen Pins von Port B> jeweils ein dauerhafter HIGH Spannungspegel zu messen sein.
Genau.
>> Mit einer Widerstandsmessung>> Aber die Pins sind einfach stumm (hochohmig).> bist du mit den falschen Waffen unterwegs.
Naja, sagt doch schon was aus. Nachdem ich keine Spannung gemessen habe,
hab ich versucht die Pins auf low zu schalten und LED an VCC - aber sie
"schlucken" auch keinen Strom. Sind also hochohmig wie in
"uninitialisiertem" Zustand.
>> Auch ein dynamisches Flackern solltest du nicht erwarten bzw. wäre das> ein Zeichen für eine Fehlfunktion.
Logisch flackert die Leitung beim Programmieren.
Valentin Buck schrieb:> Sekunde mal:> VORWIEDERSTAND?> Siehe LED...>> Mit freundlichen Grüßen,> Valentin Buck
Ach komm. Wie hilft mir der Hinweis jetzt? Ich wär schon glücklich wenn
ich eine LED durchbrennen könnte.
Aber zu deiner Beruhigung, ich habe ne blaue LED die 3.6V will and der
3.3V Spannung betrieben ohne Vorwiderstand. Zwischendurch auch mal eine
rote LED MIT Vorwiderstand.
Voila
Oben links ist eine rote LED die einfach Betriebsspannung anzeigt.
An den Stecker kommt mein Programmer über ein 6-poliges ISP Kabel. Die
blaue LED ist jetzt nicht drauf, hab sie and diversen Pins probiert und
wie gesagt in allen Varianten.
Tüll schrieb:> Ach komm. Wie hilft mir der Hinweis jetzt? Ich wär schon glücklich wenn> ich eine LED durchbrennen könnte.
Ohne Vorwiederstand sinkt die Spannung am µC drastisch.
Wenn er dadruch nicht kaputt geht, geht er aus.
Hast du den Programmierer im Betrieb da immer dran, und zieht der Reset
auch auf HIGH?
Versuchs mal mit einem 1-10k Wiederstand nach + vom Pin aus.
Außerdem fehlen Abblockkondensatoren...
Hast du wirklich den internen Takt gesetzt?
Mit freundlichen Grüßen,
Valentin Buck
Schau dir mal das Diagramm an, schätze mal ungefähr ab wieviel Strom die
LED bei 5V schluckt und schau nochmal wieviel mA du einem Pin
abverlangen darfst. Stellst sich dann nur noch die Frage wer überlebt es
länger der Pin oder die LED, wenn du verdammt viel Glück hast (oder
extra vorgesorgt hast) bricht aber auch nur deine Versorgungsspannung
zusammen und alles bleibt heil.
Das Programm selber kann man doch im AVR-Studio durchsimulieren bzw. die
Fehlermeldungen auswerten falls es garnicht zum simulieren kommt.
Danke Valentin dass du mir helfen willst, aber du stellst Fragen die ich
schon beantwortet habe.
In der Variante wie abgebildet lass ich den Programmer dran für die
Stromversorgung von 3.3V (hab auch schon alle schwarzen Kabel abgezogen
zum testen). Hab auch schon ohne Programmer nur mit einer 3V Batterie
getestet.
Der Programmer zieht Reset nach LOW beim programmieren. Sonst macht der
da meines Wissens nichts. Spannung am Resetpin ist um die 5V (auch bei
3.3V VCC was mich erstaunt hat). Als ich zusätzlich noch einen Pullup
angeschlossen habe kam sie etwas runter auf einen Wert zwischen 3.3V und
5V.
Ja Takt ist wirklich intern. Lies mal meinen ersten Beitrag.
Abblockkondensatoren, sind die echt essenziell? (kann ja sein, ich bin
Neuling) Dachte um bloss eine LED leuchten zu lassen geht das auch so
(die LED zieht 12mA übrigens bei 3.3V).
Du meinst ich hab jetzt alle meine µC kaputt gemacht wegen fehlendem
Vorwiderstand? Würde mich sehr erstaunen wenn doch nur 12mA fliessen bei
3.3V. Ich meine bei 5V und korrekt dimensioniertem Vorwiderstand würden
20mA fliessen, das wäre ja eine höhere Belastung. Liege ich falsch?
Peter Hartmann schrieb:> Hi!>> Der Reset Widerstand fehlt 10k zu Plus PortC6 (Pin1)>> Hier steht wie er angeschlossen werden muß> http://www.dieelektronikerseite.de/uC%20Ecke/Lecti...>> cya The_ride
Wie geschrieben, den hatte ich auch schon dran, hat nichts geändert.
Aber ich hab früher immer ohne den Pullup gearbeitet. Ist auch nicht
verboten laut ATMEL, es wird nur störungsanfälliger (es ist ein interner
Pullup vorhanden).
Thomas O. schrieb:> Schau dir mal das Diagramm an, schätze mal ungefähr ab wieviel Strom die> LED bei 5V schluckt und schau nochmal wieviel mA du einem Pin> abverlangen darfst. Stellst sich dann nur noch die Frage wer überlebt es> länger der Pin oder die LED, wenn du verdammt viel Glück hast (oder> extra vorgesorgt hast) bricht aber auch nur deine Versorgungsspannung> zusammen und alles bleibt heil.
Hab ich nie gemacht (5V an LED).
>> Das Programm selber kann man doch im AVR-Studio durchsimulieren bzw. die> Fehlermeldungen auswerten falls es garnicht zum simulieren kommt.
Es gibt keine Fehlermeldungen. Die Simulation läuft wie gewünscht.
Um mal etwas zu steuern. Das scheint mir doch der springende Punkt:
aus dem ersten Beitrag:
"Und als Ergänzung: Um zu überprüfen ob der µC überhaupt selbständig
läuft nach der Programmierung, habe ich jetzt mal beim ATmega328p die
Fuse CKOUT gesetzt damit der Prozessortakt am Pin 14 (PB0) ausgegeben
wird. Multimeter zeigt knapp 8 MHz dort an. Die LED leuchtet wenn ich
sie dort einstecke. Grundsätzlich ist der Port also funktionsfähig,
liefert genug Strom und die CPU läuft. Also wieso kann ich
Softwaremässig keinen Port einschalten?
Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das
Programm nicht automatisch gestartet wird? Irgendwelche Bootloader
Optionen die Probleme machen wenn man keinen Bootloader hat?"
>Abblockkondensatoren, sind die echt essenziell?
Ja.
>Gibt es in AVRStudio eine Möglichkeit was zu verpfuschen, so dass das>Programm nicht automatisch gestartet wird?
Ja, man kompiliert das Programm für den falschen Prozessor und/oder
wählt die falsche HEX Datei aus.
Tüll schrieb:> OK, Kondensatoren. Einen möglichst grossen Elko? Oder verschiedene?
100nF
Elkos sind zu langsam.
Ohne Abblockkondensatoren kann das ganze so in Schwingung kommen das
alles mögliche passieren kann, aber ganz selten das was soll.
lss Datei angehängt.
Ich hab jetzt wieder meinen alten 7805 Regler aufgebaut samt zugehörigen
Kondensatoren (100nF), die so früher immer funktioniert haben.
Keine Änderung.
holger schrieb:> Ja, man kompiliert das Programm für den falschen Prozessor und/oder> wählt die falsche HEX Datei aus.
Hätte ich nicht für möglich gehalten weil ja die HEX Datei immer gewählt
wird wenn man ein neues Projekt öffnet (so dachte ich). Aber irgendwie
hab ich oder AVR Studio was verbockt und da stand die falsche HEX Datei
aus einem anderen Projekt drin. Die hab ich immmer und immer wieder in
den µC geschrieben - hat dann natürlich wenig Sinn wenn ich den
Quellcode von meinem neuen Programm ändere...
Danke an alle!
Ich bin in den letzten 24 Stunden 1 Jahr gealtert aber es hat sich doch
gelohnt hier zu fragen.