-
Thread
Portzustände definieren
auch keine vorübergehend verbotenen Kombinationen am Port wie bei mehreren Schreibvorgängen. Ein übliches Verfahren: Port einlesen oder den Zustand aus einem Register holen. Per AND die Bits löschen, die Null werden sollen. Per OR die gewünschten Bits
Ok, da ich jetzt komplett auf einen anderen AVR umsteigen mußte. ATTiny44. habe jetzt leider das Problem das ich LED's und Steuer-Ausgänge am gleiche Port habe. PA0-PA3 sind LED's PA4-PA5 sind Ausgänge um etwas anzusteuern.
-
Thread
Atmega 8 Programmieren für Anfänger (Taster und LED)
Danke für die schnellen Antworten ich denke ich muss mich noch ein wenig in die Thematik einlesen. Habe ein Beispiel für ATTINY 2313 gefunden (elsniwiki): [C] #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> int main (void) { // ******************************
--- // 1MHz ist Default-Takt (Fuse-Bits nicht manipuliert #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> int main (void) { // Pin 1 von Port B (PB1) als Ausgang schalten DDRB = (1 << PB1); // Endlosschleife for (;;) {
-
Thread
Atmega2560 ADC auslesen
einen 10Bit Wert gewandelt. Die untern 8 Bit sollen an den PORTB ausgegeben werden. [c] #include <avr/io.h> // inernet Takt 128kHz // Port E hat ADC (ADC0) PF0 // Ausgänge sind negiert int main(void) { #include <avr/io.h> // Internet Takt 128kHz // Der ADC ist an PortF angeschlossen
) Danke, das warten habe ich schon eingebaut. In Interrupts muss ich mich beim Atmega noch einlesen. [c] #include <avr/io.h> // Internet Takt 128kHz // Der ADC ist an PortF angeschlossen, ADC0 --> PF0 // Ausgaege des PortB sind negiert int main(void) { ADCSRA= 0b11100000
-
Thread
PS/2 Tastatur Befehl senden!?
beim start des pcs eine richtige tastatur an und lasse ih damit hochfahren und schließe dann meinen avr an und sende mit ihm scancodes erkennt der pc diese auch und gibt sie im textverarbeitungsprogramm wieder. starte ich den pc aber mit dem avr am PS/2 Port erkennt er diese nicht, da ich immer noch
sache erheblich erleichtern würde. Hmm. Je nach dem. LA wär womöglich besser. Häng doch einfach den AVR parallel dazu, dekodier was über die Leitung geht und gib die Hexwerte auf einem LCD aus. Scancodes von der Tastatur einlesen und auf ein LCD schreiben hatte ich in 0,nix gestrickt. Du müstest vielleicht
-
Thread
mit Poti LEDs stufenlos ausgeben
Ja wie bereits erwähnt: Soft-PWM! Dein AVR wird kaum 8 PWM-Kanäle haben ;-) AD-Wert des Poti einlesen und dann entsprechend die Pulsweiten berechnen und auf die LEDs geben.
Für eine LED an einem AVR könnte eine einfache Software-PWM zb so aussehen. [c] #include <avr/io.h> #include <avr/interrupt.h> #define LED_DDR DDRB #define LED_PORT PORTB #define LED1_PIN PB1 volatile uint8_
-
Thread
ISP-Mode Fehler bei Programmierung ATMEGA16 mit STK500
ausreichend beschäftigen allerdings das Ergebnis gefällt mir immer noch nicht. Die Pins lassen sich an PortC über PortB schalten. Allerdings liegt die Spannung bei etwa 3V im neutralen Zustand an PortC. Lege ich den entspprechenden einen Pin bei B auf Masse fällt C auf 0V ab. Gebe ich Strom auf B, geht C
Port C *ist* ebendieses Floaten messbar, weil Port B ja dann weiterhin offen ist. Das ist, was Du misst; die angezeigten "3 V" ist der zeitliche Mittelwert aus ständig unregelmäßig wechselnden L- und H-Pegeln
-
Thread
Flackern beim DMX-Empfang
modifiziert, adresseL und adresseH hab ich auf Register r20 und r21 geschoben, damit diese nicht über Port C gefüttert werden, sondern eine statische Zahl haben. .def adresseL = r20 .def adresseH = r21 ldi adresseL, 0x02 ; Einlesen der Startadresse -> das sind die Änderungen vom
Wir meinen einen richtigen Programmer, Original von ATMEL, also den AVR-ISP oder den AVR-ISP mkII. Ersterer für COM-Port, Letzterer kann USB. Die lassen sich direkt am AVR-Studio4 betreiben und arbeiten zuverlässig und immer. Mit der Schaltung wissen wir dann auch mehr.
-
Thread
MCURSES - Mini Curses Bibliothek für Mikrocontroller
als eine Anregung verstanden werden. hier noch ein update der letzten lib: http://beaststwo.org/avr-uart/index.shtml
STM32-spezifisch ist: mcurses-config.h: - Stellt man MCURSES_UART_NUMBER auf 0, wird der USB-Port des STM32F4-Discovery als Virtual COM Port (VCP) verwendet. Das heisst, man benötigt noch die USB-Lib, weil kein UART des STM32, sondern STM32-USB am Micro-USB-Port verwendet wird. Die
-
Thread
ATmega 328PB Taster einlesen
Hilfe! Wo ist denn mein Fehler Das mein aktueller Code: [c] #define F_CPU 16000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <stdio.h> #define PERIODE_TASK1_10MS 400 // for 4s task #define PERIODE_TASK2_10MS 5 // for 50ms task volatile char gTime1 = 0; volatile char
Ereignisbit, was dann die Mainloop abfragen kann. Der Einfachheit halber mache ich das für einen ganzen Port parallel (vertical Counter), d.h. bis zu 8 Tasten.
-
Thread
qtouch - sekt oder selters
Verständnis "Künsten" an meine Grenzen. Ich habe eine Anwendung bei der ich mehr als 10 Taster einlesen muss und möchte diese Taster gerne gegen die Touch Sensoren (Flächen) ersetzen. D.h. ich muss die Prozedur für 2 Ports durchführen was mir einiges an Schwierigkeiten bereitet. Ich habe den Code schon
SK_PortD_B0 (1<<1) #define SK_PortB_A012 (SK_PortB_A0 | SK_PortB_A1 | SK_PortB_A2) #define SK_PortB_B012 (SK_PortB_B0 | SK_PortB_B1 | SK_PortB_B2) //#define SK_PortD_A0 (SK_PortD_A0) //#define SK_PortD_B0
-
Thread
Problem Cortex M3 (LM3S3748)
GPIO_PORTA_DIR_R ^= 0x80; // SDA OUTPUT GPIO_PORTA_DATA_R = Temp; // PORT wieder zurückschreiben Delay_us(10); return 0x01; } else { GPIO_PORTA_DIR_R ^= 0x80; // SDA OUTPUT GPIO_PORTA_DATA_R = Temp; // PORT wieder zurückschreiben
Kp. wie deine Registerdefinitionen sind, einlesen tut man einen Port aber über das "Pin"-Define. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Abschnitt Lesen aus Registern
-
Thread
4x4 Matrix für 16 Schalter
da mal nachzuschaun. Aber ich vermute mal, dass "der einen nick hat" sich auch die Atmel-AppNote AVR242 nicht angesehen hat... Gruß über'n Bach, Hannes
Das Bild im Anhang ist vom dem Forum. Da hat man an allen 8 Ports Widerstände dran. Braucht man die alle? Oder reichen auch nur 4? also für jede zeile einen.
-
Thread
Porterweiterung
nach Bedarf kann die 2 IC- Lösung auch sinnvoller sein. Was willst Du ansteuern und was willst Du einlesen mit SPI, erst danach kann man einen gezielten Vorschlag machen. Für eine profilaktische Erweiterung von SPI Ports gehe ich doch anders vor, als für eine gezielt, wenn auch noch unvollständige, Anwendung
-usw... Jetzt bitte nicht hauen! *aua* ;) Nach aktuellem Stand würde ich das mit einem kl. AVR und ein paar Parallel-TTL-IC's realisieren. Der AVR soll dann die Daten per SPI entgegennehmen und dann einen 8Bit-Datenbus mit 3State-Latches und 3State-Buffers auf 8 Ports verteilen. Werden dann zwar
-
Thread
[AVR][ATMega8]Problem mit PortB6 und PortB7 als Eingang an Schalter
Hallo liebe Mikrocontroller-Gemeinde, in meinem aktuellen Projekt möchte ich gerne PORTB6 und B7 als Eingänge nutzen. An den Ports hängt ein Schalter, der die einzelnen Pins gegen Masse schaltet. Dabei gibt es drei Schalterstellungen. In der ersten Stellung wird PB6 auf Masse geschaltet, woraufhin eine LED aufleuchtet, in der Mittelstellung wird keiner der Pins auf Masse gelegt und in der dritten wird PB7 gegen Masse geschaltet. bei PB7 als auch der Mittelstellung, soll die LED ausgeschaltet sein. Später sollen ausgehend von der Stellung verschiedene Zustände abgeleitet werden, die LED dient
-
Thread
DS1620 Ansteuern klappt nicht, warum?
wenn gar nichts am port liegt. Gruß
http://www.mikrocontroller.net/articles/FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio
-
Thread
7-Segment Anzeige
Hallo Leute, ich bin ein Anfänger in Mikrocontrollerprogrammierung und lese mir gerade die AVR-Tutorial & AVR-GCC-Tutorial durch. Vorher habe ich mit den "Schicki-Micki" Sprachen (so wie Ihr es wahrscheinlich nennen würdet) C# und Java aktiv programmiert. Damit ich erstmal ein Einstiegshilfe
dass der Controller jetzt weisst, dass ein Input kommt und die Zahlen dann in 5 ms Takt durch A einlesen? Sprich Hauptcontroller schickt jeweils 5 ms an den Port A vom Controller = 0V - 5V - 5V - 5V (0111) und schaltet somit die LED's vom ersten Segmentanzeige die Ports a, b und c an damit die Zahl
-
Thread
bin immernoch an probieren....... das klappt aber nicht! :((
Was ist denn bitteschön "Pin 8"? Ein (8-Bit-) Port am Mega 16 hat Pins von 0 bis 7. Der "erste" Pin an einem Port ist der mit der Nummer 0, dann kommt der "zweite" mit der Nummer 1 usw. Wenn Du den "ersten" Pin als Eingang programmieren willst, musst
Wenn Du die 10 V_pp direkt an den AVR angelegt hast, kannste den AVR wahrscheinlich wegschmeißen! Der darf maximal -0,5 V bis VCC + 0,5 V an den Eingängen.
-
Thread
Drehgeber per Interrupt auslesen, wieviele Interrupteingänge muss ich belegen bei Atmega64
ein analoger port, kann ich das ding trotzdem daran betreiben?
> Was meinst du mit "Pollen" :) Er meint zyklisches Einlesen des Ports in regelmäßigen Zeitabständen (z.B. durch Timer-Interrupt synchronisiert). Verfolge einfach die Links von Peter, etwas Besseres wirst Du nicht finden. Die Routinen sind sooo gut, dass
-
Thread
AtMega8 2. ADC benutzen
ddrB.bit1 = 1; //B.1 als Ausgang ddrC.bit1 = 0; //C.1 auf Eingang portC.bit1 = 0; //C.1 ohne Pull-Up spannungmesser.config(0); konsole.config(9600); wert=0; } public: void onWork() { portB.bit0 = 1; //B.0 ein -> Relais ein portB.bit1 = 1; //B.1 ein -> LED ein waitUs(50000); portB.bit0 = 0; //B.0 aus portB.bit1 = 0; //B.1 aus waitUs(5000000);
-
Thread
Einsteigen in Mikrocontroller Programmierung
Sub-D-Verlängerungskabel - Bausatz Atmel-Evaluations-Board V2.0 - AT Mega 16-16PU - PonyProg - AVR Studio Ist das alles was ich für einen Einstieg benötige? Zum Programmieren würd ich dann das AVR-Tutorial http://www.mikrocontroller.net/articles/AVR-Tutorial verwenden...
mehr Einsicht" ins laufende System nützlich ist. Vielleicht lohnt es sich später, einen neuen Artikel AVR-Debugging o.ä. zu starten ähnlich wie [[AVR-Simulation]]
-
Thread
Rechteckgenerator mit verschiedenen Frequenzen
abgefangen, hier wird ins Eingansgregister geschrieben, interne Pullups nicht aktiv, folglich extern, AVR/io nicht eingebunden, Am Ausgang toggeln nichts, da müsste stehn PortA ^= 1<<PAx Halb so voreilig und lieber deine gewohnte Qualität!
abgefangen, hier wird ins > Eingansgregister geschrieben, interne Pullups nicht aktiv, folglich > extern, AVR/io nicht eingebunden, Am Ausgang toggeln nichts, da müsste > stehn PortA ^= 1<<PAx > Halb so voreilig und lieber deine gewohnte Qualität! Ja, die Pullups sollte man vielleicht noch setzen. Auch
-
Thread
Nur damit ich das richtig habe ....
einen komfortablen Einstieg in die AVR-Welt zu bekommen.
Mein Projekt kann ich erstmal vergessen. Sollte ein Gerät werden mit dem man : - 8 analoge Werte einlesen kann - 16 port-pins hat mit denen man : - Servo-Signale oder PWMs - natürlich Ein/Ausgabe - Zeit/Frequenzmessungen und noch andere Sachen machen können soll, und das ganze dynamisch
-
Thread
Nötige Elko-Kapazität berechnen
wenns für dich zum Basteln ist, kannst du es auch versuchen mehr aus dem USB Port zu holen (Wobei die Spannung sicher <4,2V liegen wird). Ansonsten könntest du auch zwei USB Ports nehmen.
Wow! Hier gehts ja los, ist ja super! @Kondensator: "500mA liefert ein USB-Port (laut Spezifikation) übrigens nur an angemeldete Geräte..." Das ist kein Problem, das läuft über einen FTDI-Chip, der meldet das Gerät an und schaltet erst danach den AVR ein. Zum Thermodrucker
-
Thread
[gesucht] Olimex SAM7-EX256 Minimalbeispiel
/portable/GCC/ARM7_AT91FR40008/portISR.c:79: warning: implicit declaration of function 'portRESTORE_CONTEXT' ../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function 'vPortYieldProcessor': ../../Source/portable/GCC/ARM7_AT91FR40008
_AT91FR40008/portISR.c:147: error: 'portTIMER_REG_BASE_PTR' undeclared (first use in this function) ../../Source/portable/GCC/ARM7_AT91FR40008/portISR.c: In function 'vPortEnterCritical': ../../Source/portable/GCC/
-
Thread
Problem Atmega 644P Programmierung
Programmierung eines ATMega644P. Ich verwende als Software avrdude 5.11 mit der Benutzeroberfläche AVR Burn-O-Mat 2.1.1. Als Programmieradapter habe ich den Diamex AVR USB-ISP Programmer, die 5 Volt für den Atmega werden durch den ISP-Programmer bereit gestellt. Im Burn-O-Mat habe ich als AVR Typ
Pins des 644P gelegt. Wenn ich nun mit dem AVR Burn-O-Mat die fuses auslesen will, kommt folgende Meldung: C:\avrdude\avrdude.exe -C C:\avrdude\avrdude.conf -p m644 -P com12 -c stk500v2 -U efuse:r:C:\.... avrdude.exe: AVR device initialized
-
Thread
impulslängenanzeige mit PIC
selber nicht braucht. Stell mal die Wahl der Programmiersprache (Bascom, C) und der MC-Familie (AVR, 8051, PIC) frei, das erhöht die Chancen drastisch. Peter
programm in den atmel bekomme > wäre ich überglücklich ^^ http://www.mikrocontroller.net/articles/AVR_In_System_Programmer Prinzipiell sollte das Programm auch auf einem PIC-Compiler laufen. Man muß nur die Namen der Port- und Richtungsregister anpassen. Und die Delayfunktion schreiben, wenn
-
Thread
PIND vs PORTD
wird aber nur das drin stehen was du vorher rein geschrieben hast. PIND ist um den tatsächlichen port status ein zu lesen.
Genau so isses. Zum schreiben den Port als Ausgang (DDRD.x = 1), Daten in PORTD.x schreiben, und zum lesen als Eingang (DDRD.x = 0) und die Daten über PIND einlesen. Vor dem Einlesen sollte man natürlich noch das Portregister in einen definierten
-
Thread
Display Programmierung mit GCC 16x4 Display
(mangels Zeit). Gell, Hardware-Initialisierungen sind in diesem Beispiel keine drin, oder? Die Ports scheinen aber initialisiert zu sein, zumal es zumindest etwas tut. Wie schnell taktest Du den Prozi denn? Ich kenne AVR zwar gar nicht, aber ich nehme doch sehr stark an, dass auch bei interner
sich im Brennprogramm (zumindest war das in AVR-Studio 4 noch so)
-
Thread
Spannungskomperator mit ADC
* * Created: 06.01.2015 19:52:30 * Author: ***** */ #define F_CPU 800000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include "ADC.h" #define HEATER PB1 #define LED PB3 #define DEBUG_LED PB0 void init_ports(void); void checkTemperature(void); void
checkTemperature(); _delay_ms(500); } return 0; } // Initialize the port-pins void init_ports(void) { // LED-Port (output), Relay-Port (for heater) (output) DDRB |= (1<<LED) | (1<<HEATER) | (1<<DEBUG_LED); PORTB &= ~(1<<LED); PORTB &= ~(1<<HEATER); PORTB
-
Thread
Analoger Sensor (LM335) mit Operationsverstärker + AVR Asm-Code
TS921 für andere Einsatzfälle durchaus ein paar Dutzend mA am Ausgang mehr. Demnächst gibts zum Einlesen noch etwas Assemblercode für SimplyAVR ;-) Moby
Moby AVR schrieb im Beitrag #3792290: > 16 bittig gerechnet Moby AVR schrieb im Beitrag #3792288: > Was die Höhe der Referenzspannung betrifft hab ich das als Praktiker > jetzt nicht ins letzte ausgerechnet
-
Thread
SPI mit Atmega32
ich versuche schon mehrere Tage, eine Porterweiterung mit einemMCP23S17 zu machen. Die Ausgabe auf Port A klappt, nur das Einlesen bekomme ich nicht hin. Ich habe schon alle möglichen Unterlagen durchgesehen, komme aber nicht weiter. In der angehängten Datei ist oben die eigentliche serielle AUS-/Eingabe, darunter die Initialisierung des MCP. Zum Schluss zuerst die Ausgabe an Port A, dort klappt das Rücklesen auch nicht. Darunter ein Versuch mit nur zwei Byte am Port B, da kommt auch nichts raus. Egal ob ich OP-code $40 oder $41 verwende. Das DB des MCP ist da auch nicht sehr
-
Thread
Platine mal funktioniert, mal nicht
Hi >Quellcode mal funktioniert, mal nicht. Er braucht nur mal nach dem Einlesen eines Ports die 'offenen Pins' nicht ausmaskieren und mit einem angenommenen Zustand der Pins weitermachen. Und schon wird das Ganze ergebnisoffen. MfG Spess
im Beitrag #1982800: >>Quellcode mal funktioniert, mal nicht. > Er braucht nur mal nach dem Einlesen eines Ports die 'offenen Pins' > nicht ausmaskieren und mit einem angenommenen Zustand der Pins > weitermachen. Und schon wird das Ganze ergebnisoffen. Genau. Mein zugegebenermaßen am Rand
-
Thread
AVR32 I/O Geschwindigkeit; MPEG dekodieren
also maximal kann er pro taktzyklus 1 mal schalten ... nur macht der avr dann nichts anderes ... gleiches gilt fürs einlesen, deswegen verstehe ich die frage nicht ganz.
gilt für Bus-basierte Microcontroller, dass man mindestens einen Schreibzugriff benötigt, um den Port zu setzen, und einen weiteren, um ihn wieder zu löschen. Soweit mir bekannt ist, basieren AVR32 MCU auf dem selben Busstandard (AMBA) wie so ziemlich alle ARM basierten MCU. Hier ist es nun mal
-
Thread
GCC: Aufruf mehrerer Inline-Funktionen schießt den AVR ins Nirvana
_always_inline__)) #endif static inline int gpio_local_get_pin_value(uint32_t pin) { return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1; }[/c] Wie vorgeschrieben ist mein clock für den Port genauso groß wie der CPU-Takt. Rufe ich nun ein paar mal diese Funktionen zum Setzen,
statt dessen den Befehl selber auf, läuft wieder alles. Ein Aufruf würde dann also so aussehen: [c]AVR32_GPIO_LOCAL.port[CLK_PIN >> 5].ovrc = 1 << (CLK_PIN & 0x1F);[/c]
-
Thread
µC ATmega 8515 LEDs leuchten nach Tastendruck nicht
Hallo und guten morgen liebe Gemeinde. Ich habe mich gerade eben über das zweite Progrämmchen im AVR-Tutorial gemacht. Hier der ASM Code: [avrasm].include "m8515def.inc" ldi r16, 0xFF out DDRB, r16 ;Alle Pins an Port B durch Ausgabe von 0xFF ins ;Richtungsregister DDRB als Ausgang konfigurieren ldi r16, 0x00 out DDRB, r16 ;Alle Pins an Port D durch Ausgabe von 0x00 ins ;Richtungsregister DDRD als Eingang konfigurieren loop: in r16, PIND ;an Port D anliegende Werte (Taster nach r16 einlesen out PORTB, r16 ;Inhalt
-
Thread
uC mit USB gesucht
von FTDI nicht ganz verstanden hatte (RS232 / SPI / I2C / ... geht nicht gleichzeitig) Aber ein 2 Port / 4 port baustein muss nicht auf allen ports das gleiche machen. ggf ein IO-Warrior? Grüsse aus dem Süden der Republick.
Kleine USB-Bibliothek für ATMEL®-USB-AVRs® (|||) http://www.weigu.lu/microcontroller/avr_usb_libs/index.html
-
Thread
RS232 Protokoll mit RXD/TXD und STX/ETX?
Protokoll steht nicht;) Da es vorher so ablief: Die Dateneingabe gigen über ne Data-Schnittstelle PortA des Mikrocontrollers und über PortB wurde die SPI sprich MOSI, MISO über /ss (Pin4) des Port aktiviert, also die Datenübertragung Und jetzt muss ich es halt mit der RS232 und einen MAX232 ersetzen
und jetzt sollen sie seriell übertragen eben über dieses UART, und dazu verwendet man eben statt PortB -->Port D Pin PD0(RXD) und Pin PD1(TXD) und ich muss es in meinem Assemblerprogramm diese SPI-Schnittstelle ersetzen, und dieses neue RS232-Protokoll einfügen, die Datenübertragung soll aber weiterhin
-
Thread
2 AVR's verbunden, wie ansteuern?
Ich habe hier eine Schaltung die aus 2 AVR's besteht die mit 3 Leitungen miteinander verbunden sind. Der erste AVR dient zum einlesen der Verzeichnisses der SD-karte und der zweite nur für die Ausgabe am LCD. Die Hardware bestand ursprünglich
liegt der Code des Menüs am ersten AVR der dann die Ausgabe auf den zweiten weiterleitet. Der zusätzliche Menüpunkt soll die Ausgänge des Display-AVR ansprechen. Wie macht man das? Wie kann man vom ersten AVR die Ausgänge des zweiten
-
Thread
STM32 Shift operationen
) [/c] [c] uint16_t Input = (GPIO_ReadInputData(PORT) & MASK) >> START_PIN; // read port and mask relevant Pins [/c] Hoffe das war einigermaßen verständlich... VG Jan Oder kann ich schreiben [c]START_PIN_POS = ln(GPIO_Pin_10)/ln(2)[/c] und
. > #define MASK ( ( (1 << NUM_PINS) - 1) << START_PIN) > uint16_t Input = (GPIO_ReadInputData(PORT) & MASK) >> START_PIN; // > read port and mask relevant Pins > Hoffe das war einigermaßen verständlich... Nö. das war zumindest für mich völlig unverständlich. Also: Pins kannst du nicht
-
Thread
5 Zeiten mit ICP messen -> Problem mit den Timerwerten (ATmega8 und C)
nicht meckern, der Code ist noch nicht sauber formatiert und dokumentiert... [code] #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 3686400 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE
So, anbei nun mein kompletter Code: [c] #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 3686400 #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE
-
Thread
Reziproker Frequenzzähler+ Optimierte 64bit uint Routinen
TBB512AG 1:64/ 1:65 Man könnte den Teilungsfaktor über eine Spannungsbereich 0 - 5V an einem ADC Port nach dem Reset einlesen. z.B.: die Faktoren 1, 2, 4, 8, 10, 16, 32, 64, 100, 128, 144, 256, 272 Die Spannungsbereich wären dann U_bereich = 5V / (N+1) 'breit'. Mit N=13 dann U_bereich = 0,3571V
gelötet und mit einem ATmega48-20 mit 20Mhz SMD Quarz bestückt. Entgegen meinem Schaltplan ist ein AVR ISP-10 Pol Stecker montiert, da mein usbasp auch damit ausgestattet ist. Zur LED; die ist doch nun an Port B Pin 0 an zuschließen ? [c]// main.c #define LED_PORT PORTB #define LED_DDR DDRB
-
Thread
Gibt es einfach zu handhabende "große" Rams (16/32MB?)
Beim einem AVR kann man externes SRAM direkt anschliessen.
MW wieder am µC. Audiocodec wie gehabt am SPI (PortB) Mirko
-
Thread
24 Bit über Pin auslesen Takt/Daten ohne Interrupt
Da sich das Signal aber auch an der fallenden Flanke ändert, muß man dann aber vor der Flanke einlesen. > Das Erste 24 Bit Paket kann man > ignorieren. Und wie erkennt man das erste Paket? Peter
sind bei low stabil. Also erst etwa 80µs high abwarten und dann 24 mal nach der fallenden Flanke einlesen. Peter
-
Thread
Mikrocontrollerprogrammierung von Atmel µCs
Martin, auch nen guten Morgen. Hier gibt es ein Tutorial für AVRs und Assembler: http://www.avr-asm-tutorial.net/avr_de/index.html Die Befehle sind alle erklärt. Schau dort mal in die unterschiedlichen Bereich ;) avr
ich bin Anfänger was die Programmierung von Mikrocontrollern angeht. Ich möchte über den Taster-Port (PORT A) Informationen einlesen, die PORTB wieder ausgibt. #include <avr/io.h> int main(void) { //---Initialisierung--- DDRB=0xFF; // PORTB wird als Ausgang
-
Thread
GPS Standpunkt einmal pro Tag bestimmen
port is used for communicating with AVR Studio. The other RS-232 can be used for communicating between the target AVR microcontroller in the socket and a PC serial port connected to the RS-232. To use the RS-232, the UART pins of the AVR need to be physically onnected to the RS-232. The 2-pin header marked “RS232 SPARE” can be used for connecting the RS-232 converter to the UART pins on the target AVR microcontroller in the socket
-
Thread
Einsteigerproblem mit ATTINY2313
bisher nur Erfahrung mit einem 8051-Clon und wollte mich an die Atmel-Controller wagen Ich habe im AVR Studio folgendes kleines Programm geschrieben: [avrasm] .include "tn2313def.inc" ldi r16, 0xFF out DDRB, r16 ; Port B als Ausgang festlegen ldi r16, 0x00 out DDRD, r16 ; Port D als Eingang festlegen loop: in r16, PORTD ; Port D einlesen nop out PORTB, r16 ; und wieder auf Port B ausgeben rjmp loop [/avrasm] Damit wollte ich nur einen Taster auslesen und an die LED wieder ausgeben. Das Programm
-
Thread
PIC-I/O als input/tristate für weiteren output nutzen
Wenn der IO-Port einen statischen Pegel haben soll (also kein Bitmuster), dann kann er zu jedem Zustand nur einen haben: 5V (oder was auch immer) bei HIGH 0V bei LOW xV bei Tristate Die ON Schaltschwelle
nicht in Assembler programmieren, das ist Quälerei pur. Ich benutze AVRs und programmiere sie in C (AVR-GCC).
-
Thread
"cpi" Befehl funktioniert am Simulator aber live nicht
GPIOR2 = 0x2b Das ist die IO-Adresse. Also produziert ein lds/sts auf GPIOR2 einen Zugriff auf PortD (IO-Adresse $2B) Verständlich? MfG Spess
Hilfe bzw Vorschläge für Änderungen. Einen ganzen Port zu vergleichen ist sicher nicht gut, wie du schreibst, aber es ist mein Startprojekt, und da genügend Hardware vorhanden ist, wollte ich mich noch nicht mit den einzelen Pins beim einlesen herumschlagen
-
Thread
Open source Autoradio
. effektiv steht einem nicht mehr RAM zur Verfügung als bei einem beliebigen anderen CortexM3 oder AVR32 mit internem 512kB Flash und 64..128k internem RAM. Andererseits kann man für CortexM3, ARM7/9/11 und AVR32 den OpenOCD, Eclipse und (AVR)GCC verwenden, die Windowser nutzen eben Yagarto. Der OpenOCD-USB
AVR die mag ich ned früher gabs mal die geilen AVR32 mit 150MHz + aber heut nimmer deswegen eher ARM9.
-
Thread
Problem MCP23S17 und avr-gcc
_ #define SPI_H_ #include <avr/io.h> #define SPI_DDR DDRA #define SPI_PORT PORTA #define SPI_SCK 4 #define SPI_MISO 5 #define SPI_MOSI 6 #define SPI_SS 7 void spi_init(void); uint8_t spi_transfer(uint8_t
MCP_GPIOA, i+4, 1); else mcp_write_bit(0, MCP_GPIOA, i+4, 0); } // Gesamten Port einlesen, Port aendern und einmal senden (besser)! // 30µs uint8_t recData = mcp_read_byte(0, MCP_GPIOA); recData = recData | (recData<<4); mcp_write_byte(0, MCP_GPIOA, recData);