mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tutorials für Atmega64-16AU ?


Autor: ABSimon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe ein Testplatine mit einem ATMEGA64-16AU,
programmiert kann diese mit dem STK 500.

Gibt es irgendwo im Internet gute Tutorials,
mit Beispielscripten (z.B. bzgl. Interrupts) etc.
für diesen Chip. (oder notfalls auch ein Buch?)

Das Detailwissen für diesen Chip fehlt mir.
Ansonsten komme ich mit C ganz gut zurecht
Außerhalb von Mikrocontrollern :-)

Über Hilfe würde ich mich sehr freuen.

Vielen Dank & Viele Grüße
ABSimon

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst Dir das AVR-Tutorial hier auf der Seite angucken. Viele der 
dort gemachten Aussagen treffen auch auf den ATMega64 zu. Den Rest kann 
man sich aus den Datenblättern zusammenreimen, die man ohnehin braucht.

Autor: ABSimon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hatte ich schon gefunden, nur leider ist das keine C Programmierung.

Trotzdem Danke & Viele Grüße

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Tutorial ist sehr viel in C:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Grüße,
Michael

Autor: ABSimon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke, hatte jetzt nur in dem AVR Tutorial unter Interrupt geschaut.
eine Frage, ich brauche eigentlich nur einen ADC Interrupt und habe 
diese
Code gefunden als Vorlage.
#include <avr\io.h>
#include <avr\interrupt.h>

// Global variables
char adc_data;

setup_adc(){
 SREG = SREG | 0x80;
 ADMUX = (1<<REFS0)|(1<<ADLAR);
 ADCSRA = ADCSRA | (1<<ADEN)| (1<<ADIE)| (1<<ADPS2)| (1<<ADPS1)|           (1<<ADPS0);
}

void ini_pwm(){
 TCCR0 = (1<<WGM00)|(1<<WGM01)|(1<<COM01)|(1<<CS00);
}

SIGNAL(SIG_ADC){ //ADC EOC interrupt
 adc_data = ADCH;
 ADCSRA = ADCSRA | (1<<ADSC); //re start conversion
}

// ***********************************************************
// Main program
// ***********************************************************
int main(void) {
 DDRB = DDRB | (1<<PB3); //set PB3 as output.
 DDRA = DDRA | (0<<PA0); //set PA0 as Input.

 setup_adc(); //setup the ADC

 ini_pwm();

 ADCSRA = ADCSRA | (1<<ADSC); //start ADC conversion

 while(1) { // Infinite loop
  OCR0 = adc_data;
 }
}

Würde der so auch auf einem Atmega64 funktionieren.
Quelle ist http://www.ikalogic.com/tut_8051_to_avr.php

In den Datenblätter vom 64 habe ich jetzt keine Codebeispiel
gefunden, um in Erfahrung zu bringen ob
SIGNAL(SIG_ADC), setup_adc() etc. anders formuliert werden
muß.

Falls die Frage, saudoof ist, sorry, so genau genau
weiß nicht wie ich an gewünschte Infos komme. Etwas
viel Neuland.

Viele Grüße
ABSimon

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.