Hi Leute, also ich bin im moment echt am verzweifeln. Und zwar habe ich hier einen ATTIny 13 der an einem Eingang ein High Wert erkennen soll um dann eine LED einzuschalten und ein bestimmten Wert per Ausgang an einen ATMEGA 32 auszugeben. Das ist aber nicht so wichtig. Der Tiny Liegt in der Grundbeschalten vor: -Abblockkondensator zwischen GND und VCC -3,3V VCC -intern erzeugte 4,8 MHZ -LED wie um Tutorial beschrieben verschaltet Zum Testen habe ich einfaches Programm geschrieben, welches erstmal nur die LED einschaltet wenn wenn ein High Wert anliegt. Code: #include <avr/io.h> #include <avr/interrupt.h> #include <stdint.h> int main (void) { DDRB |= (1<<PB2); PORTB |= (1<<PB2); while (1) { if ( PINB & (1<<PINB3) ) { PORTB &= ~(1<<PB2); } else { PORTB |= (1<<PB2); } } return 0; } Das Problem ist nun, dass es einfach nicht klappen will(das Flashen Funktiniert ohne Probleme). Schalte ich VCC ein so ist die LED aus wie es sein soll. Lege ich nun aber an PB3 VCC an als Logisches Hight so passiert entweder nichts oder die LED geht.Das soll sie ja auch.Aber setze ich den Port nun auf GND sollte sie ja sofort ausgehen aber das Problem ist,dass dies erst ein paar sekunden Später passiert.Ausser dem flackert die LED wenn ich an die Pinleiste berühre die zu den Ports für die Programmierung führt. Habe die Schaltung schon 3 mal neu aufgebaut, überprüft(Spannungen gemessen, Lötstellen etc.) und es auch schon mit Interrupts versucht was auch nicht funktioniert da komischerweise Am Betreffenden INT0 Port immer VCC anliegt obwohl DDRB und PORT für diesen Pin auf 0 stehen. Der Controller ist auch in ordnung ,da ich 5 Stück auf den Unterschiedlichen Platinen getestet habe. Vielleicht habt ihr ja eine Idee PS: Hab och eine kleine Frag. Und zwar habe ich hier noch einen Tiny welchen ich ausversehen auf 128 KHZ getacktet habe und in nun nicht mehr per Pony Prog ansprechen kann.Eventuell hat dazu auch jemand eine idee was aber nebensache ist. Gruss Florian
kann es sein, dass dein isp steckt, während du testest? mit was legst du den port auf high? massen zur "high"-spannung und zur V_cc des tiny sind verbunden?
2 Tipps: Wozu die beiden Includes? >#include <avr/interrupt.h> >#include <stdint.h> Wie hast du die LED angeschlossen? Hoffentlich über nen Transistor oder Widerstand? Keine Ahnung wie viel die Beine des Tiny aushalten, aber bei nem atmega8 sinds ja schon nur 20mA...nicht das er immer resettet wird oder so, wenn die LED angeht. Hast du mal die Optimierung beim Kompilieren ausgeschaltet? Vielleicht hilft das :D Hatte ich auch schon, dass er mir irgendwas wegoptimiert hat was aber eigentlich so sein sollte.
Nein ISP Steckt nicht. Ja die Massen sind verbunden. Habe es mit einem Abgriff von VCC zum pin versucht und mit einem zweiten Labornetzteil. Die includes hatte ich vergessen raus zunehnem :-) Die LEDs sind per 1k Widerstand angeschlossen wie im AVR TUT. An der Optimierung sollte es nicht liegen die is aus ;-D
Passen denn auch die Fuse-Bits? Nicht das du auf Externer RC statt interner gestellt hast oder so. Funktioniert ein anderes Programm denn auf diesem Chip?
@Fabian S.: > Wie hast du die LED angeschlossen? Hoffentlich über nen Transistor oder > Widerstand? entweder, oder? egal, es geht problemlos direkt mit widerstand. > Keine Ahnung wie viel die Beine des Tiny aushalten, aber bei > nem atmega8 sinds ja schon nur 20mA...nicht das er immer resettet wird eine led verkraftet auch nicht viel mehr, falls überhaupt. außerdem sagt das avr-tutorial 1k. wie viel strom steht im datenblatt. außerdem resettet der controller nicht, er geht einfach mit der spannung in die knie. im datenblatt ist die augangsstufe zu finden. > oder so, wenn die LED angeht. > Hast du mal die Optimierung beim Kompilieren ausgeschaltet? Vielleicht > hilft das :D soll die while(1) wegfallen? also bitte, bei so einem progrämmchen... @Florian Idb (fbeek): wie schaut denn deine platine aus? bist du dir sicher, dass du an B3 bist? dass die led flackert, wenn du an die isp leisten fasst, ist praktisch normal, weil B3 ja zur ISP gehört. legt den verdacht nahe, dass du mit deiner "high"-spannung nicht an B3 gehst.
Moin Leute, so hab mich gerade wieder drangesetzt. Also die Fuses sind ok. Was auch komisch ist das die LED ausegeht sobald ich GND egal an welcher stelle berühre. Hab mein Voltmeter an GND geklemmt und sobal ich + am Volmeter berühre flackert die LED auch . Nur zur Info PB3 gehört nicht mehr zum ISP :-)
Sorry hatte noch vergessen zu erwähnen das die LED nun auch leutetwenn kein HIGH anliegt. Allerding schwächer als normal.
Florian Idb wrote: > Also die Fuses sind ok. Kann ja jeder sagen. Kost aber nix, es zu prüfen. Also einfach ne Schleife mit LED togglen und _delay_ms(1000); drin und dann die Zeit prüfen. > Was auch komisch ist das die LED ausegeht sobald ich GND egal an welcher > stelle berühre. Das ist zu 99,9% ein offener Eingang. Vielleicht das Beinchen abgeknickt? Peter
Michael H* wrote: > @Florian Idb (fbeek): > legt den verdacht nahe, dass du mit deiner "high"-spannung nicht an B3 > gehst.
_delay_ms(1000) kannst Du vergessen. Dem geht nicht. Vergiss mal Deine Schleife. Probier mal: int main (void) { DDRB |= (1<<PB2); PORTB &= ~(1<<PB2); return 0; } bzw. int main (void) { DDRB |= (1<<PB2); PORTB |= (1<<PB2); return 0; }
Hannes wrote:
> _delay_ms(1000) kannst Du vergessen. Dem geht nicht.
Das muß dann schon aber ein GCC ganz tief aus der Mottenkiste sein.
Ab WINAVR 20071221 und neuer geht das.
Peter
@Michael: >außerdem resettet der controller >nicht, er geht einfach mit der spannung in die knie. Joa und wenn der Brown-Out an ist geht er aus... Evtl steht der Brown out auch auf 4,5 oder was das war und er geht erst garnicht richtig an, weil er ja nur 3,3 hat? Mhh ne, war das Brown-Out? Dises BODEN Flag meine ich :D
Probier mal den internen PullUp Widerstand für deinen Pin zu aktivieren.
1 | DDRB &= ~(1<<PB3); //PB3 als Input |
2 | PORTB |= (1<<PB3); //internal Pullup an PINB3 aktivieren |
Fabian S. wrote: > @Michael: >>außerdem resettet der controller >>nicht, er geht einfach mit der spannung in die knie. > Joa und wenn der Brown-Out an ist geht er aus... nein... er geht mit der spannung am ausgang in die knie. die pins haben eine strombegrenzung. bis du da ordentlich strom durch den controller bekommst, müsstest du schon mehrere ports parallel schalten...
Für mich klingt das nach Parasitärer Versorgung durch Portpins. Irgendwo schlecht gebraten. Wie sieht den die Hardware aus Beschreibung oder Photo. mfg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.