Hallo, da ich ein AVR-Neuling bin bitte ich eure Hilfe. Ich möchte einen langsamen Zähler durch einen Atmel erstellen. Der Zählerstartwert soll nach jedem Zählschritt in einen nichtflüchtigen Speicherbereich (Flash oder EEPROM) geschrieben werden. Beim Einschalten des AVR soll an diesem gespeicherten Wert mit der Zählung begonnen werden. An 2 gewissen Zählerständen sollen je 1 Ausgang gesetzt werden. Das wohl komplizierteste: Der Zählerstartwert soll durch ein von mir geschriebenes Windows-Programm über die serielle Programmierschnittstelle vergegeben werden, wenn die Freigabe durch einen Code (der im AVR gespeichert ist) richtig übertragen wurde. Ich habe mich schon ein wenig informiert über AVR (AVR Studio3.56 und einen 4433 habe ich schon). Hab Ihr tipps für eine Vorgehensweise ? Gruß Dirk
Zuerst mal das AVR-Tutorial auf dieser Seite durcharbeiten. Das sollte schon mal einige Fragen (vor allem Grundlagenfragen) klären. Was auch hilft, ist, sich zuerst mal einen Programmablaufplan zu erstellen. Damit kann man den Programmfluß grafisch darstellen, erste Fehler ausmerzen und optimieren, und nachher ganz einfach damit programmieren. Nicht zu vergessen sind die Datenblätter und App-Notes bei www.atmel.com.
hallo ! meinst du mit "serielle Programmierschnittstelle" den UART ? also sozusagen den COM-Port des AVRs oder meinst du die ISP schnittstelle ? wieviel "impulse" willst du denn zählen (und abspeichern) ? das EEPROM lässt sich nur 10.000 oder 100.000 mal (je nach AVR) beschreiben, dann ist sense. MfG formtapez
Danke schonmal für Ihre Antwort. Da ich Elektroniker bin werde ich mich schon einarbeiten. Aber prinzipiell sollte das Projekt doch möglich sein? Welcher AVR wäre denn passend (Speicher, Flash, EEPROM u.s.w.)? Gruß Dirk
Möglich ist es auf jeden Fall. Würde den ATmega8 benutzen, da die 'normalen' AVR's abgekündigt werden. Der sollte auf jeden Fall genug Speicher haben, und auch von der Geschwindigkeit her ist er top. (Denke mal, dass du nicht mehr als ein paar 100 events pro sekunde zählst?)
Hallo Dirk! Außerdem musst du noch die Geschwindigkeit des EEPROMS beachten. Es dauert nämlich einige ms bis die Information hineingeschrieben wurde. Martin
Hallo vielen Dank nochmals! Geschwindigkeit ist völlig uninteressant!! (nur alle 1..5 minuten ein Zählimpuls) Aber ich denke gerade über das speichern des Zählerstandes nach.( Antwort von formtapez) Wo liegt denn normal das Programm ? Doch im Flash oder? Wo könnte man denn noch den Zählerstand speichern? im internen EEPROM, externen EEPROM oder C-MOS RAM mit Batterie? Gruß Dirk
Ach so wo ist denn der Unterschied zwischen der "serielle Programmierschnittstelle" dem UART und einer ISP Schnittstelle? Sind das nicht beides serielle Programmierschnittstellen? Ich mochte über die serielle Programmierschnittstelle auch eine Komunikation mit einenm Windows Programm herstellen! Gruß Dirk
Um mit dem PC zu kommunizieren, brauchst Du den UART. Zusätzlich noch einen Pegelwandler (MAX232 und 4 Kondensatoren) weil der COM-Port mit +/- 12 V arbeitet, der Atmel mit 5 Volt. Der 4433 ist für Deine Anwendung auf jeden Fall geeignet, völliger Quatsch, einen ATMega zu kaufen, wenn Du schon einen 4433 hast. Den Zählerstand kannst Du im internen EEPROM speichern, allerdings mit dern Einschränkung, daß dies nicht unbegrenzt oft geht. Aber da gibts einen Trick, den ich schon oft angewendet habe: Der Controller wird mit einem dicken Elko gepuffert, so daß er ca. 0,25 Sec. ohne Spannung läuft. Einen Port-Pin habe ich direkt an der Spannungsversorgung (vor dem Elko, Diode nicht vergessen!). Sobald die Spannung ausfällt, wird der aktuelle Zählerwert ins EEPROM geschrieben (0,25 Sekunden sind mehr als ausreichend, der Schereibvorgang dauert nur ein paar ms). Somit wird das EEPROM nur dann beschrieben, wenn die Spannungsvesorgung ausfällt (dürfte wohl nicht so oft der Fall sein).
Danke thkais !! Gute Idee! Damit wird das EEPROM nur bei jedem Stromverlust beschrieben. Jetzt habe ich erstmal genug Info's für weitere Gedanken. Vielen Dank nochmals an alle frohe Pfingsttage, Dirk
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.