Hallo, wer kann mich denn bei meinem kleinen Projekt mit dem ATtiny untersützen? Angehängt habe ich schon mal den Schaltplan. Kann mir jemand bitte helfen, ob das soweit funktioniert? Folgendes soll der ATtiny machen: Schalter geschlossen LED 1 an, LED 2 aus Schallter geöffnet LED 1 aus, LED 1 an. Der Summer soll bei Signalwechsel am Schalter ca. 3sec. an sein. Hoffe ich konnte mich verständlich ausdrücken. Bin um jede Hilfe dankbar. Gruß Günter
Ich kenne jetzt die Pin-Belegung des ATtiny nicht auswendig, aber der R2 kommt mir etwas merkwürdig vor. Die Funktion hängt stark vom Programm ab, sollte aber hinzukriegen ein.
Wenn du etwas an µC Pins anschliesst, musst du dich immer fragen: Wieviel Strom zieht denn das Anzuschliessende und wieviel Strom kann mein µC Ausgang liefern? Strom wird immer gezogen! Der Verbraucher bestimmt, wieviel Strom in mA er haben will und die Quelle muss liefern können. Kann die Quelle nicht liefern, dann ist sie überlastet und geht früher oder später kaputt. Also: wieviel Strom wird der Summer verbrauchen? Kann der Tiny den Strom liefern? Zu den LEDs: was versprichst du dir davon, dass du die Leds 'unten' über R2 wieder an den Pin2 zurück führst? Was willst du mit dem Pin2 programmtechnisch machen, dass dieser Anschluss notwendig wäre?
Hallo, erst mal danke soweit für die Hilfe. Das mit dem LEDs habe ich verstanden und die Schaltung geändert. Nun ist aber PIN2 offen. Kann ich PIN2 offen lassen? Das mit dem Summer habe ich auch verstanden, sollte der zuviel ziehen, werde ich über einen Transistor anschließen. Meine Frage ist, würde die Schaltung zu funktionieren? Danke schon mal. Gruß Günter
warum nur ein widerstand für 2 LEds? irgendwann willst du sie mal gleichtzeitig anschalten und dann gehts nur schnell abwechselnd. sei nicht so geizig wegen einem R der summer braucht wahrscheinlich auch noch ein R oder sogar einen Transistor, wenn er nicht ein digitaler mit integrierter Elektronik ist. für den Resetpin nimmt man normalerweise auch einen Widerstand (10k-20k). wernn du deinen Tiny nämlich so programmierst, hast du einen kurzschluss, sobald der Programmer die Resetleine zieht.
Günter Warth schrieb: > Hallo, erst mal danke soweit für die Hilfe. Das mit dem LEDs habe ich > verstanden und die Schaltung geändert. Nun ist aber PIN2 offen. Ja und. Macht ja nichts. > Kann ich PIN2 offen lassen? Sicher. > > Das mit dem Summer habe ich auch verstanden, sollte der zuviel ziehen, > werde ich über einen Transistor anschließen. Das solltest du aber jetzt schon wissen. Dort wo du den Summer kaufst, steht normlerweise dabei, wieviel Strom er haben will. Alles über 20mA ist zuviel. > Meine Frage ist, würde die Schaltung zu funktionieren? Na, ja. An der Schaltung ist ja nichts dran. Die Funktionalität kommt ja erst durch das Programm. Bis auf das Fragezeichen mit dem Summer - die LED sind jedenfalls so angeschlossen, dass sie prinzipiell leuchten können. Eine Frage stellt sich aber doch noch: Wie programmierst du eigentlich deinen Tiny? In der Schaltung kannst du ihn nicht programmieren. Dazu fehlen die Anschlüsse.
Dankeschön. Tja genau da hast du mich erwischt. Die Anschlüsse fehlen, ich weiß - sind in der Schaltung nur nicht eingezeichnet. Den Programmer habe ich schon, den tiny kann ich auch schon auslesen (ist natürlich leer). Mein gedanke war erst mal, die Schaltung aufzubauen, so dass sie grundsätzlich funktioniert kann. Jetzt kommt die nächste Hürde, das Programmieren. Über eine kleine Hilfe würde ich mich freuen. Ich verwende den mySmartUSB 2 AVR Programmer- Gruß Günter
Ein Kollege von mir fand das Tutorial toll: http://www.avr-asm-tutorial.net/avr_de/seminar2/seminar2.html LG Christof
Hallo, na jetzt bin ich schon ein ganz großes Stück weitergekommen. Leider hänge ich gerade an dem Timer. Wer kann mir denn bitte helfen. Die Schaltung funktioniert soweit, LED1 und LED2 schalten nach Flankensteuerung, LED3 soll nun bei jedem Flankenwechsel für eine bestimmte Zeit X leuchten. Hier mein Programm: ; ********************************************************* ; * Schalter Ein-LED1-EIN, EIN-LED2-AUS * ; ********************************************************* ; .INCLUDE "tn13def.inc" ; ; Schaltbild: ; ATMEL ATtiny13 ; __ ___ ; _ 1/ |_| |8 ;+5 Volt O--|___|----|Res Vcc|----O + 5 Volt ; | | ; |PB3 PB2|--|___|--|<|--O + 5 Volt ; / 3| |6 _ LED3 ; 0 Volt O--O O--|PB4 PB1|--|___|--|<|--O + 5 Volt ; 4| | 330 LED1 ; 0 Volt O----|Gnd PB0|--|___|--|<|--O + 5 Volt ; |__________|5 LED2 ; ; Register Definitionen ; .DEF rmp = R16 ; Multipurpose register .DEF rimp = R17 ; Interrupt multipurpose register ; ; Constants ; ; ; Reset- und Interrupt-Vektoren ; .CSEG ; Assembliere in den Programm-Flash-Speicher .ORG $0000 ; beginne mit Adresse 0 ; ; Sprungvektoren fuer Reset und Interrupts ; rjmp main ; Reset vector reti ; Int0 interrupt vector rjmp intpcint ; PCINT0 vector reti ; TC0 overflow vector reti ; Eeprom ready vector reti ; Analog comparator int vector reti ; TC0 CompA vector reti ; TC0 CompB vector reti ; WDT vector reti ; ADC conversion complete vector ; ; PCINT0 Service Routine ; wird jedes Mal ausgefuehrt, wenn sich der Pegel am ; Pin 3 (=PB4) aendert ; intpcint: sbic PINB,4 ; Ueberspringe Befehl wenn PB4 Null rjmp intpcint1 ; springe weil PB4 = Eins cbi PORTB,1 ; schalte LED1 an sbi PORTB,0 ; schalte LED2 aus reti ; Kehre vom Interrupt zurueck intpcint1: sbi PORTB,1 ; schalte LED1 aus cbi PORTB,0 ; schalte LED2 ein reti ; Kehre vom Interrupt zurueck ; ; Main program start ; main: ; ; Stapelzeiger setzen fuer Rueckkehr-Adressen vom Interrupt ; ldi rmp,LOW(RAMEND) ; Stapelzeiger auf Ende SRAM out SPL,rmp ; ; Angeschlossene Hardware initiieren ; sbi DDRB,1 ; LED-Ausgang als Ausgang definieren sbi DDRB,0 ; LED-Ausgang als Ausgang definieren sbi PORTB,1 ; LED ausschalten sbi PORTB,0 ; LED ausschalten cbi DDRB,4 ; Taster-Eingang als Eingang definieren sbi PORTB,4 ; Internen Pull-Up-Widerstand einschalten ; ; Pin-Change-Interrupt fuer Taste aktivieren ; ldi rmp,0b00010000 ; Maskieren der aktiven Eingaenge out PCMSK,rmp ldi rmp,0b00100000 ; PCINT0-Interrupts ermoeglichen out GIMSK,rmp ; ; Interrupts generell einschalten ; sei ; Setze Interrupt Flagge ; ; Schlafmodus der CPU einstellen ; ldi rmp,0b00100000 ; Schlafen ermoeglichen, Modus Idle out MCUCR,rmp ; ; Loop mit Interrupt ; loop: sleep ; Prozessor schlafen legen nop ; Tue nichts nach dem Aufwachen rjmp loop ; Prozessor wieder schlafen legen ; ; Ende Quellcode ;
Entschuldigt, hier das aktuelle Programm: ; ********************************************************* ; * Schalter Ein-LED1-EIN, EIN-LED2-AUS * ; ********************************************************* ; .INCLUDE "tn13def.inc" ; ; Schaltbild: ; ATMEL ATtiny13 ; __ ___ ; _ 1/ |_| |8 ;+5 Volt O--|___|----|Res Vcc|----O + 5 Volt ; | | ; |PB3 PB2|--|___|--|<|--O + 5 Volt ; / 3| |6 _ LED3 ; 0 Volt O--O O--|PB4 PB1|--|___|--|<|--O + 5 Volt ; 4| | 330 LED1 ; 0 Volt O----|Gnd PB0|--|___|--|<|--O + 5 Volt ; |__________|5 LED2 ; ; Register Definitionen ; .DEF rmp = R16 ; Multipurpose register .DEF rimp = R17 ; Interrupt multipurpose register ; ; Constants ; ; ; Reset- und Interrupt-Vektoren ; .CSEG ; Assembliere in den Programm-Flash-Speicher .ORG $0000 ; beginne mit Adresse 0 ; ; Sprungvektoren fuer Reset und Interrupts ; rjmp main ; Reset vector reti ; Int0 interrupt vector rjmp intpcint ; PCINT0 vector reti ; TC0 overflow vector reti ; Eeprom ready vector reti ; Analog comparator int vector reti ; TC0 CompA vector reti ; TC0 CompB vector reti ; WDT vector reti ; ADC conversion complete vector ; ; PCINT0 Service Routine ; wird jedes Mal ausgefuehrt, wenn sich der Pegel am ; Pin 3 (=PB4) aendert ; intpcint: sbic PINB,4 ; Ueberspringe Befehl wenn PB4 Null rjmp intpcint1 ; springe weil PB4 = Eins cbi PORTB,1 ; schalte LED1 an sbi PORTB,0 ; schalte LED2 aus reti ; Kehre vom Interrupt zurueck intpcint1: sbi PORTB,1 ; schalte LED1 aus cbi PORTB,0 ; schalte LED2 ein reti ; Kehre vom Interrupt zurueck ; ; Main program start ; main: ; ; Stapelzeiger setzen fuer Rueckkehr-Adressen vom Interrupt ; ldi rmp,LOW(RAMEND) ; Stapelzeiger auf Ende SRAM out SPL,rmp ; ; Angeschlossene Hardware initiieren ; sbi DDRB,1 ; LED-Ausgang als Ausgang definieren sbi DDRB,0 ; LED-Ausgang als Ausgang definieren sbi DDRB,2 ; LED3-Ausgang als Ausgang defienieren sbi PORTB,1 ; LED ausschalten sbi PORTB,0 ; LED ausschalten sbi PORTB,2 ; LED ausschalten cbi DDRB,4 ; Schalter-Eingang als Eingang definieren sbi PORTB,4 ; Internen Pull-Up-Widerstand einschalten ; ; Pin-Change-Interrupt fuer Taste aktivieren ; ldi rmp,0b00010000 ; Maskieren der aktiven Eingaenge out PCMSK,rmp ldi rmp,0b00100000 ; PCINT0-Interrupts ermoeglichen out GIMSK,rmp ; ; Interrupts generell einschalten ; sei ; Setze Interrupt Flagge ; ; Schlafmodus der CPU einstellen ; ldi rmp,0b00100000 ; Schlafen ermoeglichen, Modus Idle out MCUCR,rmp ; ; Loop mit Interrupt ; loop: sleep ; Prozessor schlafen legen nop ; Tue nichts nach dem Aufwachen rjmp loop ; Prozessor wieder schlafen legen ; ; Ende Quellcode ;
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.