-
Thread
Wahl der richtigen µC-Familie Gesperrt
Benutzung einzelner Portpins (nicht alle sind für hohe Geschwindigk, fast keine zusammenhängende 8-bit-Ports (das bei AVR viel besser). Fast kein DIL (für manche ja relevant), rel. wenige Typen. >MSP430 sind Süß=) viele Adr.arten, aber (zu) langsam.
einfacher als AVR (vor allem Timer/PWM), Assembler sowieso einfacher.
-
Thread
Probleme Kommunikation mit COM-Port
bin dabei mir ein kleines Progamm schreiben, um mit dem PC über die serielle Schnittstelle mit einem AVR zu kommunizieren. Programmiersprache C++, Verwendeter Compiler Microsoft Visual C++ 4.2 (ich weiß, ziemlich alt). Betriebssystem Windows 7. Die Verbindung mit dem COM3-Port wird NON-OVERLAPPED
Natürlich, wenn du das genau so programmieren willst. In .Net kannst du aber der SerialPort Klasse ein Event werfen lassen, wenn Daten eintrudeln. Dort musst du dich dann nicht endlos drin aufhalten, sondern kannst die Daten einlesen, verarbeiten und die Methode dann wieder verlassen.
-
Thread
3x4 Matrix-Tastatur - wichtige Fragen
Nimm das hier: http://www.fritzler-avr.de/HP/Librarys/tastenplex_his.php
Martin Wende schrieb im Beitrag #3706359: > Nimm das hier: > http://www.fritzler-avr.de/HP/Librarys/tastenplex_his.php Vergessen zu sagen: Ich programmiere (leider) in assembler
-
Thread
Danneggers Entprellroutine im AVR benutzen
beim Anfänger zur Verwirrung führen, da er nicht weiß, welche Arduino-Nummer mit welchem Portpin des AVR korrespondiert.
Sobald im Ausgabefenster der COM-Portscan startet: [c] Forcing reset using 1200bps open/close on port COM15 PORTS {COM10, COM15, } / {COM10, COM15, } => {} PORTS {COM10, COM15, } / {COM10, COM15, } => {} PORTS {COM10, COM15, } / {COM10, COM15, } => {} [/c] Macht man dann den Reset, klappt es auch
-
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
Mikrocontroller und Komponenten -> evtl. für Serienproduktion
ein Projekt für die Uni. Es soll ein System entwickelt werden, welches - 1-2 digitale Signale einlesen soll (DI) - Ein externes Gerät mittels eines analogen Signals (0-10V, 20mA) schalten soll (AO) - Eine analogen Wert 0-5V einlesen kann (AI) - ein LCD Display ansteuern soll (3-4 Zeilen) - Messdaten
dem PC in den uC, schliesslich haben die wenigsten PC noch einen brauchbaren parallel oder seriell Port.
-
Thread
Problem mit einfacher 3x3 Schaltermatrix
das Ergebnis in Variable Input_1 ab. In Asembler in etwas so: [avrasm] Read_IO: In r16, PortD ORI r16, 0b00011100 ; Alle Reihen auf "1" ANDI r16, 0b11111011 ; selektiere Reihe 1 OUT PortD, r16 In r16, PortD ; Eingänge lesen COM r16 ANDI r16, 0b11100000
bits 0 bis 2 schieben STS Input_2, r16 ; und in Variable Input_2 ablegen In r16, PortD ORI r16, 0b00011100 ; Alle Reihen auf "1" ANDI r16, 0b11101111 ; selektiere Reihe 3 OUT PortD, r16 In r16, PortD ; Eingänge lesen COM r16 ANDI r16, 0b11100000
-
Thread
Digitales Codeschloss
Hier ein Bild. Die Tastatur ist an Port P2.0 bis P2.6 angeschlossen. Von den jeweiligen Steckern geht eine Brücke an P1.0 bis P1.6.
nutzlos. Du mußt schon den Schaltplan zeigen. Welchen Grund gibt es, die Tasten nicht an einen Port zu hängen?
-
Thread
Welchen I2C Bus-Controller für C++
(Com&LPT). Diese Port Adresse(Nummer) verwendest Du dann in Deinem Windows Programm um auf das Arduino Board zuzugreifen. Das Programm auf dem Arduino (C,Bascom,LunaAVR) fragt dann in einer Schleife den Sensor ab und schickt
/Modulen schon froh sein. Im übrigen programmiere ich meine Hobby Projekte mit Delphi 7 und LunaAVR weil mir das am leichtesten von der Hand geht. Hier ein Luna Beispiel für den Arduino, es sendet fortlaufend ein "Hallo" an den PC: avr.device = atmega328p avr.clock = 16000000 avr.stack = 100
-
Thread
Taster Entprellen [Interrupt]
geschrieben, oder kopiert und nicht verstanden. Was nun? Ließ doch mal hier das Tutorial zum Einlesen von Tasten.
verbraucht. Schüler E. schrieb im Beitrag #3684672: > Könnte mir jemand eine gute Seite empfehlen [[AVR-GCC-Tutorial]]
-
Thread
Pollin Microcontrollerboard AVR NET IO
Hallo zusammen, Ich besitze das Pollin Microcontrollerboard AVR NET IO was sehr gut ist. kann mir jemand sagen woher ich den Programmcode bekomme? Ich würde mich gerne einlesen und eventuell kleinere Änderungen vornehmen bzw. für meine Bedürfnisse anpassen und
kannst aber z.B. Ulrich Radigs Websever aufspielen: http://www.ulrichradig.de/home/index.php/software/avr-webserver-software Es gibt noch diverse andere alternative Systeme für den Net-IO
-
Thread
Assembler Tasterschaltung mit Arduino
Richtungsregister DDRB als Eingang konfigurieren loop: in r16, PINB ; an Port B anliegende Werte (Taster) nach r16 einlesen out PORTD, r16 ; Inhalt von r16 an Port D ausgeben rjmp loop ; Sprung zu "loop:" -> Endlosschleife[/avrasm] Es funktioniert
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
-
Thread
Bits seriell einlesen und in Variable speichern.
verheimlichen. Ich steh gerade vor einem Problem. Und zwar möchte ich Bits die seriell an einem Port meines Atmega32 einlesen und diese in einer Integervariable speichern. Das Bitmuster ist 8Bit lang. Z.B 11010110 und jedes Bit liegt etwa 500ms am Pin des Controllers an. Die Zeit ist noch nicht festgelegt
soll? (Will sagen: Woher weiß das Programm, wann es mit dem Einlesen beginnen soll?) Vielleicht machst Du ja erst noch einige Programmierübungen am heimischen PC, bevor Du auf eine MC gehst. Bei Letzterem hast neben dem sicheren beherrschen der Sprachmittel noch
-
Thread
I2CLCD Library für HD44780 LCDs
genutzt. Soweit ich weiß kann AVR-Studio 6 auch die alten Projekte vom AVR Studio 4 lesen und nutzen, oder? > und deine datein >eingefügt. > Anschliessend die änderungen durchgeführt. Gut. > Mein Prg habe ich >so gelassen
Was müsste man anpassen, wenn man anstelle dem PCF8574 einen mcp23008 als PORT Expander verwendet?
-
Thread
Kamera OV7670 an Arduino (3,3V auf D[0..7]-Leitungen)
dich so verstanden, dass der F4 für die Auswertung eines OV7670 besser geeignet sein soll als ein AVR oder ein M3. Sowohl der AVR wie auch der normale M3 können Daten per DMA auf ein TFT schreiben, weil der Datenfluss auf das TFT praktisch ungesteuert verläuft. Man schreibt nur viele Bytes hintereinander
Speichermedium sd-karte verwaltet werden muss. Wo ist denn dann der Vorteil von deinem F4 gegenüber einem AVR oder einem Cortex-M3?
-
Thread
Microcontroller Codeschloss - Elektrischer Safe
) conditions, I OL must be externally limited as follows: Maximum I OL per port pin: 10 mA Maximum I OL per 8-bit port: Port 0: 26 mA; Ports 1, 2, 3: 15 mA Maximum total I OL for all output pins: 71 mA If I OL exceeds the test condition, V OL may exceed the related specification
und was sie > sendet? Ich mache es meistens so, dass ich alle 10 Millisekunden die Tastatur einlese um zu sehen ob sich was tut...
-
Thread
Mein erster Schaltplan. Kritiken (konstruktiv) sind ausdrücklich erwünscht.
3Leitungen realisieren - Ohne Schieberegister. Oder 8 Eingänge mit einem 8zu1 Multiplexer HC151 einlesen, braucht auch nur 4 Port-Pins aber ohne Takterei. Warum Pulldown am Button-Port? rgds
Denke ich auch. 6A66 schrieb im Beitrag #3645284: > Eingänge mit einem 8zu1 Multiplexer HC151 einlesen, braucht auch nur 4 > Port-Pins aber ohne Takterei. kenne noch nicht viele ICs 6A66 schrieb im Beitrag #3645284: > Warum Shift-Register? (!Schreibweise) ;) 6A66 schrieb im Beitrag #3645284
-
Thread
JTAG-Fuse im AS6-Simulator disablen
Hallo, ich habe das Problem, dass ich beim ATMEGA644 von Port C einlesen möchte und das Programm im Simulator debuggen. Allerdings ist beim Simulator das JTAG-Interface eingestellt, daher kann ich die mittleren 4 Bit nicht korrekt einlesen. Bei AVR-Studio 4 kann das gleiche Problem auftreten, nur kann dort über DEBUG->AVR Simulator 2 Options ein Häkchen für die diversen Fuses wie JTAGEN gesetzt werden. Hat schon jemand das gleiche Problem gehabt, und eine Lösung gefunden? (Das oben angeführte Programm dient AUSSCHLIESZLICH
-
Thread
Wer verwendet RFM69?
funktioniert Software SPI nicht. So funktioniert es: for (uint8_t i = 8; i; i--) { SCK_PORT &= ~(1 << SCK); if (spibyte & 0x80) { SDI_PORT |= (1 << SDI); } else { SDI_PORT &= ~(1 << SDI); } spibyte <<= 1; SCK_PORT |= (1 << SCK); if (SDO_PIN
bekämpfst damit das Symptom, aber nicht die Ursache. > Aber es ist doch richtig das Miso ---> an PortB.7 aka Miso kommt. > Und Mosi kommt an ---> PortB.6 aka Mosi. > Sck kommt wie auch sonst an SCK. An welchem Port was angeschlossen ist, spielt keine Rolle. Wichtig ist, dass die Verbindungen korrekt
-
Thread
Binär Uhr Selbst Bauen
Beschaltung) ein (liegt an PB0 an) Einen Takt kann man mit einem externen Interrupt oder einem Timer einlesen. Man könnte auch einfach die 4,194304MHz oder einen anderen Quarz direkt als CPU-Takt anschließen. Der AVR hat die Hucke voll mit Timern, die das runter teilen können. Lars S. schrieb im Beitrag
Ich habe mal eine andere Frage: Ich nutze PORTB,1 als Eingang, in der Simulation beim AVR-Studio 4 funktioniert das auch. Aber in der Schaltung klappt es nicht. Ich habe auch schon nachgeschaut es liegt auch ein High-Signal an dem Port an (4,93V). Kann es sein, dass ich den irgendwie von
-
Thread
Suche Mikrochip für serielles Bit-Timing
wie gesagt, mit dem SPI Modul und AVR geht es auch.
der RPI hat meines Wissens auch ein DMA auf einen IO-Port dort sollte man auch ein genaues Timing hinbekommen.
-
Thread
Bootloader flasht schlampig - Code zerbröselt nach 3 Wochen
enabled. Oh Mann - das wird aber auch Zeit. Zitat aus dem Link den ich gepostet habe: "Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can be done by enabling the internal Brown-out Detector (BOD)."
Und wie viele µs vergehen zwischen pullup ein und Port auslesen?
-
Thread
USB Audio Device AVR32
bewerkstelligen. Von Cypress gibt es da gute Lösungen, http://www.cypress.com/?id=193. Oder _muss_ der AVR32 unbedingt die USB Schnittstelle darstellen?
Nein, der AVR32 muss nicht unbedingt die USB Schnittstelle darstellen. Um es mal ganz banal zu formulieren: das Ziel ist es, dass der Anwender des Winkelmessgeräts ein USB-Kabel in sein PC steckt und dann am PC in
-
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
Midi_Orgel_Schieberegister
// 1 MHz #define BAUD 31250 // MIDI-Baudrate (31,25kBit) #include <avr/io.h> #include <util/setbaud.h> #define NR_SR 2 // Schieberegister MC14021 #define SR_DDR DDRB #define SR_PORT PORTB #define SR_PIN PINB #define SR_PS PB0 #define SR_C PB1
Zustand jeder Taste merken und der µC dann die jeweiligen Zustände im Gänsemarsch an lediglich 3 Pins einlesen kann.
-
Thread
ATiny im sleep mode durch eine von zwei Tasten aufwecken
Hallo, Zu deinen Fragen: 1) Das was und wie steht in Dein Datenblatt deines AVR µC. Dort steht in einer Tabelle welcher Interrupt welchen Mode wieder "aufwachen" lässt. Ok ? Das wissen wir leider nicht. 2) Nach dem Aufwachen und sperren der Tasterinterrupts, wird in der
suchst sind u.a. powerdown mode und pin change interrupt. Was du vor hast ist mithilfe des GCC-AVR tutorials ( interrupt und sleepmodes) und des datenblattes in 10-15 Zeilen code zu bewerkstelligen
-
Thread
Verzögerte Schaltung
je naach Belieben muß man nur den Port ändern : #include <avr/io.h> #define F_CPU 1000000 #include <util/delay.h> int main (void){ DDRC=0b00000111; _delay_ms(500); PORTC = 0b11111110; _delay_ms(500); PORTC = 0b11111100; _delay_ms
allerdings immer noch drin. [c] #ifndef F_CPU #error F_CPU not defined. #endif #include <avr/io.h> #include <util\delay.h> #include <avr/interrupt.h> volatile unsigned char nAdc = 255; void InitAdc(void) { ADMUX |= (1 << ADLAR) | (1 << MUX1); ADCSRA |= (1 << ADEN) | (1 << ADATE
-
Thread
mit eingänge rechnen
soll es gehn link bitte, sonst glaub ich das nicht. Der Code ist auch wenn er nicht für den AVR sein soll, einfach nur Müll.
[c] #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> char wist, wsoll, dir; int main() { DDRA = 0x00; PORTA &= ~((1<<PA0) | (1<<PA1) | (1<<PA2) | (1<<PA3)); //habs auch ohne probiert
-
Thread
eigentümliches Verhalten eines Übungsprog. in Asm.
Assembler ; Datum : 09.11.2007 ; Version : 1.0 ; Autor : Renaldo Badke ; Programmer : ; Port : ;---------------------------------------------------------------------- .equ F_CPU, 1000000 .include "avr.h" ;----------------------------------------------------------------------- ;Reset
Hängt an Port C überhaupt eine LED? ;) Also die an Port B leuchtet ganz sicher und logisch nur "halb".
-
Thread
Kleine Spannungen mit dem ATMEGA8 messen und anzeigen
30-150 mV messen. Dabei soll mir der Atmega8 helfen, die zu verwirklichen. Ich habe mir nun das myAVR board MK2 mit der passenden LCD Anzeige gekauft und mit BASCOM versucht, dies zu realisieren. Dabei bin ich nun fürchterlich auf die Nase gefallen. Ich habe das zwar ein Programm gefunden, welches evtl
Neuling wie ich viel damit anfangen kann. Ich habe mal das Listing angehangen. Ich denke, dass es der Port C0 ist.
-
Thread
Z180-Stamp Modul
SIO und CTC bestückt, um der Z180-Stamp möglichst nahe zu kommen. ;) Takt kommt von einem der freien AVR-Ports, da man CLKO für die 4MHz CPU natürlich nicht nehmen kann. 2 CTC Kanäle erzeugen den Takt für die seriellen Schnittstellen. Der Input für diese Kanäle kann auch von AVR-Port geliefert werden.
Steckverbinder ? Wenn Platz für den Stecker vorhanden ist, warum nicht? > Weitere Wünsche ? Ein AVR-Port auf WAIT? Der Monitor könnte dann den Z80-Bus einlesen und auswerten (Singlestep für Arme). Für Siglestep bei voller Geschwindigkeit ;) müßte man aber WAIT mit MREQ und/oder M1 synchronisieren,
-
Thread
DS1820 Beispielprogramm in C für EasyAVR5 Board
Aha. Wie funktioniert denn das wohl bei AVR Studio 4.19 ?
anderen Pin versucht. Gleiches Ergebnis. Aber vielleicht das hier ? : c:\program files (x86)\atmel\avr tools\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h:89:3: warning: #warning "F_CPU not defined for <util/delay.h>" ../ow.c: In function 'ow_rd_rom': ../ow.c:110:15: warning
-
Thread
Sinvoller Codeaufbau?
NOP SEI ;Interrupts erlauben MAIN: NOP ;Teile der MAIN loop: ;Warten das an Port D 0xAA IN R16, PIND CPI R16, 0xAA BRNE loop NOP ;noch mehr MAIN RJMP MAIN OC1Aaddr: SEI RCALL BlinkR RET BlinkR: NOP ;Lange BlinkRoutine NOP NOP
hilft dir das Tutorial hier etwas weiter. Sonst gibt es noch einé kleine Anleitung in ÀVR-Praxis-Forum unter der Rubrik "FAQ" im Beitrag "Keine Angst vor Assembler". Das steht dann auch drin, wie das mit den Ereignissen gemeint ist. Gruß oldmax
-
Thread
Versetzte Rechtecksignale auswerten, kein drehgeber
Taktzyklen pro Auswertezyklus und Drehgeber. Natürlich kann man kann man ein paar Dinge (bspw. das Einlesen und einen Teil der Bitmanipulation) für alle 4 Drehgeber parallel machen, wenn sie alle am gleichen 8-Bit-Port angeschlossen sind. Aber das Zählen und die Entscheidung, in welche Richtung gezählt
– Code für einen einzelnen Drehgeber mit einer Abtastperiode von 9 Takten: [avrasm] #include <avr/io.h> ; port connections ; ; PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 ; | | | | | | | | ; B A ; register assignments counter = 0 encbits = 1 diff
-
Thread
C Programm für Drehimpulsgeber funktioniert nicht
Hallo, in der Timer-ISR toggelst du PortD (geht das überhaupt mit einem kompletten Port?) aber in der main spielst du ebenso an PortD herum. Damit kriegst du keine ordentliche Messung hin - lass einen anderen Ausgangspin auf einem anderen Port, als Debug-Pin toggeln.
-
Thread
Fehler im Unterprogramm - Verständnisfrage (Taster entprellen)
c] // *************INCLUDE *************** #include "Include.h" #include "globals.h" #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdint.h> #include <avr/eeprom.h> // Prototypen uint8_t Taster_einlesen(void); void Taster_entprellen(void); int main(void
GlobalWertTaster = 0; // IO-Einstellen IO_DDR |= (1<<LED_Obergrenze) | (1<<LED_Untergrenze); IO_PORT |= (1<<TASTER_Obergrenze) | (1<<TASTER_Untergrenze); //endlos while(1) { uint8_t Taster_Status = Taster_einlesen(); if(Taster_Status == 1) IO_PORT ^= (1<<LED_Untergrenze);
-
Thread
Was bedeutet oop?
. Verführung? Representativ? [c] // offizieller AVR C Standard /////////////////////////////////////// if (!(PIND&(1<<PD2))) PORTB&=~(1<<PB7); // das Gleiche mit myAVR C++ //////////////////////////////////////// if ( pinD.bit2 == 0 ) portB.bit7 = 0; // und mit Klassen aus dem myAVR C++ Framework ////////////////////// if ( button.isPressed() ) led.off(); [/c]
-
Thread
If-Abfrage in ISR
Ich denke mal, es handelt sich hier um einen AVR?! Wenn dem so ist, dann musst du (laut Datenblatt!) vor dem Einlesen eines Pins ein NOP() einfuegen! z.B. Datenblatt des Mega2560, Kapitel 13.2.4 Reading the Pin Value, Seite 72 "Independent of
Kaj schrieb im Beitrag #3581222: > Ich denke mal, es handelt sich hier um einen AVR?! Wenn dem so ist, dann > musst du (laut Datenblatt!) vor dem Einlesen eines Pins ein NOP() > einfuegen! nein! Bitte richtig lese! Nur wenn man die Datenrichtung ändert und dann liest.
-
Thread
Arduino CAN-Bus Problem
Warte 5 Sekunden damit auch hochgeladen werden kann, // wenn die vorherige Iteration den Serial Port zuspammt delay(5000); } void loop() { for (int c=0; c<3; c++) { rmvalue[c] = analogRead(rmpin[c]); } for (int c=0; c<3; c++) { if (rmvalue[c] < 100 && rmstatus
Danke Für die vielen und schnellen Antworten. Ich werd mich somit nochmals in das Datenblatt einlesen und die MCP_CAN Library anschauen. Gruss Chasperli
-
Thread
Mikrocontroller Rechenleistung reicht für aktuelles Projekt nicht?
Mike schrieb im Beitrag #3581146: > Um nochmal auf den AVR zurückzukommen: rechnet der überhaupt mit Double? Noe. Auf einem AVR sind float, double und long double alle 4 Byte breit.
Kaj schrieb im Beitrag #3581161: > Mike schrieb im Beitrag #3581146: >> Um nochmal auf den AVR zurückzukommen: rechnet der überhaupt mit Double? > Noe. Auf einem AVR sind float, double und long double alle 4 Byte breit. Der AVR macht da gar nix. Das macht wenn dann der Compiler. Und so wie
-
Thread
AVR32: Pointerübergabe überschreibt falsche Daten
Welchen Teil brauchst du? Hier ist mal die Portauslesefunktion. (Als Inline) Der ADC hängt an den Ports 0..7 und 11..18. (Danke Atmel für die Anordnung der Ports am Gehäuse!) [c] inline unsigned short adcExternGetPort () { int tmp = AVR32_GPIO.port[ADC_EXTERN_PORT].pvr; int tmph = (0xFF00 &
Hause: Beim Auslesen des ADCs speichere ich die Portbelegung jetzt direkt als unsigned int: adc0 = AVR32_GPIO.port[ADC_EXTERN_PORT].pvr; Das Einlesen funktioniert auch. Der Compiler liest die 8 Kanäle in jeweils ein Register. Nachdem alles ausgelesen wurde mache ich die Operationen: Pins 11..18