www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny2313 Programmieren/welche Programmiersprache


Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich würde gerne für das Jahresprojekt in unserer Schule einen
ATtiny2313 Programmieren
jetzt weiß ich aber nicht welche Programmiersprache die Firmware hat,
die ich verändern muss und mit welchen Programm ich sie verändere

Hier ist die Firmware:
/* Bluetooth Controlled Car
Accpets commands through UART, via GP-GC021 Bluetooth Module
Control of head lights, brake lights, one drive motor and one
steering servo are implemented.
Clock frequency is 4MHz
*/

#define HDLED PORTB.B7
#define BRKLED PORTB.B6
#define M1p PORTB.B5
#define M1m PORTB.B4
#define SERVO PORTB.B3

unsigned short uart_rd;
char pos;

// Posistion Servo Rotor
void position(){
     char i;
     SERVO = 1;
     // create ON-time delay in 10ths of a ms, delay in for-loop, hence less than 100ms
     for (i=0; i<=pos; i++) Delay_us(85);
     SERVO = 0;
     Delay_ms(12);
}

// Write outputs
void action(){
// simple error check
   if ((uart_rd & 0b00000011)>0){        // faulty byte received, since last two bits aren't used
      // clear outputs, center servo
      PORTB = 0;
      UART1_Write(0b00000011);           // send error, ie faulty bits
      pos = 14;                          // compensate for off-center rotor placement, 1.5ms should be standard
   }else{
      // write outputs, place servo
      UART1_Write(uart_rd);              // send response
      if ((uart_rd & 0b00001000)>0){
           pos = 9;
      }else if ((uart_rd & 0b00000100)>0){
           pos = 18;
      }else{
           pos = 14;                      // compensate for off-center rotor placement
      }
      PORTB = uart_rd & 0xF0;
   }
}

// Read UART and call action
void main() {
     UART1_Init(9600);                   // Initialize UART module at 9600 bps
     Delay_ms(100);                      // Wait for UART module to stabilize
     DDRB = 0b11111000;                  // PORTB as output, save PB0, PB1 and PB2 which aren't used
     PORTB = 0;                          // Initialize portb

 while (1)
 {
       if (UART1_Data_Ready())           // If data is received,
       {
          uart_rd = UART1_Read();        // read the received data
       }
       action();                         // write outputs
       position();                       // posistion servo
 }
}

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist c und du kansnt avr studio + winavr benutzen

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex B. schrieb:
> ich würde gerne für das Jahresprojekt in unserer Schule einen
> ATtiny2313 Programmieren
> jetzt weiß ich aber nicht welche Programmiersprache die Firmware hat,
> die ich verändern muss und mit welchen Programm ich sie verändere

Hoffentlich hast du dafür auch ein ganzes Jahr Zeit. Denn da wirst du 
dir schon noch ein paar Grundlagen erarbeiten müssen.

Oliver

Autor: Clown (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber nur nicht abschrecken lassen. Wie Du siehst, mangelt es in diesem 
Forum nicht an Hilfsbereitschaft und Du kannst gerne weitere Fragen 
stellen.

Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man das auch mit MicroC von Mikroelektronika machen?
oder ist der das AVR Studio + Winavr besser geeignet?#
was ist eure meinung?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex B. schrieb:
> Kann man das auch mit MicroC von Mikroelektronika machen?
> oder ist der das AVR Studio + Winavr besser geeignet?#

Das Originalprojekt wurde nicht mit dem WinAvr gemacht.
Möglich das das mit besagtem MicroC gemacht wurde


Aber im Grunde spielt es kaum eine Rolle.
Das Urprojekt ist .... schwach programmiert. Das auf die paar WinAvr 
Unterschiede anzupassen ist eine Sache auf ein paar Minuten. Ich kann 
nur in deinem Interesse hoffen, dass die UART Funktionen besser sind.

> was ist eure meinung?
Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.

Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Karl heinz Buchegger schrieb im Beitrag #1958498:
> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.

hmm habe schon etwas Vorwissen im Programmieren da ich an einer 
Facoberschule für Informaionstechniker bin.
Das Projekt geht ja über ein Jahr.
In diesem Jahr wird uns nebenbei das Basiswissen
zur µC-Programmierung beigebracht.
Das Projekt ist dafür da, dass wir uns eine neue Programmiersprache 
selbstständig aneignen und diese auf ein Projekt anwenden sollen.
Natürlich hilft uns unserer Lehrer, wenn wir gar nicht mehr klar kommen 
aber ich wollte erst mal versuchen ob ich es irgendwie selber hinbekomme 
:>
bzw mit der Hilfe aus diesem Forum.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex B. schrieb:
>>Karl heinz Buchegger schrieb im Beitrag #1958498:
>> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
>> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.
>
> hmm habe schon etwas Vorwissen im Programmieren da ich an einer
> Facoberschule für Informaionstechniker bin.

Dann solltest du aber besser die Programmiersprache in der du 
programmieren willst schon mal wenigstens erkennen, wenn du ein darin 
geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz..

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen 
und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr 
schnell dinge die falsch sind oder ungünstig.

Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Dann solltest du aber besser die Programmiersprache in der du
> programmieren willst schon mal wenigstens erkennen, wenn du ein darin
> geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz.

habe noch nie mit C programmiert :\

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Alex B. schrieb:
>>>Karl heinz Buchegger schrieb im Beitrag #1958498:
>>> Bei deinem Vorwissen solltest du dir ein anderes Projekt suchen.
>>> Und ich meine das keineswegs ironisch oder sonst irgendwie abwertend.
>>
>> hmm habe schon etwas Vorwissen im Programmieren da ich an einer
>> Facoberschule für Informaionstechniker bin.
>
> Dann solltest du aber besser die Programmiersprache in der du
> programmieren willst schon mal wenigstens erkennen, wenn du ein darin
> geschriebenes Programm siehst. Ansonsten sehe ich nämlich schwarz.

 Das bedeutet nämlich, dass du in C bei Adam und Eva anfangen musst. Und 
dann ist 1 Jahr plötzlich gar nicht mehr soviel Zeit.

Denn den Unsinn den dein Vorprogrammierer angestellt hat, musst du ja 
auch noch ausbügeln. Und da sollte man dann schon ein wenig firm in der 
Sprache sein, in der man arbeitet. Die Sprache darf einem dann nicht 
mehr in die Quere kommen, wenn es darum geht falsche Ansätze/Algorithmen 
zu bereinigen

Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen
> und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr
> schnell dinge die falsch sind oder ungünstig.

das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
Da wir nur noch 3 Wochen Zeit haben das größte Problem unseres Projektes
gelöst zu haben

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex B. schrieb:
> Peter schrieb:
>> normaleweise sollte man beim Lernen einer neuen Sprache bei 0 anfangen
>> und nicht ein vorhanden projekt umschreiben. Denn sonst lernt man sehr
>> schnell dinge die falsch sind oder ungünstig.
>
> das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
> Da wir nur noch 3 Wochen Zeit

?
Vorhin wars noch 1 Jahr

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex B. schrieb:
> das würde sehr warscheinlich zu viel Zeit in Anspruch nehmen.
> Da wir nur noch 3 Wochen Zeit haben das größte Problem unseres Projektes
> gelöst zu haben

dann bist du hier aber falsch
> da ich an einer Facoberschule für Informaionstechniker bin

etwas vorhanden umschreiben ohne zu wissen was man macht, hat viel mehr 
mit trial and error als mit lernen zu tun.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt ohne Scheiss und ohne irgendwelche Hintergedanken.

Alex, das ist ein Himmelfahrtskommando.
Das wär selbst für mich ein Himelfahrtskommando (wenn ich noch nicht C 
könnte) und ich hab schon in mehr Programmiersprachen industriell 
programmiert als du wahrscheinlich in deiner ganzen schulischen Laufbahn 
noch lernen wirst.
In 3 Wochen ist das nicht zu machen. Selbst wenn du gute C-Kentnisse 
hättest und nur noch den µC spezifischen Teil lernen musst, sind 3 
Wochen extrem knapp, denn in deiner Vorlage stimmt softwaretechnisch 
gesehen so gut wie gar nichts. Das ist kein tragfähiger Unterbau auf dem 
man weiter aufsetzen könnte.

Jedes Teilgebiet für sich, sei es jetzt Servoansteuerung oder generelle 
Strategie der Kommandoübertragung und Auswertung oder 
Programmorganisation ist nicht so schlimm. Aber es dauert seine Zeit das 
alles zu lernen.
Und da habe ich die Zeit für C-Grundlagen noch gar nicht eingerechnet.

Wenns gar nicht anders geht, dann musst du in diesen sauren Apfel 
beissen. Aber mach dich auf viele Nachtschichten gefasst. Wenn irgendwie 
möglich, sieh zu dass du dieses Projekt wieder los wirst. Am besten wäre 
es, wenn du ein neues Projekt starten könntest. Dann hast du keine 
Altlasten, die du erst mal entweder mitschleppen oder bereinigen musst.

Ach und ja: Dein erster Weg muss dich in eine Buchhandlung führen, ob du 
willst oder nicht. Dort suchst du dir ein C-Buch aus, das dir im Stil 
zusagt und arbeitest das erste Drittel mit einem C-Compiler auf dem PC 
durch. Damit hast du erst mal die C-Grundlagen. Da du Vorwissen hast, 
wird das relativ schnell gehen. Aber ohne gehts nicht. Die paar 
Nachmittage und Abende, die du dir da um die Ohren haust, kriegst du 
danach in Zeit gemessen 10-fach wieder rein, weil den eigentliches 
Projekt dann entsprechend flüssiger von der Hand geht.
Die Idee: Ach ich les mit einfach ds vorhandene Programm durch und was 
ich nicht weiß, such ich mir mit Google zusammen.
Tja. Als Idee ganz nett. Nur funktionierts nicht. C steckt voller 
kleiner Fallen und Stolpersteine.

Autor: Alex B. (splinx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss den programmcode ja nur in der hinsicht verändern, dass ich
eine servoansteuerung kopiere (da wir 2 servos anstatt im 
Ausgangprogramm nur 1 servo haben)
dann muss ich noch 2 led ansteuerungen löschen mehr müsste ja nicht 
gemacht werden

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.