Hallo! Ich heiße Matthias, bin 40 jahre alt, Informationselektroniker jedoch, da ich in der Produktion arbeite, bereits seit 22 Jahren, mehr oder weniger, raus aus dem Fach. Nun hat mich der Modellflug (Ich schreibe bewusst nicht Modellbau :-) ) gepackt und ich hätte da ein kleines Projekt. Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an folgendes: Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem sein. Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken... oder dauerleuchten. Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen? Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC Programmierung ist kein Problem für mich...) Was meint ihr? Ist das realisierbar? Besitzt der Tiny 13 überhaupt einen A/D Wandler? Ist Assembler die richtige Programmiersprache? Kann ich Werte aufzeichnen und später auslesen?
Ja
>Besitzt der Tiny 13 überhaupt einen A/D Wandler?
Datenblatt
Ja je nach geschmack
Ja
Jo, der Tiny13 hat AD Wandler. Ich find Assembler für die Kleinen optimal, das werden die sturen C-Verfechter natürlich gaaaaanz anders sehen. Werte aufzeichnen geht auch, nur eben nicht Allzuviele. So dicke hats der Tiny ja nicht mit Ressourcen. bye Frank
>das werden die sturen C-Verfechter natürlich gaaaaanz anders sehen.
Nein, ich fahre aber lieber mit dem Lift als außen am Haus
hochzukraxlen.
WOW, seit ihr schnell. Danke schonmal für die Antworten. Gibt es ein Datenblatt vom Tiny auf deutsch? Habe schon gesucht aber keines gefunden. Wenn ich das englische lesen und verstehen will, sitze ich vermutlich in 10 Jahren noch da. Mein (Fach) Englisch ist nicht das beste, um es milde auszudrücken....
Ein Datenblatt auf deutsch kenne ich jetzt nicht. Aber das Englisch von Atmel ist so einfach daß sogar ich das lesen kann.
>Mein (Fach) Englisch ist nicht das beste, um es milde auszudrücken....
Versuch´s mit einem Übersetzerprogramm.
Tiny13 und ASM ist ein unschlagbares Paar. Wenn Du Daten aufzeichnen
möchtest, bietet sich vielleicht ein DataFlash oder ein serielles EEPROM
an. Um genügend Pins dann auch noch für eine Datenausgabe am PC zu
haben, solltest Du vielleicht über ein Upgrade auf den Mega88
nachdenken. Der ist im TQFP32 Gehäuse nur unwesentlich größer, als ein
Tiny13 DIP. Der Mega88 ist sehr günstig bei CDS-electronics zu beziehen.
ja in deutsch wirds da nix geben .. aber so groß ist es doch nicht und aus erfahrung sind die datasheets von atmel relativ gut zu lesen im vgl. zu so vielen anderen herstellern. lies einfach mal los - vielleicht hilft dir ja eins von denen hier : http://www.heise.de/software/download/o0g0s0l2k29
Hallo, vielleicht kannst Du hiermit schon was anfangen. http://www.hanneslux.de/avr/mobau/uiwa/uiwa.html mfg bana
> ...bereits seit 22 Jahren, mehr oder weniger, raus aus dem Fach... > Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an > folgendes: Die gab es vor 20 Jahren schon? ;) > Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem > sein. Der Tiny13 hat 6 mehr oder wenige freie I/Os, das passt schon... > Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem > gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken... > oder dauerleuchten. Jap, ein ADC ist auch drin. > Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen? > Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC > Programmierung ist kein Problem für mich...) Naja, bei 64 Byte EEPROM und 64 Byte SRAM eher begrenzt. Aber man kann eventuell ein externes EEPROM dranhängen. (3x LED, 1x ADC, bleiben 2 zur Ansteuerung des EEPROMs _ODER_ Kommunikation mit dem PC) > Was meint ihr? Ist das realisierbar? Jo, wenn du mit dem internen Speicher klar kommst oder auf die PC-Kommunikation verzichtest. > Besitzt der Tiny 13 überhaupt einen A/D Wandler? Jap, einen 4-Kanaligen sogar. > Ist Assembler die richtige Programmiersprache? Bei 1kb Flash und 64 Byte SRAM ist Assembler auch die einzig sinnvolle. > Kann ich Werte aufzeichnen und später auslesen? Ja, mit den oben genannten Einschränkungen
Man kann doch Pins durchaus zu mehreren Zwecken verwenden. Im Zweifelsfall via Jumper umsteckbar. Also ist auch externes EEPROM + PC-Com möglich. Man muss dem uC nur irgendwie mitteilen, welchen Modus er fahren soll. Zum Thema Assembler: den Tiny13 kann man auch bestens mit C volltexten. Nur beim Tiny15 würd ich das nicht wirklich probieren wollen. Gruß Fabian
> Man kann doch Pins durchaus zu mehreren Zwecken verwenden. Ist klar. > Im Zweifelsfall via Jumper umsteckbar. Also ist auch externes EEPROM + > PC-Com möglich. Man muss dem uC nur irgendwie mitteilen, welchen Modus > er fahren soll. Naja, für RS322 wär dann wieder ein Quarz ratsam. Und dann fehlen schon wieder ganze 2 Pins... > Zum Thema Assembler: den Tiny13 kann man auch bestens mit C volltexten. > Nur beim Tiny15 würd ich das nicht wirklich probieren wollen. Also internes+externes EEPROM ansteuern, Werte speichern und laden und eine Software-UART implementieren in C und das alles in 1kB Flash questchen? Ich bin gespannt. ;)
Nochmal vielen Dank für die vielen Antworten :-) Also ich habe mir jetzt überlegt, erstmal mit dem Blinklicht klein anzufangen. Wenn dies funktioniert wird die Schaltung/Programm mit der Spannungsüberwachung ergänzt. Danach kann ich ja immer noch auf diesen Mega8 umsteigen. Zum testen erstmal die bedrahtete Version, danach dann die SMD... dabei stellt sich die Frage: Wo komm ich eine geätzte Platine her..hmmmm. Da ist dann wohl auch selber machen angesagt. Ach übrigens: Die Tiny13, die ich hier rumliegen habe, sind erst 2 Monate alt :-) Vor 22 Jahren hießen die anders: Commodore VC20 ;-) Hatte ich, voller Stolz, auch einen!
> Ach übrigens: Die Tiny13, die ich hier rumliegen habe, sind erst 2 > Monate alt :-) Vor 22 Jahren hießen die anders: Commodore VC20 ;-) Hatte > ich, voller Stolz, auch einen! Tja, bei mir hieß das Teil damals Robotron KC87 ;) Je nach möglichem Lötaufwand würde ich aber dann doch zu größerem tendieren. Der Atmega32 oder Atmega644 ist mit das größte in punkto Flash und Ram möglich ist. Kostet bei Angelika <5€ und bietet etliche Reserven für spätere Basteleien. Wenn es beim 8-Pinner für das Blinklicht bleiben soll schau mal nach ATtiny45 oder ATtiny85, die sind dann auch bequem in C programmierbar.
Denk dran dass bei nem neuen Tiny13 die /8-Fuse gesetzt ist. Also nicht wundern wenns alles ziemlich langsam ist. bye Frank
Ich finde die kleinen Dinger richtig nett, alles so schön übersichtlichlich und man kommt nicht auf die Idee, überall noch eine eierlegende Wollmilchsau dranzisilieren zu wollen... Im AVR-Studio kann man sich auch den Maschinencode ansehen und mit etwas Überlegung einen deutlich kompakteeren C-Code hinbekommen.
Warum wird eigentlich immer empfohlen, mit Kanonen auf Spatzen zu schießen??? ~
> Warum wird eigentlich immer empfohlen, mit Kanonen auf Spatzen zu > schießen??? Weil dein 'C'-Code von deinem Nachfolger deutlich schneller verstanden wird ;)
> Weil dein 'C'-Code von deinem Nachfolger deutlich schneller verstanden > wird ;) Muss ich das jetzt verstehen?? Wer versteht C-Code schneller? Wer ist mit Nachfolger gemeint? ~
Im Grunde geht es in der Industrie darum, Code zu fabrizieren der auch nach Jahren noch verstanden wird oder von jemand anders weiter entwickelt wird. Und da ist C wesentlich einfacher als Assembler. Wenn man mal nach 3 Jahren versucht ein eigenes Assembler-Programm weiter zu entwickeln merkt man es schon deutlich wie langwierig die einarbeitung ist. Ist sicher bei typischen Assembler-Projekten noch handhabbar, aber dein Chef wird das sicher anders sehen. Auch wenn ein 1kB Controller 10x besser in Assembler entwickelt wird, musst du dann Überzeugungsarbeit leisten um Assembler entwickeln zu 'dürfen'. PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!) immer besser in Assembler programmiert werden.
> PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!) > immer besser in Assembler programmiert werden. Na dann sind wir uns doch einig. Auf die Spezies "Chef" brauche ich betreffs Programmiersprache und -Stil gottseidank keine Rücksicht nehmen, auf Portablität der Programme auch nicht. Ich schreibe keine AVR-Programme, die hinterher auf '8051ern, PICs, MSP430 oder dem Rest der Welt laufen müssen. Und für den Einstieg in die AVR-Mikrocontrollertechnik halte ich einen kleinen AVR wie Tiny13 oder Tiny2313 (natürlich in ASM) aufgrund seiner begrenzten (und damit übersichtlichen) Ressorcen für ideal, man verzettelt sich nicht so schnell mit den vielen Möglichkeiten der Features der Megas und lernt auch die Architektur besser und schneller kennen. Und etwas ASM-Wissen schadet auch einem zukünftigen C-Programmierer nicht. ~
> > PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!) > > immer besser in Assembler programmiert werden. > > Na dann sind wir uns doch einig. Da klammer ich aber alles was mit Lern-/Ausbildungsprojekten zusammenhängt mal aus, da is Assembler (wieder fast ;) ) immer besser als C, da man den Controller und die Architektur vernünftig kennen lernt. Und ja, dafür ist im Job keine Zeit. Wenn man nicht mindestens einen 8-, einen 16- und einen 32 Bit Controller und mindestens noch einen mit Harvard-Architektur im Hobby oder Ausbildungsbereich kennen gelernt hat, dann wird man es nie.
Hallo! Ich habe mal eine Frage. Ich benutze nun das AVR Studio um in Assembler zu programmieren. Das klappt bisher eigentlich ganz gut. Als Debug platform benutze ich den "AVR Simulator 2" und als Device den "ATtiny13" Nun möchte ich den internen EEprom Speicher des (simulierten) Tiny13 auslesen. Auch das klappt ganz gut. Nun weiß ich aber nicht ob die Werte überhaupt stimmen, die ich auslesen. Gibt es im AVR Studio nicht so etwas wie eine Hex-Editor Funktion, mit den man Inhalt des EEproms betrachten bzw editieren kann?
Bin noch Einsteiger, deswegen die Frage: > Denk dran dass bei nem neuen Tiny13 die /8-Fuse gesetzt ist. Also nicht > wundern wenns alles ziemlich langsam ist. Was meinst du damit?
Bestimmt kommt gleich der Ahaaa-Effekt, aber ich kann dieses "Speicherdump-Fenster" nicht finden...
Silver69 wrote: > Hallo! > > > Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an > folgendes: > > Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem > sein. > > Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem > gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken... > oder dauerleuchten. > > Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen? > Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC > Programmierung ist kein Problem für mich...) > > Besitzt der Tiny 13 überhaupt einen A/D Wandler? > Ist Assembler die richtige Programmiersprache? > Kann ich Werte aufzeichnen und später auslesen? In Deutsch gibt es vom Franzis Verlag ein "Lernpaket Mikrocontroller" Ist sehr zu empfehlen. Da ist ein Bausatz dabei und ein Buch. Man kann sofort loslegen. google man danach!
Hallo! Ich hätte noch 1000 Fragen, 999 stelle ich zurück aber eine Frage ich jetzt: Ich habe als Programmiergerät ein selber gebautes, und zwar für den Parallelport, von hier: http://www.mikes-elektronikseite.de/. Also Software benutze ich AVR-Studio und habe mir hierfür das "AVR ISP" von Kanda runtergeladen. Gibt es auch die Möglichkeit, mit den oben genannten Gerätschaften, ONLINE zu debuggen? Also dass der Code im Tiny13 ausgeführt wird, nicht im Simulator von AVR STudio? Wenn ja, wie?
Nein. Erst ab Tiny25 gibt es DebugWire via Reset-Pin, und dafür ist mindestens der AVR Dragon notwendig.
Tinys debuggt man mit ´ner LED. Oder mit der Luxusvariante: LCD an separatem Controller, angebunden an den Tiny über einen einzigen Pin und gemeinsame Masse. Über ein eigenes Protokoll sendet det Tiny seine Daten an das intelligente LCD.
Tiny13 unterstützt auch Debug-Wire, allerdings braucht man dazu einen AVR-Dragon. Ich habe und benutze zwar den Dragon, debugge aber auch meist mittels LED. Ist halt Gewohnheit von Tiny12 und Tiny15. ~
So, nach reichlich Überlegung habe ich mich jetzt so entschieden: ATMega88 Quarz (für Serielle Schnittstellensteuerung und auch wegen der zeitlichen Aufzeichnung der Messdaten) Schnittstellenbaustein MAX232 Serielles EEprom ST 24C256 Programmiersprache bleibt Assembler (macht Spaß bisher). Das einzige was mir jetzt noch nicht in klaren ist. Wie beschreibt und ließt man das Externe serielle EEprom? Gibt es hierfür Codebeispiele?
>Schnittstellenbaustein MAX232 Nimm den Max202CSE, braucht nur 5x 100nF und ist platzmäßig kleiner. >Das einzige was mir jetzt noch nicht in klaren ist. Wie beschreibt und >ließt man das Externe serielle EEprom? I2C, siehe Datenblatt Mega88 und ST24C256. Alternativ kannst Du auch ein DataFlash 45DBxxxD nehmen, paßt mehr ´rein, ist unkompliziert anzusteuern (SPI), ist preiswert und als SO8 ehältlich.
Hallo! Habe immer noch keine Ahnung wie ich das externe EEprom ansprechen soll. Also ich habe mir noch einmal die Datenblätter des Mega88 und ST24C256 angeschaut. Im Datenblatt ST24C256 steht beschrieben wie man schreibt und liest. Aber eben nur von der Theorie her. Bitweise. Wenn ich über RS232 mit dem PC kommuniziere, schreibe ich ja auch im Assembler jedes Byte, und nicht Bit für Bit. Ich kann auch dazu im Internet gar nichts finden. Weder einen Schaltplan, noch einen Assembler Code. Für Hilfe hierzu wäre ich dankbar....
@ Silver69 (Gast) >Habe immer noch keine Ahnung wie ich das externe EEprom ansprechen soll. Das steht im Datenblatt, Surprise, Surprise. >Im Datenblatt ST24C256 steht beschrieben wie man schreibt und liest. >Aber eben nur von der Theorie her.# Das funtkioniert auch praktisch so. > Bitweise. Nö, Byteweise.
SO, ich hab im Datenblatt vielleicht etwas gefunden dass mir eventuell helfen könnte. Ab Seite 211. Gleich mal testen, die ersten 2 Zeilen abgetippt:
1 | .include "m88def.inc" |
2 | |
3 | ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN) |
4 | out TWCR, r16 ;Send START condition |
Build and Run ==> Error: Operand 1 out of range: 0xbc Surprise, Surprise! It dosnt work! What did I falsch? Still need help...
> Projekt mit Tiny 13 > .include "m88def.inc" Ähm...jap, der Thread ist gut gewählt ;) > SO, ich hab im Datenblatt vielleicht etwas gefunden dass mir eventuell > helfen könnte. Ab Seite 211. Dort steht bei mir die Beschreibung des TWI-Moduls. > Surprise, Surprise! It dosnt work! > What did I falsch? Still need help... Abgesehen von der Art wie du deine Fragen formulierst gar nix. Anscheinend hat Atmel hier einen Fehler im Datenblatt. Im Include wo die I/O-Register definiert ist, steht folgendes:
1 | ; ***** I/O REGISTER DEFINITIONS ***************************************** |
2 | |
3 | ; NOTE: |
4 | |
5 | ; Definitions marked "MEMORY MAPPED"are extended I/O ports |
6 | |
7 | ; and cannot be used with IN/OUT instructions |
Versuch es mal mit einem normalen RAM-Schreibzugriff.
Moment mal! Als ich den Thread gestartet habe war es noch ein Tiny13 Projekt. Mir wurde dann aber schnell zum Mega88 geraten. Atmel hat anscheinend ein Fehler im Datenblatt und du sagst, das wäre meine Schuld, weil ich meine Fragen hier falsch formuliere? Tut mir leid, das verstehe ich nicht! Ich versuche mal meine Frage umzuformulieren: Ich versuche, per Assembler, mit einen Mega88 ein externes EEprom (ST24C256) zu beschreiben. Da ich aber ein Einsteiger bin, weiß ich überhaupt nicht wie dies funktioniert. Ich habe schon 50 Stunden Gegoogeld und Datenblätter gelesen. Bisher ohne Erfolg, wie auch, wenn ich nicht einmal sicher bin nach was ich suchen soll. Einen Schaltplan glaube ich gefunden zu haben (siehe Anhang), sicher ob der Schaltplan aber funktioniert bin ich nicht. Sicher hat doch so etwas schon einmal jemand gemacht, oder? Stündlich vermutlich. Könnte mir bitte jemand ein Assembler Beispiel posten, der mir zeigt wie sowas funktioniert. Oder eben einen Lik zu einem Turitorial?
> Als ich den Thread gestartet habe war es noch ein Tiny13 Projekt. Mir > wurde dann aber schnell zum Mega88 geraten. Ja, ich erinner mich. > Atmel hat anscheinend ein Fehler im Datenblatt und du sagst, das wäre > meine Schuld, weil ich meine Fragen hier falsch formuliere? Tut mir > leid, das verstehe ich nicht! Sorry, falls das so rüber kam. Ich meinte lediglich das der Threadname irreführend ist, wenn man nur Muse hat die letzten paar Postings zu lesen. In der Codesammlung gibt es dass hier: Beitrag "Hardware TWI,I²C, I²C EEPROM" Ausserdem gibt es bei Atmel noch eine AppNote (AVR310) zum TWI: http://atmel.com/dyn/resources/prod_documents/doc2561.pdf http://atmel.com/dyn/resources/prod_documents/AVR310.zip Hab mir jetzt allerdings den Code nicht angeschaut, sollte aber an dein EEPROM anpassbar sein. Auf jedenfall sieht man wie I2C initialisiert und verwendet wird. Viel Erfolg! :)
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.