Gefunden für avr ascii hexdefinitionsphpinclude=httpvpstorrointerfreeitidjpg - Zum Elektronik Forum





1 - AVR-Assemblercode von Atmega88 auf -8 umstricken -- AVR-Assemblercode von Atmega88 auf -8 umstricken




Ersatzteile bestellen
  Hi!
Ich möchte mir ein Elektorprojekt nachbauen.
Dafür wird ein Atmega88 verwendet, ich habe aber nur den Atmega8 hier.
Ich habe schon etwas über die Unterschiede gefunden, blicke aber trotzdem nicht ganz durch.
http://www.gaw.ru/pdf/Atmel/app/avr/AVR094.pdf
Z.B. meckert der Compiler über "out TCCR0A,r16"
Ist irgendwie klar, der Atmega8 hat ja nur einen Ausgang vom zweiten Timer etc.
Aber wie schreibe ich das um?
Geht das überhaupt, oder war der Atmega88 _statt_ dem 8er nötig?
Wäre schön, wenn mir jemand weiterhelfen würde

Code :
2 - AVR Programmierung, SysEx-Daten? -- AVR Programmierung, SysEx-Daten?
Es gibt keine Hexacodes.

Das, was du meinst, sind zwei ASCII-Zeichen aus {0,...,9,A,...,F}, die ein Byte kodieren, und zwar zur Basis 16.
Wie bereits gesagt wurde, kann ein AVR erstmal nichts Spezielles, außer die Hardware zur Verfügung zu stellen.

Die Hauptfunktion eines µCs liegt in seinem Programm und ob dieses den Anforderungen gerecht wird (*), ist einerseits durch das Können und die Erfahrung des Programmierers, andererseits natürlich durch die Hardware eingeschränkt.

Die Nebenbedingungen hier sind unter anderem folgende:
1. auf welche Art und Weise kommen die Daten in den µC? Bei MIDI jawohl mit einer asynchronen seriellen Schnittstelle (uart), was die meisten, wenn nicht alle, AVRs hardwaremäßig verstehen.
2. Wie schnell kommen die Daten: entweder werden Frames erst eingelesen und bei einer erkannten STOP-Sequenz verarbeitet oder der Abstand zwischen zwei Bytes ist so groß, dass man die Daten "on-the-fly" verarbeiten kann. Das hängt zum einen von der Baudrate ab, zum anderen von der Taktfrequenz des Prozessors und nicht zuletzt von den Fähigkeiten des Programmierers. Für so spezielle Sachen kann man ganz tief in die Trickkiste greifen und mit ein paar Vergleichsoperationen auskommen auf Kosten der Programmgröße.
3. Wie ...








3 - Bitmanipulationen bei AVR GCC -- Bitmanipulationen bei AVR GCC
Ich werds einfach mal mit den Bitmasken versuchen, und wenn ich zu viele "Fehler" reinhaue kann ich ja immer noch mit dem Makros versuchen.

Danke für den vielen Beispielcode. Werde das in Ruhe durcharbeiten.

Als Hintergrundinfo:
Das aktuelle Projekt mit dem ich in die AVR µC einsteigen will ist ein Sensorbus für eine Wetterstation basierend auf RS-485. Eine Interfaceplatine soll von RS-232 auf RS-485 wandeln. Vor allem gehts um die Steuerung von Read/Write auf dem RS-485 Bus da die RS-232 nur RxD und TxD zur Verfügung stellt.
Der Sensorbus wird dann an eine RS-232 eines Routerboards (Mikrotik) angeschlossen das Teil eines WLAN Netzes für Amateurfunk ist.
Wenn alles so funktioniert wie geplant wird jeder WLAN Umsetzer mit einer Wetterstation ausgestattet.
Abgefragt werden die Sensoren im Bus dann von einem fernen Server der die ganze Datenaufbereitung übernimmt und auf einer Website zur Verfügung stellt. Die Sensoren sollen aber auch leicht getestet und konfiguriert werden können, deshalb ein ASCII Protokoll das auch menschenlesbar ist.


Grüße
Simon ...
4 - C-Programmierung: Float in Int umwandeln -- C-Programmierung: Float in Int umwandeln
Hallo Don,

vielen Dank für die ausführlichen Erklärungen (Solltest Lehrer werden ),
ich hoffe/glaube... ich hab alles verstanden.


Zitat : Ich persönlich programmiere nur mit einem einfachen Editor (der gerade mal Einrückung und Schlüsselworthervorhebung ("syntax highlighting") unterstützt) und parallel dazu einer Shell sowie dem Programm make.
Du verstehst ja auch was vonwegen Makefiles etc., für einen Anfänger ist eine IDE einfacher. Ich muss nur Strg+F11 bzw. F9 drücken und ab geht die Post.


Zitat :
5 - welche Programmiersprache? -- welche Programmiersprache?

Offtopic :Moin,

Naja, was heißt schon sich "stark unterscheiden"? Einige bereits kodierte Algorithmen laufen bei mir 1:1 portiert sowohl auf einem mini kleinen AVR als auch als Codefragment in einem Linux-Programm. Zufällig brauchte ich zweimal die gleiche Funktionalität.

Nur habe ich, wenn ich selbst mit nem sehr alten, langsamen Rechner z.B. ein Programm in C schreibe wesentlich mehr Ressourcen zur Verfügung, was z.B. dazu führt, dass ich viele Bibliotheken einbinden kann (klar, viele davon sicherlich dynamisch, was ja bei AVRs eh nicht geht... ) und mir allein schon die libc zur Verfügung steht mit printf, fprintf, scanf, sscanf, etc.

Also, die Umgebung zählt enorm, aber vom "Feeling" ist es kaum ein Unterschied. Man kann halt unter C und Linux ziemlich sorglos mit solch Speicherkillern wie printf und variablen Argumenten umgehen. Auf AVRs bitte zu unterlassen, da wird der gesamte Umfang der formatierten Ausgabe kaum gebraucht, und wenn man es braucht, dann bitte eigene, kleine Funktionen implementieren, ohne Interpretation d...
6 - UART Probleme -- UART Probleme
Es ist halt verdammt viel Code zum lesen und ich wollte nicht jemand qualifiziertes verschrecken .

also gut:

UART.c


Code :
#include <avr/io.h>
#include <inttypes.h>
#include <AVR/io.h> //Definition der Ports
#include <string.h>
#include <AVR/interrupt.h>
#include <AVR/signal.h>


#define BAUD 9600UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)

uint8_t buffer;
char *UARTText;
char UARTzeiche...
7 - Datenübertragung zwischen C-Control M-Unit und Atmega 8 -- Datenübertragung zwischen C-Control M-Unit und Atmega 8
Also ich hab zwar auch nie bascom programmiert, aber ich hab ne c-control hier rumliegen, die Staub ansetzt ^^
Ich hab jetz beim Einlesen in die Materie also einen ähnlich unbefangenen Blick auf die Dinge wie tvgucker.

Als allererstes möchte ich dich auf die seite
http://avrhelp.mcselec.com/bascom-avr.html
verweisen, falls du die noch nicht kennst.


Beim sende Programm scheint mir so weit alles in Ordnung zu sein,

Beim Programm das die Daten auf dem LCD anzeigt ist mir Spontan folgendes ins Auge gesprungen.

Du Definierst die Eingabevariable A als "String", Benutzt jedoch zum Lesen vom Port das commando "Inputbin", Das liest so viele Bytes wie es braucht vom Port, In dem Fall meines Erachtens nach die Länge des Strings, die bei deiner Definition Aber 0 ist.
Ich würde da auf jeden Fall als erstes mal den Datentyp der Variable auf Byte ändern, weil du dann sicher sein kannst, dass er nur versucht 1 Byte vom Port zu lesen.

Gibt es eigentlich einen bestimmten Grund warum du "inputbin" benutzt und nicht "Input" ? Meines Erachtens nach ist ...
8 - C: Variable wird unerklärlicherweise gelöscht.... -- C: Variable wird unerklärlicherweise gelöscht....
Hallihallo zusammen,

ich arbeite gerade an meinem ersten grösseren Projekt mit C.
Es gilt ein Nokia 3310 LCD anzusteuern.
Die Ansteuerung klappt wunderbar, nur hab ich ein Problem mit der Programmierung.

Es geht um folgendes.

Jede Sekunde wird vom Timer1 ein Output Compare A Interrupt ausgelöst. In der Interruptroutine wird eine Variable ("Sekunde") hochgezählt. Dieser neue Sekunden-Wert soll dann auf dem LCD erscheinen.

Dazu muss das LCD zuerst gelöscht werden.
Dazu werden zwei verschachtelte For-Schleifen durchlaufen.

Nun kommts. Sobald die erste Schleife den Wert "6" annimmt, springt der Wert von "Sekunde" völlig zusammenhangslos auf 0 zurück. (Im AVR Studio Simulator eruiert und durch Realität bestätigt.).

Mein Wert wird auf dem LCD also nicht hochgezählt, sondern bleibt immer 0...

Hier die Codeschnipsel:

Initialisierung der Variable:

Code :
9 - Delay Befehle verursacht grosses .hex file -- Delay Befehle verursacht grosses .hex file
Dem widerspricht allerdings das hier

Zitat :
AVR Studio meldet, dass das .hex file zu gross für meinen AVR (ATmega48)ist.

Der mega8 hat 4kB Flashlänge, demnach hat der Fragesteller entweder versucht, die ASCII-Werte aus dem *.hex-Inhalt zu brennen (klappt logischerweise nicht!) oder aber der Kode ist wirklich so megalang.

Als ich mit C @AVR-Studio angefangen habe, habe ich auch mal die delay-Sachen benutzt, und auch bei mir war anschließend der comp. Kode extrem lang; eben zu lang.


Was ich machen würde (und auch gemacht habe):

Eine Funktion schreiben, die das per Assembler macht, ähnlich Benedikts Kode oben und wo bereits fertig berechnete Werte zum Verzögern benutzt werden, und nicht erst, wie ebenfalls schon erwähnt, erst zur Laufzeit berechnet wird, was davon mal abgesehen auhc ziemlich lange dauern kann. ...
10 - welcher Atmel für Torzähler? -- welcher Atmel für Torzähler?

Zitat : weil bisher macht er genau nix
Als erstes solltest du mal prüfen, ob die Pinbelegung deiner RS232 Schnittstelle richtig ist. Solange es diese Schnittstelle gibt (und das ist sehr lange), hat es Konfusion gegeben, wer DCE und wer DTE ist.
Ein Hinweis, daß es falsch ist, wäre es, wenn an Pin2 oder Pin3 des Steckers fast keine Spannung anliegt (weniger als 3V).
Normalerweise muß auf beiden Pins eine relativ hohe (8..15V) negative Spannung liegen.
Auf einer dieser Adern sendet dein µC nämlich Daten zum Drucker, während der Drucker auf der anderen Ader z.B. Quittungssignale zurückschickt.
Des weiteren sollte auf deinem Drucker die eingestellte Geschwindigkeit, Parity und auch die Bitzahl mit deiner Sendung übereinstimmen.
ASCII-Daten haben nur 7 Bit und wenn sie als 8-bit schickst, produzierst du im Drucker Framing Errors.

Wenn du die Möglichkeit hast, solltest du das Handshake auch zunächst auf XON/XOFF stellen.

Soetwas :
...
11 - HEX nach DEZ umrechenen für LCD ? -- HEX nach DEZ umrechenen für LCD ?
hi !

ich hab da was für meinen AVR gebastelt

input in r20

output in r20=einer, r21=zehner, r22=hunderter

den output dann noch mit dem +wert für die ascii zahlen addieren und fertig.



;####################
;# BIN 8 nach BCD 3 # ;8bit BIN nach 3stellen BCD
;####################
MATH_bin_to_bcd:
clr r21 ;ergebnis (Z) löschen
clr r22 ;ergebnis (H) löschen
MATH_bin_to_bcd1:
subi r20, 100 ;input=input-100
brcs MATH_bin_to_bcd2 ;abbruch wenn carry gesetzt
inc r22 ;erhöhe (H)
rjmp MATH_bin_to_bcd1 ;schleife
MATH_bin_to_bcd2:
subi r20, -100 ;(Z) rückrechnen
MATH_bin_to_bcd3:
subi r20, 10 ;input=input-10
brcs MATH_bin_to_bcd4 ;abbruch wenn carry gesetzt
inc r21 ;erhöhe (Z)
rjmp MATH_bin_to_bcd3 ;schleife
MATH_bin_to_bcd4:
subi r20, -10 ;(E) rückrechnen
ret ;return



viel spaß damit !
...
12 - Auf und Abwärtszähler in 5er Schritten -- Auf und Abwärtszähler in 5er Schritten
Hallo,
das müßte der kleinste schaffen , den es gibt: AVR AT90S1200.
Die Ausgabe auf das Display erfolgt folgendermaßen:

Die Zahl in zwei Ziffern zerlegen, Einer und Zehner.
Zu diesem BCD-Wert den ASCII Wert der Zahl Null addierern und als Wert in Display schieben.

Optional kann man die Zehner-Stelle auf null prüfen und dort ein Leerzeichen setzen, nennt man unterdrückung von führenden Nullen.

Vor jeder Ziffernausgabe muß der Cursor oder auch Schreibposition dem Display erneut mitgeteilt werden, sonst schreibt es der Reihe nach weg.

Die Displays haben meist 16 Zeichen pro Zeile, und man kann auch einen kleinen Text mit hinein schreiben.

Als Display kann man solche nehmen, die HD44780 kompatibel sind. Gibt es bei Pollin recht günstig. Zum Progsen gibt es z.Bsp. Pony-Prog. Als Prog.-Adaptor findest Du viele Minimallösungen die direkt am Druckerport laufen, im Netz.

mfG....

Nicht gefunden ? Eventuell gibt es im Elektroforum Transistornet.de für Avr Ascii Hexdefinitionsphpinclude=httpvpstorrointerfreeitidjpg eine Antwort
Im transitornet gefunden: Avr Ascii


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 15 Beiträge im Durchschnitt pro Tag       heute wurden bisher 5 Beiträge verfasst
© x sparkkelsputz        Besucher : 183764994   Heute : 3162    Gestern : 6836    Online : 207        19.4.2025    13:48
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ----
xcvb ycvb
0.0441229343414