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?
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
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....
>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
> ...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.
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???
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?
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?
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.
> 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:
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.pdfhttp://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! :)